Linux网卡绑定

Bond常用的mode种类:

mode=0:(balance-rr) Round-robin policy(平衡轮循环策略)

  数据包的传输方式轮询传输,第一个包传输给eth0 ,第二个包传输给eth1,就这样循环下去,直到传输完毕,mode0能作为负载均衡作用,不提供容错功能,如果第一张网卡出现故障网络将面临瘫痪,需要注意的是mode0模式下与其相连的交换机端口必须配置链路聚合来进行支持。
mode=1:(active-backup) Active-backup policy(主-备份策略)

  只有一个网卡处于活动状态,当主网卡出现故障时,备网卡马上由备转变成主。这个模式提供了较高的容错能力,但是资源利用率较低,需要注意的是mode1模式下服务器需要关闭NetworkManager服务(#systemctl stop NetworkManager.service  #systemctl disable NetworkManager.service)。

mode=2:(balance-xor) XOR policy(平衡策略)

 基于指定的传输HASH策略传输数据包。

mode=3:broadcast(广播策略)

  在每个slave接口上传输每个数据包,此模式提供了容错能力。

mode=4:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)

  创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的是,并不是所有的传输策略都是802.3ad适应的,同时需要switch(交换机)支持IEEE 802.3ad Dynamic link aggregation。
mode=5:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)

  不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。

