bind0配置做過了,但是感覺上怪怪的,環境是虛擬機給了兩塊網卡。然后配置成bind0,但是做好之后發現ping這個bind0的地址是可以的,如果down掉一塊網卡,那么就ping不通bind0的地址了,然后就需要重啟虛擬機的network才可以。同樣的,第一塊網卡up之后,把第二塊網卡down掉,發現還是需要重啟網卡這一手動,這是我不願意接受的。不是說自動切換嗎?怎么沒有呢?
后來網上查需要在交換機做端口聚合,不明白什么意思,難道在虛擬機上做不了?不管了,通過研究發現可以做bind6來嘗試,原文章是這樣說bind的幾種模式的:
常用的有三種模式 mode=0:平衡負載模式,有自動備援,但需要”Switch”支援及設定。 mode=1:自動備援模式,其中一條線若斷線,其他線路將會自動備援。 mode=6:平衡負載模式,有自動備援,不必”Switch”支援及設定。 需要說明的是如果想做成mode 0的負載均衡,僅僅設置這里options bond0 miimon=100 mode=0是不夠的,與網卡相連的交換機必須做特殊配置(這兩個端口應該采取聚合方式),因為做bonding的這兩塊網卡是使用同一個MAC地址.從原理分析一下(bond運行在mode 0下):mode 0下bond所綁定的網卡的IP都被修改成相同的mac地址,如果這些網卡都被接在同一個交換機,那么交換機的arp表里這個mac地址對應的端口就有多 個,那么交換機接受到發往這個mac地址的包應該往哪個端口轉發呢?正常情況下mac地址是全球唯一的,一個mac地址對應多個端口肯定使交換機迷惑了。所以 mode0下的bond如果連接到交換機,交換機這幾個端口應該采取聚合方式(cisco稱為 ethernetchannel,foundry稱為portgroup),因為交換機做了聚合后,聚合下的幾個端口也被捆綁成一個mac地址.(實測中mode0可以通過mac地址欺騙的方式在交換機不設置的情況下不太均衡地進行接收。) mode5和mode6不需要交換機端的設置,網卡能自動聚合,因為做bonding的這兩塊網卡是使用不同的MAC地址。mode4需要支持802.3ad。mode0,mode2和mode3理論上需要靜態聚合方式。
我自己做的實驗如下,做了bond6,配置如下,
centos7系統,都是在/etc/sysconfig/network-scripts下的網卡配置文件寫的
首先是兩塊網卡的配置
第一個:
[root@localhost network-scripts]#cat ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp MASTER=bond6 SLAVE=yes USERCTL=no DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME=ens33 UUID=0422964f-499b-47a7-a6f5-00965fd69d4d DEVICE=ens33 ONBOOT=yes
第二塊如下:
TYPE=Ethernet MASTER=bond6 SLAVE=yes USERCTL=no PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes NAME=ens37 UUID=0422964f-499b-47a7-a6f5-00965fd69d4e DEVICE=ens37 ONBOOT=yes
bond6的配置文件如下:
[root@localhost network-scripts]#cat ifcfg-bond6 DEVICE=bond6 ONBOOT=yes USERCTL=yes BOOTPROTO=none BONDING_OPTS="mode=6 miimon=100" IPADDR=192.168.1.135 NETMASK=255.255.255.0 DNS1=114.114.114.114 GATEWAY=192.168.1.2
然后重啟network
看這個文件可以看到配置成功了沒有:
[root@localhost network-scripts]#cat /proc/net/bonding/bond6 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: adaptive load balancing Primary Slave: None Currently Active Slave: ens37 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens33 MII Status: down Speed: Unknown Duplex: Unknown Link Failure Count: 2 Permanent HW addr: 00:0c:29:86:99:0d Slave queue ID: 0 Slave Interface: ens37 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 00:0c:29:86:99:17 Slave queue ID: 0
這個文件可以列出你bond6的內容信息。
然后我們執行ip命令查看一下:
[root@localhost network-scripts]#ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc pfifo_fast master bond6 state DOWN group default qlen 1000 link/ether 00:0c:29:86:99:17 brd ff:ff:ff:ff:ff:ff 3: ens37: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond6 state UP group default qlen 1000 link/ether 00:0c:29:86:99:0d brd ff:ff:ff:ff:ff:ff 6: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 0a:dd:16:fa:cf:61 brd ff:ff:ff:ff:ff:ff 7: bond6: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:0c:29:86:99:0d brd ff:ff:ff:ff:ff:ff inet 192.168.1.135/24 brd 192.168.1.255 scope global bond6 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe86:990d/64 scope link valid_lft forever preferred_lft forever
可以看到bond6特征。bond6的mac地址和ens37是一樣的,如果現在把ens37給down掉了,此時bond6的mac地址和ens33是一樣。他們是自動切換的。