Linux网卡Bonding配置

Linux⽹卡Bonding配置
⼀、bonding技术
简介
 bonding(绑定)是⼀种将n个物理⽹卡在系统内部抽象(绑定)成⼀个逻辑⽹卡的技术,能够提升⽹络吞吐量、实现⽹络冗余、负载等功能,有很多优势。
 Linux 系统下⽀持⽹络 Bonding,也叫 channel Bonding,它允许你将 2 个或者更多的⽹卡绑定到⼀起,成为⼀个新的逻辑⽹卡,从⽽实现故障切换或者负载均衡的功能,具体情况要取决于 mode 参数的具体配置。
 Linux系统bonding技术是内核层⾯实现的,它是⼀个内核模块(驱动)。使⽤它需要系统有这个模块, 我们可以modinfo命令查看下这个模块的信息, ⼀般来说都⽀持.
modinfo bonding
bonding的七种⼯作模式
bonding技术提供了七种⼯作模式,在使⽤的时候需要指定⼀种,每种有各⾃的优缺点.
balance-rr (mode=0) 默认, 有⾼可⽤ (容错) 和负载均衡的功能, 需要交换机的配置,每块⽹卡轮询发包 (流量分发⽐较均衡).
active-backup (mode=1) 只有⾼可⽤ (容错) 功能, 不需要交换机配置, 这种模式只有⼀块⽹卡⼯作, 对外只有⼀个mac地址。缺点是端⼝利⽤率⽐较低balance-xor (mode=2) 不常⽤
broadcast (mode=3) 不常⽤
802.3ad (mode=4) IEEE 802.3ad 动态链路聚合,需要交换机配置,没⽤过
balance-tlb (mode=5) 不常⽤
balance-alb (mode=6) 有⾼可⽤ ( 容错 )和负载均衡的功能,不需要交换机配置 (流量分发到每个接⼝不是特别均衡)
详细说明请参考⽹络上其他资料,了解每种模式的特点根据⾃⼰的选择就⾏, ⼀般会⽤到0、1、4、6这⼏种模式。
⼆、RHEL6 下的 Boding 配置:
 在所有的 RHEL 版本下,⽬前都不⽀持在 NetworkManager 服务协作下实现 Bonding 配置.所以要么直接关闭 NetworkManager 服务,并取消其开机启动,要么在所有涉及 Bonding 的⽹卡配置⽂件中(包含ethx 或者 bondY),显式地添加⼀⾏:NM_CONTROLLED=no
 要配置⽹卡 Bonding,你必须在/etc/sysconfig/network-scripts/⽬录下建⽴逻辑⽹卡的配置⽂件 ifcfg-bondX,⼀般 X 从 0 开始,依次增加.具体的⽂件内容根据参与 Bonding 的⽹卡类型的不同⼜有所差别,以最最常见的 Ethernet 为例,配置⽂件⼤致是这样的:
DEVICE=bond0
IPADDR=192.168.0.1
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="bonding parameters separated by spaces"
NM_CONTROLLED=no
 BONDING_OPTS 这⼀⾏填写你需要的 Bonding 模式,⽐如 BONDING_OPTS="miimon=100 mode=1" ,
下⾯也会介绍⼏种常见的配置⽅式和它代表的意义,这⾥暂时不展开说明.为了⽅便称呼,我们把
韩绍功原型
Bongding 后的逻辑⽹卡 bondX 称为主⽹卡(Master),参与 Bonding 的物理⽹卡 ethY 称为⼦⽹卡(Slave).
 主⽹卡配置⽂件创建完毕以后,⼦⽹卡的配置⽂件也需要做相应的改变,主要是添加 MASTER=和
SLAVE=这两项参数,我们假设 2 张⼦⽹卡为 eth0 和 eth1,那么他们的配置⽂件⼤致的样⼦会是这样⼦:
DEVICE=ethX
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
NM_CONTROLLED=no
 像这样,分别修改 ifcfg-eth0 和 ifcfg-eth1 配置⽂件,DEVICE=ethX 中的 X ⽤相应的值代替.然后
