设计KVM网络
Sun Microsystems的John Burdette Gage曾经说过,“网络就是计算机”,这是非常正确的。您可以拥有最好的存储解决方案以及最好的物理硬件,但如果没有快速网络,它们就毫无用处。大多数现代网络每个物理服务器至少有一个或多个10GB网络适配器。在使用KVM进行虚拟化时,每个网络接口应该具有10GB的最低容量。除此之外,网络拓扑层更重要。对于企业网络,不考虑具有扁平网络空间的问题。
Open vSwitch(http://openvswitch.org/)是一种流行的虚拟交换机,可以与KVM一起使用。使用Open vSwitch的优势在于它提供了灵活性,而KVM网络并不一定能提供这种灵活性。它以编程方式配置,并支持许多企业友好的功能。
KVM支持以下类型的网络,用于为VM分配IP地址:
- 网络地址转换(NAT)虚拟网络
- 桥接网络
- Peripherel组件互连(PCI)的物理设备分配
- 单根输入/输出虚拟化
您的虚拟机管理程序应该有多少个物理网卡?一种可能性是按如下方式划分网络接口:
- 两个处于故障转移模式的存储
- 两个用于管理KVM的故障转移模式
- 两个处于VM的故障转移模式
一个用于基于带外智能平台管理接口(IPMI)的访问
一个例子如图3-5所示。
网络地址解读
NAT通常与私有IP空间RFC 1918一起使用,即10.0.0.0/8,172.16.0.0/12和192.168.0.0/16。 默认情况下,KVM为VM选择192.168.122.0/24范围内的IP空间。 如果您决定使用NAT,并且您的虚拟机管理程序本身位于NAT网络上,那么您实际上是为VM访问启用双NAT,如图3-6所示。
桥接网络
在桥接网络模式下,VM与物理网络之间不进行NAT。 VM的行为就好像它是物理网络上的另一个节点。 如果物理管理程序位于NAT网络上,则VM共享同一网络。 这样做的优点是降低了整个网络管理的复杂性。 一个例子如图3-7所示。
清单3-11中包含了几个使用virsh网络命令的示例。
清单3-11。 KVM网络命令
# View defined networks. By default, KVM creates one network called “default.”# This is the 192.168.122.0/24 network.# virsh net-listName State Autostart Persistent--------------------------------------------------default active yes yes# Get information on a given network names.# Each network is given a unique UUID, and you can see that the default network is active.# virsh net-info defaultName defaultUUID f604318f-d3ad-45cb-8e27-d2519d79a3e9Active: yesPersistent: yesAutostart: yesBridge: virbr0
网络绑定
网络绑定允许两个接口处于主动/主动或主动/被动模式。 网络绑定的优点是它可以防止物理网络接口硬件故障。 清单3-12显示了网络绑定设置的方式。
清单3-12。 网络绑定示例
-bash-3.2$ cat /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0BOOTPROTO=noneONBOOT=yesIPADDR=10.1.1.2NETMASK=255.255.255.0BONDING_OPTS="mode=1 miimon=80 primary=slave"-bash-3.2$ cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=noneUSERCTL=noMASTER=bond0SLAVE=yesHWADDR=00:E0:81:C5:76:0A-bash-3.2$ cat /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1ONBOOT=yesBOOTPROTO=noneUSERCTL=noMASTER=bond0SLAVE=yesHWADDR=00:E0:81:C5:73:36-bash-3.2$ cat /etc/modprobe.confalias eth0 e1000ealias eth1 igbalias eth2 igbalias scsi_hostadapter ahcialias bond0 bondingoptions bond0 miimon=80 mode=1