Linux系统下bonding配置方法
由于每次使用都需要搜索查找,所以就搞来一篇文章记录下,方便后续使用,顺便也琢磨了下各个bond模式的区别。接下来先简单介绍下七种工作模式,常用的模式有 0、1、4、6,每种工作模式都有其各自的优缺点:
一、bond工作模式:
1、mode=0(balance-rr):Round-robin policy(平衡轮询策略)
特点:传输数据包顺序是依次传输,比如第一个包走 eth0,第二个包走 eth1,直到数据包发送完毕。增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。
缺点:需要接入交换机做端口聚合。
2、mode=1(active-backup):Active-backup policy(主-备份策略)
特点:当一个宕掉另一个马上由备份转换为主设备。冗余性高,不需要交换机端支持。
缺点:资源利用率较低,只有一个接口处于工作状态。
3、mode=2(balance-xor):XOR policy(平衡策略)
特点:基于指定的传输 HASH 策略传输数据包。此模式提供负载平衡和容错能力。
缺点:需要交换机配置端口聚合。
4、mode=3(broadcast):broadcast(广播策略)
特点:在每个 slave 接口上传输每个数据包,此模式提供了容错能力。
5、802.3ad(mode=4):IEEE 802.3adDynamic link aggregation(IEEE 802.3ad 动态 链接聚合)
创建一个聚合组,它们共享同样的速率和双工设定。根据 802.3ad 规范将多个slave工作在同一个激活的聚合体下。
特点:
(1)ethtool支持获取每个slave的速率和双工设定。
(2)交换机支持IEEE 802.3ad Dynamic link aggregation。
(3)交换机需经过特定配置才能支持 802.3ad模式。
6、mode=5(balance-tlb):Adaptive transmit load balancing(适配器传输负载均衡)
特点:不需要任何特别的交换机支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
7、mode=6(balance-alb):Adaptive load balancing(适配器适应性负载均衡)
特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance,rlb),而且不需要任何交换机的支持。
二、配置举例
参考如下信息进行配置举例:
操作系统: Centos7网卡: ens1、ens2
bond1:192.168.0.100
负载模式: mode=1 #主备模式
1、关闭NetworkManager服务
[root@localhost ~]# systemctl stop NetworkManager #停止服务 [root@localhost ~]# systemctl disable NetworkManager #禁用服务
2、加载 bonding 模块
[root@localhost ~]# modprobe --first-time bonding
3、创建基于 bond1 接口的网卡配置文件
配置文件 ifcfg-bond1的内容如下:
DEVICE=bond1 TYPE=Bond BOOTPROTO=none ONBOOT=yes IPADDR=192.168.0.100 #根据自己的需求进行更换 GATEWAY=192.168.0.1 #根据自己的需求进行更换 DNS1=192.168.1.0 #根据自己的需求进行更换 PREFIX=24 #根据自己的需求进行更换,也可以替换为NETMASK=255.255.255.0 USERCTL=no BONDING_OPTS="mode=1 miimon=100 primary=ens2" #将ens2设置为主用网卡
BONDING_OPTS参数解释:
miimon参数:指定网卡故障时的切换时间间隔以ms为单位。
primary参数:指定默认的主网卡设备。
mode参数:指定工作模式
xmit_hash_policy参数:(此参数对mode参数中的2、4模式有影响):
layer1-通过MAC地址进行HASH计算。
layer3+4-通过TCP及UDP端口及其IP地址进行HASH计算。
如果使用mode4的方式配置bond4如下
vi /etc/sysconfig/network-scripts/ifcfg-bond4 IPADDR=192.168.0.100 #根据自己的需求进行更换 GATEWAY=192.168.0.1 #根据自己的需求进行更换 DNS1=192.168.1.0 #根据自己的需求进行更换 PREFIX=24 #根据自己的需求进行更换,也可以替换为NETMASK=255.255.255.0 ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=none USERCTL=no BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast xmit_hash_plicy=laye3+4" #其中mode=4说明该为bond4,且lacp_rate和xmit_hash_plicy参数只有bond4需要。 laye3+4:源目IP+源目端口算法,用于三、四层网络环境,可根据源目端口来区分同一源目IP不同连接的数据,做的四层负载分担。 laye2+3:源目MAC地址+源目IP算法,用于二、三层网络环境,用于三层转发情况下,源目mac地址唯一,源目IP地址不同情况。 fast:表示lacp链路协商模式为快模式,表示每隔1s发送l次lacpdu,超时时间是3s (slow模式是发送时间30s,超时时间90s)
4、修改 ens1、ens2接口文件的内容
修改ens1内容如下:
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# vi ifcfg-ens1 ###具体内容内容如下### DEVICE=ens1 MASTER=bond1 SLAVE=yes USERCTL=no ONBOOT=yes BOOTPROTO=none
修改ens2 内容如下:
[root@localhost network-scripts]# vi ifcfg-ens2 ###内容如下### DEVICE=ens2 MASTER=bond1 SLAVE=yes USERCTL=no ONBOOT=yes BOOTPROTO=none
5、加载 bond1 接口到内核
###(1)创建加载bonding的文件### [root@localhost network-scripts]# vi /etc/modprobe.d/bonding.conf ###内容如下### lias bond1 bonding options bonding mode=1 miimon=200 ###(2)加载模块(或重启系统)### [root@localhost network-scripts]# modprobe bonding libkmod: kmod_config_parse:/etc/modprobe.d/bonding.conf line 1: ignoring bad line starting with 'lias' ###(3)检查模块是否加载成功### [root@localhost network-scripts]# lsmod | grep bonding bonding 141566 0
6、重启网络,查看网卡绑定信息
[root@localhost network-scripts]# systemctl restart network [root@localhost network-scripts]# cat /proc/net/bonding/bond1 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2023) Bonding Mode: fault-tolerance (active-backup) # bonding模式为 active-backup(mode=1) Primary Slave: None Currently Active Slave: ens2 #网卡ens2为Active状态 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens2 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:00:00:00:00:01 Slave queue ID: 0 Slave Interface: ens1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:00:00:00:00:00 Slave queue ID: 0
测试了下最少代码条数:
vi /etc/sysconfig/network-scripts/ifcfg-bond1 ###内容### BOOTPROTO=static DEVICE=bond0 ONBOOT=yes IPADDR=192.168.0.100 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 BONDING_OPTS="mode=1 miimon=100" vi /etc/sysconfig/network-scripts/ifcfg-ens1 ###内容### DEVICE=ens1 ONBOOT=yes MASTER=bond0 SLAVE=yes vi /etc/sysconfig/network-scripts/ifcfg-ens2 ###内容### DEVICE=ens2 ONBOOT=yes MASTER=bond1 SLAVE=yes
声明:本文由云召博客收集发布,如有侵权,请联系我们,我们将第一时间进行处理。