赞
踩
网卡绑定(bonding)是将多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余、带宽扩容和负载均衡,在生产环境中经常使用。
bonding 技术是 Linux 系统内核层面实现的,它是一个内核模块(驱动)。
[root@rac1 boot]# cd /boot
[root@rac1 boot]# ll
总用量 22447
-rw-r--r--. 1 root root 105195 11月 22 2013 config-2.6.32-431.el6.x86_64
drwxr-xr-x. 3 root root 1024 6月 3 07:02 efi
drwxr-xr-x. 2 root root 1024 6月 3 07:03 grub
-rw-------. 1 root root 16014947 6月 3 07:03 initramfs-2.6.32-431.el6.x86_64.img
drwx------. 2 root root 12288 6月 3 07:01 lost+found
-rw-r--r--. 1 root root 193758 11月 22 2013 symvers-2.6.32-431.el6.x86_64.gz
-rw-r--r--. 1 root root 2518236 11月 22 2013 System.map-2.6.32-431.el6.x86_64
-rwxr-xr-x. 1 root root 4128368 11月 22 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
bonding 技术提供了七种工作模式,常用的模式有 0、1、4、6,每种工作模式都有其各自的优缺点:
特点:传输数据包顺序是依次传输,比如第一个包走 eth0,第二个包走 eth1,直到数据包发送完毕。增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。
缺点:需要接入交换机做端口聚合。
特点:当一个宕掉另一个马上由备份转换为主设备。冗余性高,不需要交换机端支持。
缺点:资源利用率较低,只有一个接口处于工作状态。
特点:基于指定的传输 HASH 策略传输数据包。此模式提供负载平衡和容错能力。
缺点:需要交换机配置端口聚合。
特点:在每个 slave 接口上传输每个数据包,此模式提供了容错能力。
创建一个聚合组,它们共享同样的速率和双工设定。根据 802.3ad 规范将多个 slave 工作在同一个激活的聚合体下。
特点:
(1)ethtool支持获取每个slave的速率和双工设定。
(2)交换机支持 IEEE 802.3ad Dynamic link aggregation。
(3)大多数交换机需要经过特定配置才能支持 802.3ad模式。
特点:不需要任何特别的交换机支持的通道 bonding。在每个 slave 上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的 slave 出故障了,另一个 slave 接管失败的 slave 的 MAC 地址。
特点:该模式包含了 balance-tlb 模式,同时加上针对 IPV4 流量的接收负载均衡(receive load balance,rlb),而且不需要任何交换机的支持。
配置信息如下:
操作系统: Centos7
网卡: ens33、ens34
bond1:192.168.1.102
负载模式: mode1(adaptive load balancing) #主备模式
执行如下命令:
[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.
[root@localhost ~]# modprobe --first-time bonding
modprobe: ERROR: could not insert 'bonding': Module already in kernel
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# ll ifcfg-* -rw-r--r--. 1 root root 309 6月 10 00:28 ifcfg-ens33 -rw-r--r--. 1 root root 309 6月 10 00:28 ifcfg-ens34 -rw-r--r--. 1 root root 309 6月 10 00:28 ifcfg-ens35 -rw-r--r--. 1 root root 215 6月 11 2022 ifcfg-ens39 -rw-r--r--. 1 root root 254 9月 12 2016 ifcfg-lo [root@localhost network-scripts]# touch ifcfg-bond1 [root@localhost network-scripts]# ll ifcfg-* -rw-r--r--. 1 root root 0 6月 10 18:15 ifcfg-bond1 -rw-r--r--. 1 root root 309 6月 10 00:28 ifcfg-ens33 -rw-r--r--. 1 root root 309 6月 10 00:28 ifcfg-ens34 -rw-r--r--. 1 root root 309 6月 10 00:28 ifcfg-ens35 -rw-r--r--. 1 root root 215 6月 11 2022 ifcfg-ens39 -rw-r--r--. 1 root root 254 9月 12 2016 ifcfg-lo
配置文件 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"
配置文件 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
配置文件 ens34 内容如下:
[root@rac1 network-scripts]# vi ifcfg-eth2
## 内容如下
DEVICE=ens34
MASTER=bond1
SLAVE=yes
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
# (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
[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
现在需要增加一组 bond,名称为 bond2,包含 ens35 和 ens39 两块网卡,IP 地址设置为 10.1.1.102,配置过程如下:
[root@localhost network-scripts]# cp ifcfg-bond1 ifcfg-bond2
[root@localhost network-scripts]# ll ifcfg*
-rw-r--r--. 1 root root 161 6月 10 18:18 ifcfg-bond1
-rw-r--r--. 1 root root 161 6月 10 18:56 ifcfg-bond2
-rw-r--r--. 1 root root 73 6月 10 18:22 ifcfg-ens33
-rw-r--r--. 1 root root 74 6月 10 18:23 ifcfg-ens34
-rw-r--r--. 1 root root 309 6月 10 00:28 ifcfg-ens35
-rw-r--r--. 1 root root 219 6月 10 18:28 ifcfg-ens39
-rw-r--r--. 1 root root 254 9月 12 2016 ifcfg-lo
配置文件 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"
配置文件 ens35 内容如下:
DEVICE=ens35
MASTER=bond2
SLAVE=yes
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
配置文件 ens39 内容如下:
DEVICE=ens39
MASTER=bond2
SLAVE=yes
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
<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:工作模式
[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>'
[root@localhost network-scripts]# lsmod | grep bonding
bonding 141566 0
[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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。