多网卡xen桥接

     2013年01月02日       teddy.sun       运维笔记->xen虚拟化       xen bridge 

总会遇到默认的一个xen桥接不满足需求的情况,比如以下的场景:
    |         +------------------------+        |
    |         |     +------------+     |        |
    |  eth0 +++  +--+  DomainU   +--+  +-+ eth1 |
    |       | |  |  +------------+  |  | |      |
    +-------+ +-+                  +--++ +------|
    |       | |                        | |      |
    |       +++                        +++      |
    |         |        Domain0         |        |
    |         +------------------------+        |
    |                                           |
Network 1                                 Network 2
我们的虚拟机希望和实体机一样有2个网卡,并且连接到相应的网络。
解决办法是通过修改相应配置产生相应的桥。针对以上的场景我们做以下实现:
1.创建桥接脚本
脚本位置/etc/xen/scripts/my-network-bridge,内容如下:
#!/bin/bash
/etc/xen/scripts/network-bridge "$@" vifnum=0 netdev=eth0 bridge=xenbr0
/etc/xen/scripts/network-bridge "$@" vifnum=1 netdev=eth1 bridge=xenbr1
加上可执行文件权限:
chmod +x /etc/xen/scripts/my-network-bridg

2.替换xen默认配置文件/etc/xen/xend-config.sxp中的桥接脚本
将(network-script network-bridge)替换为(network-script my-network-bridge)
sed -i 's/^(network-script network-bridge)/#(network-script network-bridge)\n(network-script my-network-bridge)/g' /etc/xen/xend-config.sxp

3.重启桥接网络
/etc/xen/scripts/network-bridge stop
/etc/xen/scripts/network-bridge start

4.完成后检查
执行brctl查看网桥,检查是否已经将eth0桥接到xenbr0,eth1桥接到xenbr1
brctl show bridge

5. 虚拟机的网卡配置
网卡配置项改成如下:
vif = [ "mac=00:16:3e:0d:f9:d3,bridge=xenbr0","mac=00:16:3e:0d:f9:dd,bridge=xenbr1" ]
网卡的mac地址请根据情况更改,重要的是bridge桥接配置,一个桥接到xenbr0,一个桥接到xenbr1

OK,完成!