我们重启⽹络服务.
service network restart
这样⼦,⼦⽹卡为 eth0 和 eth1,主⽹卡为 bond0,模式为 mode 1 的⽹络 Bonding 就完成了
rhel6 bonding 实例展⽰
系统: rhel6
霍夫曼树
⽹卡: eth2、eth3
bond0:10.200.100.90
负载模式: mode1(active-backup) # 这⾥的负载模式为1,也就是主备模式.
1、关闭和停⽌NetworkManager服务
service  NetworkManager stop
chkconfig NetworkManager off
ps: 如果有装的话关闭它,如果报错说明没有装这个,那就不⽤管
2、加载bonding模块
modprobe --first-time bonding
3、创建基于bond0接⼝的配置⽂件
[root@rhel6.6 network-scripts]# cat ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
IPADDR=10.200.100.90
NETMASK=255.255.255.0
ONBOOT=yes
NM_CONTROLLED=no
USERCTL=no
BONDING_OPTS="mode=1 miimon=200"
4、SLAVE⽹卡的配置⽂件
两种⼦⽹卡的配置⽂件如下
[root@rhel6.6 network-scripts]# cat ifcfg-eth2
平流层飞艇DEVICE=eth2
#HWADDR=14:58:D0:5A:0F:76
NM_CONTROLLED=no
#UUID=3b718bed-e8d4-4b64-afdb-455c8c3ccf91
ONBOOT=yes
#NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
湖北高职学校SLAVE=yes
USERCTL=no
[root@rhel6.6 network-scripts]# cat ifcfg-eth3
DEVICE=eth3
#HWADDR=14:58:D0:5A:0F:77
NM_CONTROLLED=no
#UUID=988835c2-8bfa-4788-9e8d-e898f68458f0
ONBOOT=yes
#NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
5、bonding信息查看
重启⽹络服务器后bonding⽣效
[root@rhel6.6 network-scripts]# ip a
4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
link/ether c4:34:6b:ac:5c:9e brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
link/infiniband a0:00:03:00:fe:80:00:00:00:00:00:00:00:02:c9:03:00:0a:6f:ba brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
10: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether c4:34:6b:ac:5c:9e brd ff:ff:ff:ff:ff:ff
inet 10.200.100.90/24 brd 10.212.225.255 scope global bond0
inet6 fe80::c634:6bff:feac:5c9e/64 scope link
valid_lft forever preferred_lft forever
[root@rhel6.6 network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Bonding Mode: fault-tolerance (active-backup)  # bond0接⼝采⽤mode1
Primary Slave: None
Currently Active Slave: eth2
MII Status: up
MII Polling Interval (ms): 200
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: c4:34:6b:ac:5c:9e
Slave queue ID: 0
Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: c4:34:6b:ac:5c:9f
Slave queue ID: 0
进⾏⾼可⽤测试,拔掉其中的⼀条⽹线看丢包和延时情况, 然后在插回⽹线(模拟故障恢复),再看丢包和延时的情况.
三、RedHat7配置bonding
系统: Red Hat Enterprise Linux Server release 7.6 (Maipo)
⽹卡: eno3、eno4
bonding:bond0
负载模式: mode1(active-backup)
服务器上两张物理⽹卡eno3和eno4, 通过绑定成⼀个逻辑⽹卡bond0,bonding模式选择mode1
注: ip地址配置在bond0上, 物理⽹卡不需要配置ip地址.
1、关闭和停⽌NetworkManager服务
RedHat7默认安装了NetworkManager,在配置前先关掉NetworkManager服务,否则可能会对bonding或造成问题。
systemctl 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=1 miimon=200"
上⾯的BONDING_OPTS="mode=1 miimon=200" 表⽰这⾥配置的⼯作模式是mode1, miimon表⽰监视⽹络链接的频度 (毫秒), 我们设置的是100毫秒, 根据你的需求也可以指定mode成其它的负载模式。
4、修改eno3、eno4⼦接⼝的配置⽂件
[root@ReHat7.6 ]# cat ifcfg-eno3
NAME=eno3
DEVICE=eno3
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
UESCTL=no
NM_CONTROLLED=no
[root@ReHat7.6 ]# cat ifcfg-eno4
NAME=eno4
DEVICE=eno4
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
UESCTL=no
NM_CONTROLLED=no
5、查看bonding信息
重启⽹络服务
systemctl restart network
查看bond0的接⼝状态信息 ( 如果报错说明没做成功,很有可能是bond0接⼝没起来)
[root@ReHat7.6 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: eno4  // 当前活动接⼝
MII Status: up      // 接⼝状态: up(MII是Media Independent Interface简称, 接⼝的意思)
MII Polling Interval (ms): 200    // 接⼝轮询的时间隔(这⾥是200ms)
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eno3    // 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: eno4
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.6 ~]# ip a
1: eno3: <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:ff
2: eno4: <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:ff
3: 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故障的切换和恢复都很快,基本没丢包和延时。但端⼝利⽤率⽐较低,因为这种主备的模式只有⼀张⽹卡在⼯作。

本文发布于:2024-09-25 08:31:42,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/231471.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:需要   配置   模式   功能   服务
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议