Linux CentOS网卡绑定bonding配置

1、 bonding技术

2、 centos7配置bonding

3、 centos6配置bonding

一、bonding技术

bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物 理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐 量、实现⽹络冗余、负载等功能,有很多优势。

bonding技术是linux系统内核层面实现的,它是一个内核模块(驱动)。使

用它需要系统有这个模块, 我们可以modinfo命令查看下这个模块的信 息, 一般来说都⽀支持.

bonding的七种工作模式:

 

bonding技术提供了七种工作模式,在使用的时候需要指定一种,每种有 各自的优缺点.

 

1. balance-rr (mode=0)    默认, 有高可用 (容错) 和负载均衡的功能, 需要交换机的配置,每块网卡轮询发包 (流量分发⽐比较均衡).

2. active-backup (mode=1)   只有高可用 (容错) 功能, 不需要交换机配 置, 这种模式只有一块网卡工作, 对外只有一个mac地址。缺点是端口 利利用率⽐比较

  1. balance-xor (mode=2)    不常用
    1. broadcast (mode=3)      不常用

C. 802.3ad (mode=4)        IEEE 802.3ad 动态链路路聚合,需要交换机配 置,没用过

H. balance-tlb (mode=5)    不常用

J.             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故障的切换和恢复都
很快,基本没丢包和延时。但端⼝口利利⽤用率⽐比较低,因为这种主备的模
式只有⼀一张⽹网卡在⼯工作.

 

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

三、Centos6配置bonding

Centos6配置bonding和上面的Cetons7做bonding基本一样,只是配置有 些不同.

 

系统: Centos6

网卡: em1、em2 bond0:172.16.0.183

负载模式: mode1(adaptive load balancing)      # 这里的负载模式为1,也就是主备模式.

 

1、关闭和停止NetworkManager服务

 

service       NetworkManager stop chkconfig NetworkManager off

 

ps: 如果有装的话关闭它,如果报错说明没有装这个,那就不用管

2、加载bonding模块

 

modprobe --first-time bonding

 

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

 

vim /etc/sysconfig/network-scripts/ifcfg-bond0

 

修改如下 (根据你的需要):

 

DEVICE=bond0 TYPE=Bond BOOTPROTO=none ONBOOT=yes IPADDR=172.16.0.183 NETMASK=255.255.255.0 GATEWAY=172.16.0.1 DNS1=114.114.114.114 USERCTL=no

BONDING_OPTS="mode=6 miimon=100"

 

4、加载bond0接口到内核

 

vi /etc/modprobe.d/bonding.conf

 

修改成如下:

5、编辑em1em2的接口⽂文件

 

vim /etc/sysconfig/network-scripts/ifcfg-em1

 

修改成如下:

 

DEVICE=em1

MASTER=bond0 SLAVE=yes USERCTL=no ONBOOT=yes BOOTPROTO=none

 

vim /etc/sysconfig/network-scripts/ifcfg-em2

 

修改成如下:

 

DEVICE=em2

MASTER=bond0 SLAVE=yes USERCTL=no ONBOOT=yes BOOTPROTO=none

 

6、加载模块、重启网络与测试

 

modprobe bonding service network restart

 

查看bondo接口的状态

 

cat /proc/net/bonding/bond0

 

Bonding Mode: fault-tolerance (active-backup)        # bond0接口当前的负载模式是主备 模式

Primary Slave: None Currently Active Slave: em2 MII Status: up

MII Polling Interval (ms): 100 Up Delay (ms): 0

Down Delay (ms): 0

 

Slave Interface: em1 MII Status: up Speed: 1000 Mbps Duplex: full

Link Failure Count: 2

Permanent HW addr: 84:2b:2b:6a:76:d4 Slave queue ID: 0

 

Slave Interface: em2 MII Status: up Speed: 1000 Mbps Duplex: full

Link Failure Count: 0

Permanent HW addr: 84:2b:2b:6a:76:d5 Slave queue ID: 0

 

通过ifconfig命令查看下接口的状态,你会发现mode=1模式下所有的mac

地址都是一致的,说明对外逻辑就是一个mac地址

 

进⾏高可用测试,拔掉其中的一条网线看丢包和延时情况, 然后在插回网 线(模拟故障恢复),再看丢包和延时的情况.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海天哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值