Open vSwitch如果利用vlan将kvm或者docker-lxc虚机连接起来的话,设备多的话,就无法承受,尤其是openstack这种海量大规模虚机的环境。

所以,用vxlan来连接比较好,毕竟vxlan是可以支持到16百万虚拟2层网络的。

场景:两台实体机,都跑ovs,用vxlan互联,上面的交换机可以通联。

实体机1:host1 eth0: 123.123.123.1

实体机2:host2 eth0: 123.123.123.2

首先在host1和host2上分别建立网桥

ovs-vsctl add-br ovsbr0  

接下来用virt-install安装kvm的时候就可以指定ovs参数来安装:

virt-install ... -w bridge=ovsbr0,virtualport_type=openvswitch  

如果是用克隆或者机器来生产虚机的话,网络部分的xml应该如下:

<interface type='bridge'>  
    < source bridge='ovsbr0'/>
    < virtualport type='openvswitch'/>
</interface>  

在host1上增加到达host2的vxlan1,跟gre的用法差不多:

ovs-vsctl add-port br-private vxlan1 -- \  
  set Interface vxlan1 type=vxlan options:remote_ip=123.123.123.2

同样在host2上增加到达host1的vxlan1

ovs-vsctl add-port br-private vxlan1 -- \  
  set Interface vxlan1 type=vxlan options:remote_ip=123.123.123.1

注意:VXLAN用到了UDP端口4789,host1和host2如果有防火墙,必须打开这个端口。

ok,搞定,查看一下

# ovs-vsctl show
ac885d3d-b636-4bb1-a75e-37f361af87e3  
    Bridge ovsbr0
        Port "vxlan1"
            Interface "vxlan1"
                type: vxlan
                options: {remote_ip="123.123.123.2"}
        Port ovsbr0
            Interface ovsbr0
                type: internal
        Port vnet2
            Interface vnet2
    ovs_version: "2.3.2"

如果是更多台实体机,那么就得星型互相建立vxlan连接,跟gre一样的。

comments powered by Disqus