(转载)运行主机管理在openvswitch之上

时间:2021-03-20 06:42:06

  在这篇文章里介绍了如果运行主机管理在openvswitch之上,而不是单独配置一个物理网卡用于主机管理,并且所有的vm的流量还是通过openvswitch走的。

Running Host Management on Open vSwitch

Open vSwitch (OVS) brings lots of functionality to Linux virtualization hosts, including the ability to use Link Aggregation Control Protocol (LACP) for enhanced network interface card (NIC) failover and redundancy. In this post, I’m going to show you how to run a host management interface on a LACP bundle through OVS. This prevents you from having to give up a physical interface for host management, and allows you to run all traffic through OVS.

First, configure the LACP bundle as I describe in my post on link aggregation and LACP with OVS. You’ll want to ensure that the LACP configuration is working properly before you continue. Remember that you can use ovs-appctl bond/show <bond name> and ovs-appctl lacp/show <bond name> to help troubleshoot the LACP configuration and operation.

Next, create an “internal” interface that Linux will use as a Layer 3 interface. We’ll do this using ovs-vsctl, like this:

ovs-vsctl add-port ovsbr1 mgmt0 -- set interface mgmt0 type=internal

This command adds a port called mgmt0 to the specified bridge (ovsbr1 in this example), and then sets the interface associated with mgmt0 to the type “internal.” I don’t yet know why setting the type to internal is required, only that it’s necessary if you want the interface to be usable by Linux as a Layer 3 interface.

If you need the management traffic on a specific VLAN, then modify the command to specify a particular OVS fake bridge (more here on using fake bridges with VLANs):

ovs-vsctl add-port vlan100br mgmt0 -- set interface mgmt0 type=internal

You can also just assign the VLAN tag directly, although that configuration goes against the OVS port, not the OVS interface:

ovs-vsctl set port mgmt0 tag=100

Once the interface is created, then configure Linux to use that interface as a Layer 3 interface with an IP address assigned. On Ubuntu 12.04 LTS, that means adding a stanza to the /etc/network/interfaces configuration file, like this:

auto mgmt0
iface mgmt0 inet static
address 192.168.254.100
netmask 255.255.255.0
gateway 192.168.254.254
dns-nameservers 192.168.254.101

And that’s it! You can now use the IP address assigned to the mgmt0 interface (or whatever you named it) to manage the Linux virtualization host, all while knowing that you have a bonded LACP configuration protecting you against a network link failure. I’m using this configuration on all my Ubuntu-KVM hosts in my home lab; the physical interfaces are members of LACP bonds.

(Oh, one side note: on Ubuntu, this configuration causes a delay during the boot process. I don’t yet know why this delay occurs, or how to fix it. I’ll post something if I figure it out.)

If you have any questions or thoughts about this configuration, please feel free to speak up in the comments below—all courteous comments are welcome.