当前位置:   article > 正文

Linux 服务器配置网卡绑定(bonding)详解_linux bonding配置

linux bonding配置

Linux 服务器配置网卡绑定(bonding)详解

网卡绑定(bonding)是将多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余、带宽扩容和负载均衡,在生产环境中经常使用。

一、查看系统内核是否支持 bonding

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

[root@rac1 boot]# cd /boot

[root@rac1 boot]# ll
总用量 22447
-rw-r--r--. 1 root root   105195 1122 2013 config-2.6.32-431.el6.x86_64
drwxr-xr-x. 3 root root     1024 63 07:02 efi
drwxr-xr-x. 2 root root     1024 63 07:03 grub
-rw-------. 1 root root 16014947 63 07:03 initramfs-2.6.32-431.el6.x86_64.img
drwx------. 2 root root    12288 63 07:01 lost+found
-rw-r--r--. 1 root root   193758 1122 2013 symvers-2.6.32-431.el6.x86_64.gz
-rw-r--r--. 1 root root  2518236 1122 2013 System.map-2.6.32-431.el6.x86_64
-rwxr-xr-x. 1 root root  4128368 1122 2013 vmlinuz-2.6.32-431.el6.x86_64

[root@rac1 boot]# cat config-2.6.32-431.el6.x86_64 |grep -i bonding
CONFIG_BONDING=m
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

二、bonding 的七种工作模式

bonding 技术提供了七种工作模式,常用的模式有 0、1、4、6,每种工作模式都有其各自的优缺点:

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 配置网卡绑定(bonding)

配置信息如下:

操作系统: Centos7
网卡: ens33、ens34
bond1:192.168.1.102
负载模式: mode1(adaptive load balancing)  #主备模式
  • 1
  • 2
  • 3
  • 4
1、停止 NetworkManager 服务

执行如下命令:

[root@localhost ~]# systemctl stop NetworkManager

[root@localhost ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
2、加载 bonding 模块
[root@localhost ~]# modprobe --first-time bonding
modprobe: ERROR: could not insert 'bonding': Module already in kernel
  • 1
  • 2
3、创建基于 bond1 接口的网卡配置文件
[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# ll ifcfg-*
-rw-r--r--. 1 root root 309 610 00:28 ifcfg-ens33
-rw-r--r--. 1 root root 309 610 00:28 ifcfg-ens34
-rw-r--r--. 1 root root 309 610 00:28 ifcfg-ens35
-rw-r--r--. 1 root root 215 611 2022 ifcfg-ens39
-rw-r--r--. 1 root root 254 912 2016 ifcfg-lo

[root@localhost network-scripts]# touch ifcfg-bond1
[root@localhost network-scripts]# ll ifcfg-*
-rw-r--r--. 1 root root   0 610 18:15 ifcfg-bond1
-rw-r--r--. 1 root root 309 610 00:28 ifcfg-ens33
-rw-r--r--. 1 root root 309 610 00:28 ifcfg-ens34
-rw-r--r--. 1 root root 309 610 00:28 ifcfg-ens35
-rw-r--r--. 1 root root 215 611 2022 ifcfg-ens39
-rw-r--r--. 1 root root 254 912 2016 ifcfg-lo
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

配置文件 ifcfg-bond1 的内容如下:

DEVICE=bond1
TYPE=Bond
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.102
GATEWAY=192.168.1.1
DNS1=192.168.1.1
PREFIX=24
USERCTL=no
BONDING_OPTS="mode=1 miimon=100"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
4、修改 ens33、ens34 接口文件的内容

配置文件 ens33 内容如下:

[root@rac1 modprobe.d]# cd /etc/sysconfig/network-scripts/
[root@rac1 network-scripts]# vi ifcfg-ens33

## 内容如下
DEVICE=ens33
MASTER=bond1
SLAVE=yes
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

配置文件 ens34 内容如下:

[root@rac1 network-scripts]# vi ifcfg-eth2

## 内容如下
DEVICE=ens34
MASTER=bond1
SLAVE=yes
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
5、加载 bond1 接口到内核
# (1)创建加载 bonding 的文件
[root@rac1 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 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
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, 2011)

Bonding Mode: fault-tolerance (active-backup)  # bonding模式为 active-backup(mode=1)
Primary Slave: None
Currently Active Slave: ens33   # 网卡 ens33 为 Active 状态
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:88:a6:53
Slave queue ID: 0

Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:88:a6:5d
Slave queue ID: 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

四、设置多个 bond

现在需要增加一组 bond,名称为 bond2,包含 ens35 和 ens39 两块网卡,IP 地址设置为 10.1.1.102,配置过程如下:

1、创建基于 bond2 接口的网卡配置文件
[root@localhost network-scripts]# cp ifcfg-bond1 ifcfg-bond2
[root@localhost network-scripts]# ll ifcfg*
-rw-r--r--. 1 root root 161 610 18:18 ifcfg-bond1
-rw-r--r--. 1 root root 161 610 18:56 ifcfg-bond2
-rw-r--r--. 1 root root  73 610 18:22 ifcfg-ens33
-rw-r--r--. 1 root root  74 610 18:23 ifcfg-ens34
-rw-r--r--. 1 root root 309 610 00:28 ifcfg-ens35
-rw-r--r--. 1 root root 219 610 18:28 ifcfg-ens39
-rw-r--r--. 1 root root 254 912 2016 ifcfg-lo
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

配置文件 ifcfg-bond2 的内容如下:

DEVICE=bond2
TYPE=Bond
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.1.1.102
PREFIX=24
USERCTL=no
BONDING_OPTS="mode=1 miimon=100"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
2、修改 ens35、ens39 接口文件的内容

配置文件 ens35 内容如下:

DEVICE=ens35
MASTER=bond2
SLAVE=yes
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

配置文件 ens39 内容如下:

DEVICE=ens39
MASTER=bond2
SLAVE=yes
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
3、修改 /etc/modprobe.d/bonding.conf 文件
<span style="color:#000000;">alias bond1 bonding
alias bond2 bonding
options bonding max_bonds=2 miimon=200 mode=1
</span>

# 或

<span style="color:#000000;">alias bond1 bonding
options bond1 miimon=100 mode=1
install bond2 /sbin/modprobe bonding -o bond2 miimon=200 mode=1
</span>

# 参数说明:
# miimon:监视网络链接的频度,单位是毫秒
# max_bonds:配置的 bond 个数
# mode bond:工作模式
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
4、加载模块(或重启系统)
[root@localhost network-scripts]# modprobe bonding
libkmod: kmod_config_parse: /etc/modprobe.d/bonding.conf line 1: ignoring bad line starting with '<span'
libkmod: kmod_config_parse: /etc/modprobe.d/bonding.conf line 4: ignoring bad line starting with '</span>'
  • 1
  • 2
  • 3
5、检查模块是否加载成功
[root@localhost network-scripts]# lsmod | grep bonding
bonding               141566  0 
  • 1
  • 2
6、重启网络,查看网卡绑定信息
[root@localhost network-scripts]# systemctl restart network

#====================================   bond1  =========================================
[root@localhost network-scripts]# cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens33
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:88:a6:53
Slave queue ID: 0

Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:88:a6:5d
Slave queue ID: 0

#====================================   bond2  =========================================
[root@localhost network-scripts]# cat /proc/net/bonding/bond2
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens35
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens35
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:88:a6:67
Slave queue ID: 0

Slave Interface: ens39
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:88:a6:71
Slave queue ID: 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/195864
推荐阅读
相关标签
  

闽ICP备14008679号