近日,完成了一批Centos 6.5伺服器的網路卡繫結操作,由於現網生產環境,操作的時候特別小心謹慎,但誰知還是出了差錯,兩臺伺服器直接ping不通了,跑了趟機房。各種折騰。
因此特將操作步驟及注意事項在此分享.
1、環境描述
華為pcserver,安裝Centos 6.5 64位作業系統,伺服器配有四個網路卡,其中兩個網路卡在用,各接兩根網線分別與兩臺交換機相連,實現冗餘。
2、操作步驟
1)通過ifconfig -a|grep eth
命令看到eth0和eth1兩張網路卡處於running狀態,即代表該兩個網路卡目前各插有一根網線,因此需要將eth0、eth1進行雙網路卡繫結。
eth0 Link encap:Ethernet HWaddr E8:4D:D0:BF:D1:9B
inet addr:10.168.122.13 Bcast:10.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::ea4d:d0ff:febf:d19b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:21281229862 errors:0 dropped:0 overruns:0 frame:0
TX packets:20649353230 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1927808267139 (1.7 TiB) TX bytes:1543317199732 (1.4 TiB)
Memory:92300000-92400000
eth1 Link encap:Ethernet HWaddr E8:4D:D0:BF:D1:9C
inet6 addr: fe80::ea4d:d0ff:febf:d19c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1495871 errors:0 dropped:0 overruns:0 frame:0
TX packets:204395 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:97238155 (92.7 MiB) TX bytes:15301940 (14.5 MiB)
Memory:92200000-92300000
eth2 Link encap:Ethernet HWaddr E8:4D:D0:C9:EA:B2
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:c8100000-c8200000
eth3 Link encap:Ethernet HWaddr E8:4D:D0:C9:EA:B3
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:c8000000-c8100000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:130023805258 errors:0 dropped:0 overruns:0 frame:0
TX packets:130023805258 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:19290336847188 (17.5 TiB) TX bytes:19290336847188 (17.5 TiB)
virbr0 Link encap:Ethernet HWaddr 52:54:00:3F:C3:47
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
virbr0-nic Link encap:Ethernet HWaddr 52:54:00:3F:C3:47
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
2)在服務管理中關閉NetworkManager服務並禁用自動啟動。(此步驟非常關鍵,本人當時就沒最先執行這步驟,導致所有工作做完後,重啟網路服務後,悲劇發生)
執行命令如下:
service NetworkManager stop --關閉NetworkManager服務
service NetworkManager status
chkconfig NetworkManager off --禁用NetworkManager服務自動啟動
chkconfig NetworkManager --list
3) 在/etc/sysconfig/network-scripts
目錄下建立一個名為ifcfg-bond0
的檔案,編輯該檔案,新增如下內容
vi ifcfg-bond0
BOOTPROTO=none
DEVICE=bond0 --此處注意
ONBOOT=yes --此處注意
IPADDR=10.168.122.13 --將主機的ip地址新增到此處
NETMASK=255.255.255.0
GATEWAY=10.168.122.254
USERCTL=no
TYPE=Ethernet
IPV6INIT=no
依次編輯ifcfg-eth0
、ifcfg-eth1
檔案,將如下內容替換到ifcfg-eth0
、ifcfg-eth1
中。(注意替換前,一定要備份改動前的檔案,並且將檔案copy到/etc/sysconfig/network-scripts
以外的路徑下)
vi ifcfg-eth0
BOOTPROTO=none
DEVICE=eth0 --此處注意
ONBOOT=yes --此處注意
MASTER=bond0 --此處注意
SLAVE=yes --此處注意
USERCTL=no
TYPE=Ethernet
IPV6INIT=no
vi ifcfg-eth1
BOOTPROTO=none
DEVICE=eth1 --此處注意
ONBOOT=yes --此處注意
MASTER=bond0 --此處注意
SLAVE=yes --此處注意
USERCTL=no
TYPE=Ethernet
IPV6INIT=no
4)載入bonding模組,對外虛擬網路介面裝置為bond0,在/etc/modprobe.d/dist.conf
檔案最後加入以下2行
alias bond0 bonding
options bond0 mode=1 miimon=100
關於此處新增的兩行命令的含義,從百度上找到如下解釋: 選項 millmon 是指定隔多長時間來進行鏈路監測,單位是ms。#選項 mode是表示繫結口的工作模式,有0-7共7種模式,常用的有0和1模式,mode=0表示”round-robin”策略,兩張卡同時工作在負載均衡狀態。mode=1表示”active-backup”策略,兩張卡一用一備的備份狀態。
5)重啟網路服務:service network restart
(如果提示命令不對,則執行:/etc/rc.d/init.d/network restart
)
6)驗證是否雙網路卡繫結成功(如果在執行完上述第五個步驟後,伺服器連不上了,那代表悲催了,需要跑機房了。。。因此建議第一次操作先選臺空閒伺服器做個測試,以免對現網環境影響過大)
方法一:
成功的話執行ifconfig -a
顯示的內容是bond0和eth0、eth1網路卡的MAC地址是一樣的。
方法二:
測試bond是否繫結成功:
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0-1 (October 7, 2008)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1 ----eth1主模式
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ac:16:2d:77:1f:cc
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ac:16:2d:77:1f:cd
7)感興趣的可以執行一下如下操作。來測試雙網路卡繫結後的成果。
我們假設網路卡eth0硬體壞了。執行ifdown eth0
則發現,伺服器仍然可以ping通。。。。
這代表冗餘發揮了作用。