XenServer的网卡绑定使用linux提供的绑定机制,而XenServer支持Linux的Source Level Bond(SLB)以及Active-Passive Nic Bond(A/P)两种绑定模式。
关于Linux支持的7中Bond模式,这里简单介绍下,网上找了找资料:
bond mode | bond mode name | bond description | remarks |
---|---|---|---|
0 | balance-rr (round-robin policy) | 轮询策略 | 依次轮流传输数据库,知道完毕,提供负载均衡和冗余功能 |
1 | active-backup (active-backup policy) | 主/备策略 | 只有一个网卡活动,当活动网卡宕掉以后,另外一块设备马上接管,MAC地址对交换机只有一个端口可见,避免了混乱,该模式提供冗余功能 |
2 | balance-xor (XOR policy) | 布尔异或策略 | 基于MAC地址与目的地址的异或来决定流量走哪块网卡,同一目的MAC会走相同的网卡,该模式提供负载均衡和冗余 |
3 | broadcast (Broadcast policy) | 广播策略 | 发送所有流量到所有网口,该模式提供冗余功能 |
4 | 802.3ad (IEEE 802.3ad Dynamic link aggregation) | 动态链接聚合策略 | 需要ethtool support和交换机对802.3ad的支持,建立相同速率和双工设置的聚合组 |
5 | balance-tlb (adaptive transmit load balancing) | 适配器传输负载平衡策略 | 发送流量基于网卡当前负载决定,主要基于相对速率的计算,入栈流量由当前网卡接收,如果失败,则另外一块网卡接管,提供冗余功能 |
6 | balance-alb (Adaptive load balancing) | 适配器负载平衡策略 | 在模式balance-tlb的基础上,对接收的负载进行计算并实现负载均衡 |
我们可以看到linux提供了多种绑定模式的支持,而XenServer的bond也是基于Linux的绑定功能,但是官方指出,只支持mode 6(Active/Active)与Mode 1(Active/Passive)两种模式,使用其他模式,可能不受官方技术支持,但是实际测试发现,XenServer的绑定也支持其他几种模式。(实测了mode=3)
通过设置pif的参数bond-mode来实现修改bonding的模式:
1 2 3 4 | #设置绑定模式为主/备模式 xe pif-param-set uuid=<bond pif uuid> other-config:bond-mode=active-backup #or xe pif-param-set uuid=<bond pif uuid> other-config:bond-mode=1 |
设置bond-mode=6则为XenServer默认的A/A负载均衡模式,也可以设置成其他模式。
注:修改完绑定模式以后,需要重启XenServer生效。
@froyo 请问,mode6下,交换机做不做端口聚合有关系么?
mode6其实还是属于Active-Slave模式,只是负载均衡的方式有些差别。所以,这个模式也不需要交换机起LACP。
在工程中,6.2的环境,mode6,两台网络交换机做堆叠,在xenserver上做4条链路的捆绑。
如果是mode6实质是Active-Slave模式,那我们的设计是多余的了,有两条链路分别连接两个交换机就够了吧
抱歉,Mode6是Active-Active模式,针对source level balance,如果有多条链路是可以扩展带宽的,不需要聚合。堆叠不影响。
但是这个扩展带宽,只能用于VM。原因是,如果有4条链路,不能像LACP一样,直接合并成一条,所以,一个链接只能同时使用一条。
对于有多个VM的场景比较合适。比如,4条链路,40个VM,这样,每个VM都可以根据负载选择不同的链路,充分利用4条链路带宽。
谢谢. @Froyo