mode=6:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

  该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。
  接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
  来自服务器端的接收流量也会被均衡。当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。使用ARP协商进行负载均衡的一个问题是:每次广播 ARP请求时都会使用bond的硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部流向当前的slave。这个问题可以通过给所有的对端发送更新 (ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。当新的slave加入到bond中时,或者某个未激活的slave重新 激活时,接收流量也要重新分布。接收的负载被顺序地分布(round robin)在bond中最高速的slave上。

使用bonding软件设置

7以下版本:

1.查看系统是否支持bonding

[root@linuxprobe network-scripts]# cat /boot/config-4.18.0-80.el8.x86_64 | grep -i bonding
CONFIG_BONDING=m  

2.关闭NetworkManager服务(7系列版本以下开启NetworkManager与bonding会产生冲突)

[root@linuxprobe network-scripts]# systemctl stop NetworkManager.service  //关闭服务
[root@linuxprobe network-scripts]# chkconfig NetworkManager off  //关闭开机自启动 

3.创建虚拟网卡ifcfg-bondx

[root@linuxprobe network-scripts]vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0        //设备名
BOOTPROTO=static    //IP的获取方式
ONBOOT=yes        //开机自启动
IPADDR=10.129.49.240  //IP地址
NETMASK=255.255.255.0  //掩码
GATEWAY=10.129.49.1    //网关
DNS1=10.112.15.30
BONDING_OPTS="miimon=100,mode=1"  //mode类型,网络链路检测频率100ms检查一次,此字段可在此配置也可在/etc/modprobe.d/bond.conf文件中配置,建议在此配置最有效。

注意:RHEL5.5版本,请在/etc/modprobe.d/bond.conf中配置,直接写在ifcfg-bond0中可能无效。

[root@linuxprobe network-scripts]cat /etc/modprobe.d/bond.conf
alias bond0 bonding
options bond0 miimon=100 mode=6

 

4.修改加入bond的网卡配置文件

[root@linuxprobe network-scripts]vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
MASTER=bond0  
SLAVE=yes

[root@linuxprobe network-scripts]vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth0
ONBOOT=yes
MASTER=bond0  
SLAVE=yes 

5.重启网络服务

[root@linuxprobe network-scripts]systemctl restart network

6.查看配置

[root@cobbler-node1 network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 28:6e:d4:88:ce:5d
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 28:6e:d4:88:ce:5e
Slave queue ID: 0

[root@cobbler-node1 network-scripts]# ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
        inet 10.129.49.240  netmask 255.255.255.0  broadcast 10.129.49.255
        inet6 fe80::2a6e:d4ff:fe88:ce5d  prefixlen 64  scopeid 0x20<link>
        ether 28:6e:d4:88:ce:5d  txqueuelen 1000  (Ethernet)
        RX packets 1675775  bytes 126050576 (120.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3432  bytes 496778 (485.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 28:6e:d4:88:ce:5d  txqueuelen 1000  (Ethernet)
        RX packets 837774  bytes 63015040 (60.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1718  bytes 237790 (232.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eth1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 28:6e:d4:88:ce:5d  txqueuelen 1000  (Ethernet)
        RX packets 838224  bytes 63053418 (60.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1714  bytes 258988 (252.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

7版本:

通过修改配置文件操作

第一步:创建虚拟网卡ifcfg-bondx

[root@linuxprobe network-scripts]#vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0        //设备名
BOOTPROTO=static    //IP的获取方式
ONBOOT=yes        //开机自启动
USERCTL=no
IPADDR=10.129.49.240  //IP地址
NETMASK=255.255.255.0  //掩码
GATEWAY=10.129.49.1    //网关
DNS1=10.112.15.30
NM_CONTROLLED=no
BONDING_OPTS="mode=6 miimon=100" //该项也可以写在/etc/modeprobe.d/bond.conf文件中。建议在此处配置。
#BONDING_OPTS="mode=1 miimon=100 primary=eth0" //如果Mode=1需要添加primary字段指定主用网卡。

第二步:配置从属网卡。

[root@linuxprobe network-scripts]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
MASTER=bond0  
SLAVE=yes
TYPE=Ethernet
BOOTPROTO=none
USERCTL=no
[root@linuxprobe network-scripts]#vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
MASTER=bond0  
SLAVE=yes
TYPE=Ethernet
BOOTPROTO=none
USERCTL=no

第三步:让linux内核支持网卡绑定驱动(如果已在bond中配置此处不需要再配置)。

[root@linuxprobe network-scripts]#vim /etc/modprobe.d/bond.conf
alias bond0 bonding
options bond0 miimon=100 mode=6

##mode0:平时两块网卡均工作,且自动备援,但是需要与其相连的交换机上进行端口聚合来支持绑定。
##mode1:平时只有一块网卡工作,故障后另一块网卡自动替换。
##mode6:平时两块网卡均工作,且自动备援,不需要交换机提供辅助支持。 

第四步:重启网络服务。

[root@linuxprobe network-scripts]#systemctl restart network

[root@linuxprobe network-scripts]#ifconfig

注意:如果重启网卡不成功,请尝试禁用NetworkManager服务。

注意:RHEL7及以上版本如果关闭NetworkManager服务,可能会造成网络丢包。

[root@linuxprobe network-scripts]# systemctl stop NetworkManager.service
[root@linuxprobe network-scripts]# systemctl disable NetworkManager.service

8版本:

使用nmcli方式配置操作

第一步:创建bondX网卡

[root@linuxprobe ~]# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=balance-rr"
Connection 'bond0' (b37b720d-c5fa-43f8-8578-820d19811f32) successfully added.

##balance-rr 为轮循模式,特点是会根据设备顺序依次传输数据包,提供负载均衡的效果,让带宽的性能更好一些;而且一旦某个网卡发生故障,会马上切换到另外一台网卡设备上,保证网络传输不被中断。

##active-backup 为主备模式,特点是平时只有一块网卡正常工作,另一个网卡随时待命,一旦工作中的网卡发生损坏,待命的网卡会自动顶替上去。

第二步:添加从属网卡

[root@linuxprobe ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname ens160 master bond0
Connection 'bond0-port1' (8a2f77ee-cc92-4c11-9292-d577ccf8753d) successfully added.
[root@linuxprobe ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname ens192 master bond0
Connection 'bond0-port2' (b1ca9c47-3051-480a-9623-fbe4bf731a89) successfully added.

第三步:配置bondX网卡信息

[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.addresses 192.168.10.10/24
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.gateway 192.168.10.1
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.dns 192.168.10.1
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.dns-search linuxprobe.com
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.method manual

第四步:启动网卡

[root@linuxprobe ~]# nmcli connection up bond0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/22)
[root@linuxprobe ~]# nmcli device status
DEVICE      TYPE      STATE      CONNECTION  
bond0       bond      connected  bond0       
ens160      ethernet  connected  ens160      
virbr0      bridge    connected  virbr0      
ens192      ethernet  connected  bond0-port2 

 

使用NetworkManager配置:

Nmcli方式(命令行)

------------------------------------------------------------------------------------------------------------------------------------------

一.创建bonding

创建名称为bond1的绑定

[root@localhost ~]# nmcli connection add type bond con-name bond1 ifname bond1 mode active-backup  //active-backup主备模式,balance-rr负载均衡模式

Connection 'bond1' (74659382-3e46-4a95-851d-66f90b2ece30) successfully added.

将enp7s0f0增加到bond1
[root@localhost ~]# nmcli connection add type bond-slave ifname enp7s0f0 master bond1
Connection 'bond-slave-enp7s0f0' (061f5c5c-3366-4025-8149-7c89e49ab1b3) successfully added.

enp7s0f1增加到bond1
[root@localhost ~]# nmcli connection add type bond-slave ifname enp7s0f1 master bond1
Connection 'bond-slave-enp7s0f1' (45440593-243e-4618-ab1a-0845555e11c1) successfully added.  
.启动bonging
启动从属接口enp7s0f0
[root@localhost ~]# nmcli connection up bond-slave-enp7s0f0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
启动从属接口enp7s0f1
[root@localhost ~]# nmcli connection up bond-slave-enp7s0f1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7) 
启动绑定
[root@localhost ~]# nmcli connection up  bond1
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/11)
[root@localhost ~]# ifconfig
bond1: flags=5123  mtu 1500
        ether a0:36:9f:dc:5c:48  txqueuelen 0  (Ethernet)
        RX packets 34  bytes 6596 (6.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12  bytes 1992 (1.9 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.创建出一个bond网卡

[root@linuxprobe ~]# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=balance-rr"

Connection 'bond0' (b37b720d-c5fa-43f8-8578-820d19811f32) successfully added.

2.向bond0添加从属网卡

 

[root@linuxprobe ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname ens160 master bond0
Connection 'bond0-port1' (8a2f77ee-cc92-4c11-9292-d577ccf8753d) successfully added.
[root@linuxprobe ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname ens192 master bond0
Connection 'bond0-port2' (b1ca9c47-3051-480a-9623-fbe4bf731a89) successfully added.

 

3.配置bond0设备的网卡信息

 

可以使用nmcli命令依次配置网络的IP地址及子网掩码、网关、DNS、搜索域和手动配置等参数,也可以直接编辑网卡配置文件,或使用nmtui命令完成下面的操作。

[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.addresses 192.168.10.10/24
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.gateway 192.168.10.1
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.dns 192.168.10.1
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.dns-search abc.com
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.method manual

4.启动bond网卡

[root@linuxprobe ~]# nmcli connection up bond0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/22)
[root@linuxprobe ~]# nmcli device status
DEVICE      TYPE      STATE      CONNECTION  
bond0       bond      connected  bond0       
ens160      ethernet  connected  ens160      
virbr0      bridge    connected  virbr0      
ens192      ethernet  connected  bond0-port2 
lo          loopback  unmanaged  --          
virbr0-nic  tun       unmanaged  --

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Nmtui方式(图形化)

#nmtui

1.在开始菜单中选择 编辑连接。选择 添加 时会打开 编辑连接 页面。

NetworkManager 文本用户界面的添加绑定连接菜单

2.选择 绑定,然后选择 创建 打开绑定的 编辑连接 页面。

 NetworkManager 文本用户界面的添加绑定连接菜单

3.NetworkManager 此时需要在绑定中添加从属接口。要添加从属接口,请选择 添加 打开 新建连接 页面。选择连接类型后,请点击 创建 按钮。

NetworkManager 文本用户界面的配置绑定从属连接菜单

4.显示从属连接 编辑连接 页面。在 Device 字段输入所需从属设备名称或 MAC 地址。如有必要,选择 以太网 标签右侧的 显示,输入作为绑定的 MAC 地址的克隆 MAC 地址。选择 确定 按钮保存辅设备。

注意:如果没有为该设备指定 MAC 地址,则会在重新载入 编辑连接 窗口时自动填写 Device 部分,但只能在成功找到该设备时方可有此效果。

 NetworkManager 文本用户界面的配置绑定从属连接菜单

5.从属连接 部分显示绑定从属连接名称。重复上述步骤添加其他从属连接。

6.点击 确定 按钮前请检查并确定设置。

NetworkManager 文本用户界面中完成的绑定。

 

posted @ 2021-11-30 14:56  小蟋帅  阅读(536)  评论(0编辑  收藏  举报