linux系統中為什么要綁定兩塊網卡?
一般來講,生產環境必須提供7*24小時的網絡傳輸服務。借助於網卡綁定技術,不僅可以提高網絡傳輸的速度,更重要的是,還可以確保在其中一塊網卡出現故障時,依然可以正常提供網絡服務。
假設我們對兩塊網卡實施了綁定技術,這樣在正常工作中它們會共同傳輸數據,使得網絡傳輸的速度變得更快;而且即使有一塊網卡突然出現了故障,另外一塊網卡便會立即自動頂替上去,保證數據傳輸不會中斷。
a:使得網絡傳輸的速度變得更快。
b:即使有一塊網卡突然出現了故障,另外一塊網卡便會立即自動頂替上去,保證數據傳輸不會中斷。
1、首先在虛擬機中再添加一塊網卡,保證有兩塊網卡,而且保證網卡模式相同(處於相同模式的網卡設備才可以進行網卡綁定,否則這兩塊網卡無法相互傳送數據)
點擊編輯虛擬機設置:
點擊添加:
點擊網絡適配器,點擊完成:
選僅主機模式,點擊高級:
依次點擊1、2、3:
效果:
2、開機虛擬機,查看網卡信息,查看是否支持綁定
[root@linuxprobe Desktop]# ifconfig ## 有兩塊網卡和兩個MAC地址 eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 00:0c:29:e4:f7:b9 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eno33554968: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 00:50:56:3e:97:cc txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 258 bytes 20876 (20.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 258 bytes 20876 (20.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@linuxprobe ~]# cat /boot/config-3.10.0-123.el7.x86_64 |grep -i bonding ## 查看是否支持綁定 CONFIG_BONDING=m
3、使用vim編輯器來配置網卡設備的綁定參數。
網卡綁定的理論類似於RAID磁盤陣列,需要對參與綁定的網卡設備逐個進行“初始設置”。需要注意的是,這些原本獨立的網卡設備此時需要被設置成一塊“從屬”網卡,服務於“主”網卡,不應該再有自己的IP地址等信息。在進行初始設置之后,它們就可以支持網卡綁定。
編輯配置文件:
[root@linuxprobe Desktop]# cd /etc/sysconfig/network-scripts/ ## 進入配置文件所在目錄 [root@linuxprobe network-scripts]# ls ## 僅有一個網卡配置文件 ifcfg-eno16777728 ifdown-bnep ifdown-ipv6 ifdown-ppp ifdown-Team ifup ifup-eth ifup-isdn ifup-post ifup-sit ifup-tunnel network-functions ifcfg-lo ifdown-eth ifdown-isdn ifdown-routes ifdown-TeamPort ifup-aliases ifup-ippp ifup-plip ifup-ppp ifup-Team ifup-wireless network-functions-ipv6 ifdown ifdown-ippp ifdown-post ifdown-sit ifdown-tunnel ifup-bnep ifup-ipv6 ifup-plusb ifup-routes ifup-TeamPort init.ip [root@linuxprobe network-scripts]# vim ifcfg-eno16777728 ## 使用vim創建從屬網卡配置文件 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes USERCTL=no DEVICE=eno16777728 MASTER=bond0 SLAVE=yes [root@linuxprobe network-scripts]# vim ifcfg-eno33554968 ## 使用vim創建從屬網卡配置文件 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes USERCTL=no DEVICE=eno33554968 MASTER=bond0 SLAVE=yes [root@linuxprobe network-scripts]# vim ifcfg-bond0 ## 使用vim創建主網卡配置文件 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes USERCTL=no DEVICE=bond0 IPADDR=192.168.10.10 PREFIX=24 DNS=192.168.10.1 NM_CONTROLLED=no
配置文件中參數解釋:
TYPE:網絡類型
BOOTPROTO:獲取網絡的方式
ONBOOT:是否開機自動啟動網卡
USERCTL:是否允許普通用戶控制該網卡
DEVICE:網卡名稱
MASTER:主網卡名稱
SLAVE:是否從屬於主網卡
IPADDR:指定IP地址
4、創建配置文件,讓linux內核支持網卡綁定驅動
常見的網卡綁定驅動有三種模式---mode0、mode1和mode6。
mode0:(平衡負載模式):平時兩塊網卡均工作,且自動備援,但需要在與服務器本地網卡相連的交換機設備上進行端口聚合來支持綁定技術。
mode1:(自動備援模式):平時只有一塊網卡工作,在它故障后自動替換為另外的網卡。
mode6:(平衡負載模式):平時兩塊網卡均工作,且自動備援,無須交換機設備提供輔助支持。
因此,mode6的優勢非常明顯:兩塊網卡同時工作,自動備援,無須交換機
使用vim編輯器創建一個用於網卡綁定的驅動文件,使得綁定后的bond0網卡設備能夠支持綁定技術(bonding);模式mode6,且出現故障時自動切換的時間為100毫秒:
[root@linuxprobe ~]# cd /etc/modprobe.d/ ## 進入編輯驅動文件的目錄 [root@linuxprobe modprobe.d]# ls [root@linuxprobe modprobe.d]# vim bond.conf ## 編輯驅動文件 alias bond0 bonding option bond0 miimon=100 mode=6
5、重啟網卡
[root@linuxprobe modprobe.d]# ifconfig ## 查看重啟網卡前的網卡信息 eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 00:0c:29:e4:f7:b9 txqueuelen 1000 (Ethernet) RX packets 10 bytes 1524 (1.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eno33554968: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 00:50:56:3e:97:cc txqueuelen 1000 (Ethernet) RX packets 10 bytes 1524 (1.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 898 bytes 72716 (71.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 898 bytes 72716 (71.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@linuxprobe modprobe.d]# systemctl restart network ## 重啟網卡,出現了如下圖的報警信息
[root@linuxprobe modprobe.d]# ifconfig ## 查看重置網卡后的網卡信息,主網卡bond0出現了IP信息,且主網卡和從屬網卡的MAC地址變為一樣的了,跟重啟前eno16777728網卡的一致??印證報警信息? 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:fee4:f7b9 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:e4:f7:b9 txqueuelen 0 (Ethernet) RX packets 47 bytes 9084 (8.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 40 bytes 7034 (6.8 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:e4:f7:b9 txqueuelen 1000 (Ethernet) RX packets 22 bytes 4676 (4.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 22 bytes 3412 (3.3 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:e4:f7:b9 txqueuelen 1000 (Ethernet) RX packets 25 bytes 4408 (4.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 18 bytes 3622 (3.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 906 bytes 73556 (71.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 906 bytes 73556 (71.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
6、本地主機測試網絡連通性
[root@linuxprobe modprobe.d]# ping -c 3 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.088 ms 64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=0.048 ms 64 bytes from 192.168.10.10: icmp_seq=3 ttl=64 time=0.046 ms --- 192.168.10.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 0.046/0.060/0.088/0.021 ms
7、測試自動備援功能,在本地主機檢測連通性時,在虛擬機設置中移出一塊網卡,觀察是否有數據包丟失
並沒有數據丟失,說明沒有起到臨時備援的功能。