暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

RedHat7 配置NIC绑定

原创 一个老兵 2024-05-14
775

RedHat7 配置NIC绑定

一、系统信息:

名称 参数
redhat 7.9
NIC p6p1、p6p2、p6p3、p6p4
模式 mode4(LACP静态绑定)

物理NIC网卡4块,通过bonding绑定一个逻辑网卡,绑定模式mode=4

二、Linux绑定模式有7种:

第一种模式:mod=0,即:(balance-rr) Round-robin policy(平衡抡循环策略) 特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传 输完毕),此模式提供负载平衡和容错能力。

第二种模式:mod=1,即: (active-backup) Active-backup policy(主-备份策略)
特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N。

第三种模式:mod=2,即:(balance-xor) XOR policy(平衡策略)
特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。
其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力。

第四种模式:mod=3,即:broadcast(广播策略) 特点:在每个slave接口上传输每个数据包,此模式提供了容错能力。

第五种模式:mod=4,即:(802.3ad) IEEE 802.3adDynamic link aggregation(IEEE 802.3ad 动态链接聚合)
特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
必要条件:
条件1:ethtool支持获取每个slave的速率和双工设定。
条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation。
条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式。

第六种模式:mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
该模式的必要条件:
ethtool支持获取每个slave的速率

第七种模式:mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)
特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance,
rlb),而且不需要任何switch(交换机)的支持。

注: ip地址配置在bond0上, 物理网卡不需要配置ip地址.

1、关闭和停止NetworkManager服务

RedHat7默认安装了NetworkManager,在配置前先关掉NetworkManager服务,否则可能会对bonding或造成问题。

stop NetworkManager.service **# 停止NetworkManager服务** systemctl disable NetworkManager.service **# 禁止开机启动NetworkManager服务**

2、加载bonding模块

modprobe --first-time bonding

没有提示说明加载成功, 如果出现modprobe: ERROR: could not insert ‘bonding’: Module already in kernel说明你已经加载了这个模块, 就不用管了

你也可以使用lsmod | grep bonding查看模块是否被加载

lsmod | grep bonding

bonding        152656 0 

3、创建基于bond0接口的配置文件

[root@ReHat7.6 network-scripts]# cat ifcfg-bond0
DEVICE=bond0
IPADDR=10.211.100.10
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
BONDING_OPTS="mode=4 miimon=200"

上面的BONDING_OPTS=“mode=4 miimon=200” 表示这里配置的工作模式是mode4, miimon表示监视网络链接的频度 (毫秒), 我们设置的是100毫秒, 根据你的需求也可以指定mode成其它的负载模式。

4、修改p6p1、p6p2、p6p3、p6p4子接口的配置文件

[root@ReHat7.9 ]# cat ifcfg-p6p1
NAME=p6p1
DEVICE=p6p1
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
UESCTL=noNM_CONTROLLED=no
[root@ReHat7.9 ]# cat ifcfg-p6p2
NAME=p6p2
DEVICE=p6p2
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
UESCTL=noNM_CONTROLLED=no
[root@ReHat7.6 ]# cat ifcfg-p6p3
NAME=p6p3
DEVICE=p6p3
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
UESCTL=noNM_CONTROLLED=no
[root@ReHat7.6 ]# cat ifcfg-p6p4
NAME=p6p4
DEVICE=p6p4
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
UESCTL=noNM_CONTROLLED=no

5、查看bonding信息

  • 重启网络服务
systemctl restart network
  • 查看bond0的接口状态信息 ( 如果报错说明没做成功,很有可能是bond0接口没起来)
[root@ReHat7.9 network-scripts]**# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)


Bonding Mode: fault-tolerance (active-backup)	// 绑定模式: 主备模式(mode 1)

Primary Slave: None

Currently Active Slave: p6p1		// 当前活动接口

MII Status: up						// 接口状态: up(MII是Media Independent Interface简称, 接口的意思)

MII Polling Interval (ms): 200		// 接口轮询的时间隔(这里是200ms)

Up Delay (ms): 0

Down Delay (ms): 0

 

Slave Interface: p6p2					// Slave 接口,也就是受bond管控的接口

MII Status: up							// 接口状态: up(MII是Media Independent Interface简称, 接口的意思)

Speed: 1000 Mbps             // 端口的速率是1000 Mpbs

Duplex: full							// 全双工

Link Failure Count: 0					// 链接失败次数: 0

Permanent HW addr: 74:46:a0:f4:9f:c2   // 永久的MAC地址

Slave queue ID: 0

 

Slave Interface: p6p1

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 74:46:a0:f4:9f:c3
Slave queue ID: 0
[root@ReHat7.9 ~]**# ip a
1: p6p1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000

  link/ether 74:46:a0:f4:9f:c2 brd ff:ff:ff:ff:ff:ff2: p6p1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000

  link/ether 74:46:a0:f4:9f:c2 brd ff:ff:ff:ff:ff:ff3: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

  link/ether 74:46:a0:f4:9f:c2 brd ff:ff:ff:ff:ff:ff

  inet 10.211.100.10/24 brd 10.211.139.255 scope global bond0

​    valid_lft forever preferred_lft forever

三、Bonding命令行管理工具 ifenslave

ifslave 可以绑定、分离和切换活动网卡,同样ifslave的使用需要内核支持bonding。

modprobe bonding    // 加载内核模块  

ifenslave bond0 eth0 eth1    // 绑定网卡

ifconfig bond0 192.168.0.1 netmask 255.255.0.0   // 配置IP

ifenslave -c bond0 eth1    // 切换活动网卡到eth1

ifenslave -d bond0 eth1   // 从bond0中移除eth1

高可用测试中(插拔网线)发现:在mode=6模式下丢包1个, 恢复网络时( 网络插回去 ) 丢包在5-6个左右,说明高可用功能正常但恢复的时候丢包会比较多
测试mode=1模式下丢包1个,恢复网络时( 网线插回去 ) 基本上没有丢包,说明高可用功能和恢复的时候都正常
mode6这种负载模式除了故障恢复的时候有丢包之外其它都挺好的,如果能够忽略这点的话可以这种模式;而mode1故障的切换和恢复都很快,基本没丢包和延时。但端口利用率比较低,因为这种主备的模式只有一张网卡在工作。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论