vanturman 2019-12-29
一般来讲,生产环境必须提供7×24小时的网络传输服务。借助于网卡绑定技术,不仅可以提高网络传输速度,更重要的是,还可以确保在其中一块网卡出现故障时,依然可以正常提供网络服务。假设我们对两块网卡实施了绑定技术,这样在正常工作中它们会共同传输数据,使得网络传输的速度变得更快;而且即使有一块网卡突然出现了故障,另外一块网卡便会立即自动顶替上去,保证数据传输不会中断。
下面我会使用两种方案来完成网双卡绑定 一种是传统的配置文件修改方案。
主要常用的三种模式
其他模式介绍
bond 模式修改配置文件实现双网卡绑定
注意:
环境:
1、新建Slave1配置文件
配置网卡设备的绑定参数。网卡绑定的理论知识类似于RAID硬盘组,我们需要对参与绑定的网卡设备逐个进行“初始设置”。需要注意的是,这些原本独立的网卡设备此时需要被配置成为一块“从属”网卡,服务于“主”网卡,不应该再有自己的IP地址等信息。在进行了初始设置之后,它们就可以支持网卡绑定。
[ ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777728 TYPE=Ethernet BOOTPROTO=none # 手动获取 ONBOOT=yes USERCTL=no # 是否允许普通用户管理此端口 DEVICE=eno16777728 # 设备名 MASTER=bond0 # master 设备名 SLAVE=yes # 开启 SLAVE [ ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno33554968 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes USERCTL=no DEVICE=eno33554968 MASTER=bond0 SLAVE=yes
2、新建Master配置文件
还需要将绑定后的设备命名为bond0并把IP地址等信息填写进去,这样当用户访问相应服务的时候,实际上就是由这两块网卡设备在共同提供服务。
[ ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0 TYPE=Ethernet BOOTPROTO=none # 手动配置地址 ONBOOT=yes USERCTL=no # 是否允许普通用户管理此端口 DEVICE=bond0 # 设备名 IPADDR=192.168.10.10 # IP地址 PREFIX=24 # 子网掩码 DNS=192.168.10.1 NM_CONTROLLED=no # GATEWAY=192.168.1.1 # 网关地址 # DNS1=114.114.114.114 # DNS1地址 # DNS2=8.8.8.8 # DNS2地址
3、让Linux内核支持网卡绑定驱动
在生产环境中,网络的可靠性是极为重要的,而且网络的传输速度也必须得以保证。针对这样的情况,比较好的选择就是mode6网卡绑定驱动模式了。因为mode6能够让两块网卡同时一起工作,当其中一块网卡出现故障后能自动备援,且无需交换机设备支援,从而提供了可靠的网络传输保障。
下面创建一个用于网卡绑定的驱动文件,使得绑定后的bond0网卡设备能够支持绑定技术(bonding);同时定义网卡以mode6模式进行绑定,且出现故障时自动切换的时间为100毫秒。
[ ~]# vim /etc/modprobe.d/bond.conf alias bond0 bonding options bond0 miimon=100 mode=6
重启网络服务后网卡绑定操作即可成功。正常情况下只有bond0网卡设备才会有IP地址等信息:
[ ~]# systemctl restart network [ ~]# ifconfig bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500 inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255 inet6 fe80::20c:29ff:fe9c:637d prefixlen 64 scopeid 0x20<link> ether 00:0c:29:9c:63:7d txqueuelen 0 (Ethernet) RX packets 700 bytes 82899 (80.9 KiB) RX errors 0 dropped 6 overruns 0 frame 0 TX packets 588 bytes 40260 (39.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eno16777728: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500 ether 00:0c:29:9c:63:73 txqueuelen 1000 (Ethernet) RX packets 347 bytes 40112 (39.1 KiB) RX errors 0 dropped 6 overruns 0 frame 0 TX packets 263 bytes 20682 (20.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eno33554968: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500 ether 00:0c:29:9c:63:7d txqueuelen 1000 (Ethernet) RX packets 353 bytes 42787 (41.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 325 bytes 19578 (19.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
4、检查网络的连通性
为了检验网卡绑定技术的自动备援功能,我们突然在虚拟机硬件配置中随机移除一块网卡设备,可以非常清晰地看到网卡切换的过程(一般只有1个数据丢包)。然后另外一块网卡会继续为用户提供服务。
[ ~]# ping 192.168.10.10 PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data. 64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.109 ms 64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=0.102 ms 64 bytes from 192.168.10.10: icmp_seq=3 ttl=64 time=0.066 ms ping: sendmsg: Network is unreachable 64 bytes from 192.168.10.10: icmp_seq=5 ttl=64 time=0.065 ms 64 bytes from 192.168.10.10: icmp_seq=6 ttl=64 time=0.048 ms 64 bytes from 192.168.10.10: icmp_seq=7 ttl=64 time=0.042 ms 64 bytes from 192.168.10.10: icmp_seq=8 ttl=64 time=0.079 ms ^C --- 192.168.10.10 ping statistics --- 8 packets transmitted, 7 received, 12% packet loss, time 7006ms rtt min/avg/max/mdev = 0.042/0.073/0.109/0.023 ms
5、查看详情信息
cat /proc/net/bonding/bond6
bond 模式 nmcli命令行实现双网卡绑定
注意:
环境:
1、创建Master配置文件
# nmcli connection add type bond con-name 设备名称 ifname 设备名称 mode 模式号 miimon 毫秒 nmcli connection add type bond con-name bond6 ifname bond6 mode 1 miimon 100 注:miimon:指定当发现一个链路恢复时,在激活该链路之前的等待时间,以毫秒计算
2、新建Slave1配置文件
# nmcli connection add type bond-slave ifname 设备名称 master master设备名称 nmcli connection add type bond-slave ifname eno16777728 master bond6
3、新建Slave2配置文件
# nmcli connection add type bond-slave ifname 设备名称 master master设备名称 nmcli connection add type bond-slave ifname eno33554968 master bond6
4、激活网路设备
# 激活bond6网络设备 nmcli connection up "bond6" # 激活ens33网络设备 nmcli connection up "bond-slave-eno16777728" # 激活ens34网络设备 nmcli connection up "bond-slave-eno33554968"
5、查看详情信息
cat /proc/net/bonding/bond6