目录linux
CentOS7系统能够将多个网络接口绑定在一块儿,来做为单一的接口去给上层应用使用。算法
bong能够将多个网卡绑定到一块儿,可让两个或多个接口做为一个接口,同时提升带宽,并提供网络链路的冗余,当有其中一块网卡故障的时候,不会中断服务器的业务。shell
# 对于CentOS系统默认会加载bonding模块,咱们也可使用root用户手动加载模块** # 临时加载模块,重启失效。 modprobe --first-time bonding # 永久加载模块 modprobe bonding # 查看模块信息 modinfo bonding
b-1)、建立bond接口,在 /etc/sysconfig/network-scripts/ 目录中建立名为 ifcfg-bondN 的文
件,使用接口号码替换 N,好比 0vim
### 建立bond接口 # vim /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 //和文件名中的ifcfg-bond0中的bond0是一致的。 NAME=bond0 //设备名字,为了NetworkManage方便管理,和DEVICE保持一致 TYPE=Bond //TYPE要设置成Bond,表示该接口为bond接口 BONDING_MASTER=yes IPADDR=192.168.1.1 PREFIX=24 ONBOOT=yes BOOTPROTO=none BONDING_OPTS="mode=4 miion=100" //bond选项,引号里面的内容,须要配置,这里配置了以后,就不须要配置
b-2)、修改物理接口的配置文件服务器
### vim /etc/sysconfig/network-scripts/ifcfg-em1 DEVICE=em1 ONBOOT=yes HOTPLUG=no NM_CONTROLLED=no PEERDNS=no MASTER=bond0 // SLAVE=yes // BOOTPROTO=none
b-3)、验证、查看bond网络
### 查看bond0的绑定结果 [root@control1 network-scripts]# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: em1 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: em1 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: b8:ca:3a:6c:49:68 Slave queue ID: 0 Slave Interface: em2 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: b8:ca:3a:6c:49:6a Slave queue ID: 0
到这里,咱们的bond能够直接用了,若是想将bond绑定到ovs上面,能够看下面的步骤负载均衡
### 安装openvswitch yum install -y openvswitch systemctl enable openvswitch systemctl start openvswitch
b-1)、修改bond网卡工具
### # vim /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 ONBOOT=yes HOTPLUG=no NM_CONTROLLED=no PEERDNS=no DEVICETYPE=ovs TYPE=OVSPort OVS_BRIDGE=br-ex MACADDR="b8:ca:3a:6c:46:b0" BONDING_OPTS="mode=802.3ad miimon=100" MTU=9000
b-2)、建立br-ex,并定义br-ex为ovs虚拟网桥。code
### # vim /etc/sysconfig/network-scripts/ifcfg-br-ex DEVICE=br-ex ONBOOT=yes HOTPLUG=no NM_CONTROLLED=no DEVICETYPE=ovs TYPE=OVSBridge MTU=9000 OVS_EXTRA="set bridge br-ex fail_mode=standalone"
模式0(mode=0,round-robin):此模式使用轮询策略,即顺序的在每个被bond的网卡上发送数据包,这种模式提供负载均衡和容错能力。Bond0能够保证bond虚拟网卡和被bond的两张或多张物理网卡拥有相同的MAC地址,其中bond虚拟网卡的MAC地址是其中一张物理网卡的MAC地址,而bond虚拟网卡的MAC地址是根据bond本身实现的一个算法来选择的。
在bond0模式下,若是一个链接或者会话的数据包从不一样的网口发出,途中再通过不一样的链路,则在客户端颇有可能会出现数据包无序到达的现象,而无序到达的数据包通常须要从新发送,这样网络的吞吐量就会降低。同时,若是作bond0的两张或多张网卡接到了同一交换机上,还需对其配置聚合模式。blog
模式1(mode=1,active-backup):此模式使用主被策略(热备)。在全部作bond1的物理网卡中,同一时刻只有一张网卡被激活,当且仅当活动网卡失效时才会激活其余的网卡。这种模式下作bond的两张或多张网卡的MAC地址和Bond虚拟网卡的MAC地址相同,而Bond的MAC地址是Bond建立启动后活动网卡(Active Slave)的MAC地址。这种模式要求主被网卡能快速的切换,即当主网卡出现故障后能迅速地切换至备用网卡。切换过程当中,上层的应用几乎不受影响,由于Bond的驱动程序会临时接管上层应用的数据包,存放至数据缓冲区,等待备用网卡启动后再发送出去。可是若是切换时间过长,则会引发缓冲区的溢出,致使丢包。
模式2(mode=2,balance-xor):xor为异或运算(二进制位相异为1,相同为0)。此模式的默认选择策略是:
选择网卡的序号=(源MAC地址 XOR 目标MAC地址) % Slave网卡(从网卡)的数量。
其余的传输策略能够经过xmit_hash_policy配置项指定。
模式3(mode=3,broadcast):使用广播策略,数据包会被广播至全部Slave网卡进行传送。
模式4(mode=4,802.3ad):使用动态连接聚合策略,启动时会建立一个聚合组,全部Slave网卡共享一样的速率和双工设定。
必要条件:
1.支持使用ethtool工具获取每一个slave网卡的速率和双工设定;
2.须要交换机支持IEEE 802.3ad 动态链路聚合(Dynamic link aggregation)模式
模式5(mode=5,balance-tlbtransmitload balancing):基于每一个slave网卡的速率选择传输网卡。
必要条件:支持使用ethtool工具获取每一个slave网卡的速率。
模式6(mode=6,balance-alb,Adaptive load balancing):该模式包含了bond5模式,同时还支持对IPV4流量接收时的负载均衡策略(receive load balance, rlb),并且不须要任何交换机的支持。
必要条件:
配置bond 模式主要是为了和交换机作协商。通常交换机支持LACP链路聚合,交换机的LACP又分为静态和动态。下面是交换机的两种聚合方式介绍:
#################################### 1,静态: mode on,手动强制模式: 不发送也不接收LACP协商报文,交换机物理端口被强制捆绑到etherchannel,数据包根据聚合口负载均衡模式在多个物理口上传输。通常默认的为基于包的负载均衡,即在多个网口之间轮询发送数据包。使用这种聚合模式时,对端也必须是mode on,强制造成etherchannel。 ######################################## 2,动态: active,主动协商模式: 交换机聚合口主动发出LACPDU报文,与对端符合802.3ad规范的动态聚合口主动协商。 通常推荐使用主动模式。 passive,被动协商模式: 交换机聚合口只接收LACPDU报文,被动与对端符合802.3ad规范的动态聚合口进行协商。
问题:那么服务器的bond 和交换机的链路聚合是如何匹配的?