内容简介:Linux下网卡bonding配置
一、bonding技术
bonding(绑定)是一种 Linux 系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量、实现网络冗余、负载等功能,有很多优势。
bonding技术是Linux系统内核层面实现的,它是一个内核模块(驱动)。使用它需要系统有这个模块, 我们可以modinfo命令查看下这个模块的信息, 一般来说都支持.
# modinfo bonding filename: /lib/modules/2.6.32-642.1.1.el6.x86_64/kernel/drivers/net/bonding/bonding.ko author: Thomas Davis, tadavis@lbl.gov and many others description: Ethernet Channel Bonding Driver, v3.7.1 version: 3.7.1 license: GPL alias: rtnl-link-bond srcversion: F6C1815876DCB3094C27C71 depends: vermagic: 2.6.32-642.1.1.el6.x86_64 SMP mod_unload modversions parm: max_bonds:Max number of bonded devices (int) parm: tx_queues:Max number of transmit queues (default = 16) (int) parm: num_grat_arp:Number of peer notifications to send on failover event (alias of num_unsol_na) (int) parm: num_unsol_na:Number of peer notifications to send on failover event (alias of num_grat_arp) (int) parm: miimon:Link check interval in milliseconds (int) parm: updelay:Delay before considering link up, in milliseconds (int) parm: downdelay:Delay before considering link down, in milliseconds (int) parm: use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int) parm: mode:Mode of operation; 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp) parm: primary:Primary network device to use (charp) parm: primary_reselect:Reselect primary slave once it comes up; 0 for always (default), 1 for only if speed of primary is better, 2 for only on active slave failure (charp) parm: lacp_rate:LACPDU tx rate to request from 802.3ad partner; 0 for slow, 1 for fast (charp) parm: ad_select:803.ad aggregation selection logic; 0 for stable (default), 1 for bandwidth, 2 for count (charp) parm: min_links:Minimum number of available links before turning on carrier (int) parm: xmit_hash_policy:balance-xor and 802.3ad hashing method; 0 for layer 2 (default), 1 for layer 3+4, 2 for layer 2+3 (charp) parm: arp_interval:arp interval in milliseconds (int) parm: arp_ip_target:arp targets in n.n.n.n form (array of charp) parm: arp_validate:validate src/dst of ARP probes; 0 for none (default), 1 for active, 2 for backup, 3 for all (charp) parm: arp_all_targets:fail on any/all arp targets timeout; 0 for any (default), 1 for all (charp) parm: fail_over_mac:For active-backup, do not set all slaves to the same MAC; 0 for none (default), 1 for active, 2 for follow (charp) parm: all_slaves_active:Keep all frames received on an interface by setting active flag for all slaves; 0 for never (default), 1 for always. (int) parm: resend_igmp:Number of IGMP membership reports to send on link failure (int) parm: packets_per_slave:Packets to send per slave in balance-rr mode; 0 for a random slave, 1 packet per slave (default), >1 packets per slave. (int) parm: lp_interval:The number of seconds between instances where the bonding driver sends learning packets to each slaves peer switch. The default is 1. (uint)
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这几种模式。
二、CentOS7配置bonding
环境:
系统: Centos7 网卡: em1、em2 bond0:172.16.0.183 负载模式: mode6(adaptive load balancing)
服务器上两张物理网卡em1和em2, 通过绑定成一个逻辑网卡bond0,bonding模式选择mode6
注: ip地址配置在bond0上, 物理网卡不需要配置ip地址.
1、关闭和停止NetworkManager服务
systemctl stop NetworkManager.service # 停止NetworkManager服务 systemctl disable NetworkManager.service # 禁止开机启动NetworkManager服务
ps: 一定要关闭,不关会对做bonding有干扰
2、加载bonding模块
modprobe --first-time bonding
没有提示说明加载成功, 如果出现modprobe: ERROR: could not insert 'bonding': Module already in kernel说明你已经加载了这个模块, 就不用管了
你也可以使用lsmod | grep bonding查看模块是否被加载
lsmod | grep bonding bonding 136705 0
3、创建基于bond0接口的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-bond0
修改成如下,根据你的情况:
DEVICE=bond0 TYPE=Bond IPADDR=172.16.0.183 NETMASK=255.255.255.0 GATEWAY=172.16.0.1 DNS1=114.114.114.114 USERCTL=no BOOTPROTO=none ONBOOT=yes BONDING_MASTER=yes BONDING_OPTS="mode=6 miimon=100"
上面的BONDING_OPTS=" mode=6 miimon=100 " 表示 这里配置的工作模式是mode6(adaptive load balancing), miimon表示监视网络链接的频度 (毫秒), 我们设置的是100毫秒, 根据你的需求也可以指定mode成其它的负载模式。
4、修改em1接口的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-em1
修改成如下:
DEVICE=em1 USERCTL=no ONBOOT=yes MASTER=bond0 # 需要和上面的ifcfg-bond0配置文件中的DEVICE的值对应 SLAVE=yes BOOTPROTO=none
5、修改em2接口的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-em2
修改成如下:
DEVICE=em2 USERCTL=no ONBOOT=yes MASTER=bond0 # 需要和上的ifcfg-bond0配置文件中的DEVICE的值对应 SLAVE=yes BOOTPROTO=none
6、测试
重启网络服务
systemctl restart network
查看bond0的接口状态信息 ( 如果报错说明没做成功,很有可能是bond0接口没起来)
# cat /proc/net/bonding/bond0 Bonding Mode: adaptive load balancing // 绑定模式: 当前是ald模式(mode 6), 也就是高可用和负载均衡模式 Primary Slave: None Currently Active Slave: em1 MII Status: up // 接口状态: up(MII是Media Independent Interface简称, 接口的意思) MII Polling Interval (ms): 100 // 接口轮询的时间隔(这里是100ms) Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: em1 // 备接口: em0 MII Status: up // 接口状态: up(MII是Media Independent Interface简称, 接口的意思) Speed: 1000 Mbps // 端口的速率是1000 Mpbs Duplex: full // 全双工 Link Failure Count: 0 // 链接失败次数: 0 Permanent HW addr: 84:2b:2b:6a:76:d4 // 永久的MAC地址 Slave queue ID: 0 Slave Interface: em1 // 备接口: em1 MII Status: up // 接口状态: up(MII是Media Independent Interface简称, 接口的意思) Speed: 1000 Mbps Duplex: full // 全双工 Link Failure Count: 0 // 链接失败次数: 0 Permanent HW addr: 84:2b:2b:6a:76:d5 // 永久的MAC地址 Slave queue ID: 0
通过ifconfig命令查看下网络的接口信息
# ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 172.16.0.183 netmask 255.255.255.0 broadcast 172.16.0.255
inet6 fe80::862b:2bff:fe6a:76d4 prefixlen 64 scopeid 0x20<link>
ether 84:2b:2b:6a:76:d4 txqueuelen 0 (Ethernet)
RX packets 11183 bytes 1050708 (1.0 MiB)
RX errors 0 dropped 5152 overruns 0 frame 0
TX packets 5329 bytes 452979 (442.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
em1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 84:2b:2b:6a:76:d4 txqueuelen 1000 (Ethernet)
RX packets 3505 bytes 335210 (327.3 KiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 2852 bytes 259910 (253.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
em2: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 84:2b:2b:6a:76:d5 txqueuelen 1000 (Ethernet)
RX packets 5356 bytes 495583 (483.9 KiB)
RX errors 0 dropped 4390 overruns 0 frame 0
TX packets 1546 bytes 110385 (107.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 17 bytes 2196 (2.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 17 bytes 2196 (2.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
测试网络高可用, 我们拔掉其中一根网线进行测试, 结论是:
- 在本次mode=6模式下丢包1个, 恢复网络时( 网络插回去 ) 丢包在5-6个左右,说明高可用功能正常但恢复的时候丢包会比较多
- 测试mode=1模式下丢包1个,恢复网络时( 网线插回去 ) 基本上没有丢包,说明高可用功能和恢复的时候都正常
- mode6这种负载模式除了故障恢复的时候有丢包之外其它都挺好的,如果能够忽略这点的话可以这种模式;而mode1故障的切换和恢复都很快,基本没丢包和延时。但端口利用率比较低,因为这种主备的模式只有一张网卡在工作.
更多详情见请继续阅读下一页的精彩内容 : http://www.linuxidc.com/Linux/2017-06/144865p2.htm
以上所述就是小编给大家介绍的《Linux下网卡bonding配置》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 6、如何获取配置中心的配置
- React降级配置及Ant Design配置
- vscode 配置eslint 开发vue的相关配置
- git commit 规范校验配置和版本发布配置
- hadoop地址配置、内存配置、守护进程设置、环境设置
- 在hibernate中配置事务级别与命名查询配置【原创】
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Nature of Code
Daniel Shiffman / The Nature of Code / 2012-12-13 / GBP 19.95
How can we capture the unpredictable evolutionary and emergent properties of nature in software? How can understanding the mathematical principles behind our physical world help us to create digital w......一起来看看 《The Nature of Code》 这本书的介绍吧!