使用 Vim 文本编辑器来配置网卡设备的绑定参数。网卡绑定的理论知识类似于前面学习的 RAID 硬盘组,我们需要对参与绑定的网卡设备逐个进行“初始设置”。需要注意的是,这些原本独立的网卡设备此时需要被配置成为一块“从属”网卡,服务于“主”网卡,不应该再有自己的 IP 地址等信息。在进行了初始设置之后,它们就可以支持网卡绑定。
[root@linuxprobe ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=EthernetBOOTPROTO=noneONBOOT=yesUSERCTL=noDEVICE=eno16777736MASTER=bond0SLAVE=yes[root@linuxprobe ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno33554968TYPE=EthernetBOOTPROTO=noneONBOOT=yesUSERCTL=noDEVICE=eno33554968MASTER=bond0《Linux 就该这么学》 - 必读的 Linux 系统与红帽 RHCE 认证免费自学书籍204SLAVE=yes还需要将绑定后的设备命名为 bond0 并把 IP 地址等信息填写进去,这样当用户访问相应服务的时候,实际上就是由这两块网卡设备在共同提供服务。[root@linuxprobe ~]# vim /etc/sysconfig/network-scripts/ifcfg-bondTYPE=EthernetBOOTPROTO=noneONBOOT=yesUSERCTL=noDEVICE=bond0IPADDR=192.168.10.10PREFIX=24DNS=192.168.10.1NM_CONTROLLED=no:让 Linux 内核支持网卡绑定驱动。常见的网卡绑定驱动有三种模式—mode0、mode1和 mode6。下面以绑定两块网卡为例,讲解使用的情景。➢ mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。➢ mode1(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。➢ mode6(平衡负载模式):平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持。比如有一台用于提供 NFS 或者 samba 服务的文件服务器,它所能提供的最大网络传输速度为 100Mbit/s,但是访问该服务器的用户数量特别多,那么它的访问压力一定很大。在生产境中,网络的可靠性是极为重要的,而且网络的传输速度也必须得以保证。针对这样的情况,比较好的选择就是 mode6 网卡绑定驱动模式了。因为 mode6 能够让两块网卡同时一起工作,当其中一块网卡出现故障后能自动备援,且无需交换机设备支援,从而提供了可靠的网络传输保障。下面使用 Vim 文本编辑器创建一个用于网卡绑定的驱动文件,使得绑定后的 bond0 网卡设备能够支持绑定技术(bonding);同时定义网卡以 mode6 模式进行绑定,且出现故障时自动切换的时间为 100 毫秒。
[root@linuxprobe ~]# vim /etc/modprobe.d/bond.confalias bond0 bondingoptions bond0 miimon=100 mode=6:
重启网络服务后网卡绑定操作即可成功。正常情况下只有 bond0 网卡设备才会有 IP 地址等信息
:[root@linuxprobe ~]# systemctl restart network[root@linuxprobe ~]# ifconfigbond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255inet6 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)《Linux 就该这么学》 - 必读的 Linux 系统与红帽 RHCE 认证免费自学书籍RX errors 0 dropped 6 overruns 0 frame 0TX packets 588 bytes 40260 (39.3 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eno16777736: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500ether 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 0TX packets 263 bytes 20682 (20.1 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eno33554968: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500ether 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 0TX packets 325 bytes 19578 (19.1 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
可以在本地主机执行 ping 192.168.10.10 命令检查网络的连通性。为了检验网卡绑定技术的自动备援功能,我们突然在虚拟机硬件配置中随机移除一块网卡设备,可以非常清晰地看到网卡切换的过程(一般只有 1 个数据丢包)。然后另外一块网卡会继续为用户提供服务。
[root@linuxprobe ~]# ping 192.168.10.10PING 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 ms64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=0.102 ms64 bytes from 192.168.10.10: icmp_seq=3 ttl=64 time=0.066 msping: sendmsg: Network is unreachable64 bytes from 192.168.10.10: icmp_seq=5 ttl=64 time=0.065 ms64 bytes from 192.168.10.10: icmp_seq=6 ttl=64 time=0.048 ms64 bytes from 192.168.10.10: icmp_seq=7 ttl=64 time=0.042 ms64 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 7006msrtt min/avg/max/mdev = 0.042/0.073/0.109/0.023