目錄linux
CentOS7系統能夠將多個網絡接口綁定在一塊兒,來做爲單一的接口去給上層應用使用。算法
bong能夠將多個網卡綁定到一塊兒,可讓兩個或多個接口做爲一個接口,同時提升帶寬,並提供網絡鏈路的冗餘,當有其中一塊網卡故障的時候,不會中斷服務器的業務。shell
# 對於CentOS系統默認會加載bonding模塊,咱們也可使用root用戶手動加載模塊** # 臨時加載模塊,重啓失效。 modprobe --first-time bonding # 永久加載模塊 modprobe bonding # 查看模塊信息 modinfo bonding
b-1)、建立bond接口,在 /etc/sysconfig/network-scripts/ 目錄中建立名爲 ifcfg-bondN 的文
件,使用接口號碼替換 N,好比 0vim
### 建立bond接口 # vim /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 //和文件名中的ifcfg-bond0中的bond0是一致的。 NAME=bond0 //設備名字,爲了NetworkManage方便管理,和DEVICE保持一致 TYPE=Bond //TYPE要設置成Bond,表示該接口爲bond接口 BONDING_MASTER=yes IPADDR=192.168.1.1 PREFIX=24 ONBOOT=yes BOOTPROTO=none BONDING_OPTS="mode=4 miion=100" //bond選項,引號裏面的內容,須要配置,這裏配置了以後,就不須要配置
b-2)、修改物理接口的配置文件服務器
### vim /etc/sysconfig/network-scripts/ifcfg-em1 DEVICE=em1 ONBOOT=yes HOTPLUG=no NM_CONTROLLED=no PEERDNS=no MASTER=bond0 // SLAVE=yes // BOOTPROTO=none
b-3)、驗證、查看bond網絡
### 查看bond0的綁定結果 [root@control1 network-scripts]# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: em1 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: em1 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: b8:ca:3a:6c:49:68 Slave queue ID: 0 Slave Interface: em2 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: b8:ca:3a:6c:49:6a Slave queue ID: 0
到這裏,咱們的bond能夠直接用了,若是想將bond綁定到ovs上面,能夠看下面的步驟負載均衡
### 安裝openvswitch yum install -y openvswitch systemctl enable openvswitch systemctl start openvswitch
b-1)、修改bond網卡工具
### # vim /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 ONBOOT=yes HOTPLUG=no NM_CONTROLLED=no PEERDNS=no DEVICETYPE=ovs TYPE=OVSPort OVS_BRIDGE=br-ex MACADDR="b8:ca:3a:6c:46:b0" BONDING_OPTS="mode=802.3ad miimon=100" MTU=9000
b-2)、建立br-ex,並定義br-ex爲ovs虛擬網橋。code
### # vim /etc/sysconfig/network-scripts/ifcfg-br-ex DEVICE=br-ex ONBOOT=yes HOTPLUG=no NM_CONTROLLED=no DEVICETYPE=ovs TYPE=OVSBridge MTU=9000 OVS_EXTRA="set bridge br-ex fail_mode=standalone"
模式0(mode=0,round-robin):此模式使用輪詢策略,即順序的在每個被bond的網卡上發送數據包,這種模式提供負載均衡和容錯能力。Bond0能夠保證bond虛擬網卡和被bond的兩張或多張物理網卡擁有相同的MAC地址,其中bond虛擬網卡的MAC地址是其中一張物理網卡的MAC地址,而bond虛擬網卡的MAC地址是根據bond本身實現的一個算法來選擇的。
在bond0模式下,若是一個鏈接或者會話的數據包從不一樣的網口發出,途中再通過不一樣的鏈路,則在客戶端頗有可能會出現數據包無序到達的現象,而無序到達的數據包通常須要從新發送,這樣網絡的吞吐量就會降低。同時,若是作bond0的兩張或多張網卡接到了同一交換機上,還需對其配置聚合模式。blog
模式1(mode=1,active-backup):此模式使用主被策略(熱備)。在全部作bond1的物理網卡中,同一時刻只有一張網卡被激活,當且僅當活動網卡失效時纔會激活其餘的網卡。這種模式下作bond的兩張或多張網卡的MAC地址和Bond虛擬網卡的MAC地址相同,而Bond的MAC地址是Bond建立啓動後活動網卡(Active Slave)的MAC地址。這種模式要求主被網卡能快速的切換,即當主網卡出現故障後能迅速地切換至備用網卡。切換過程當中,上層的應用幾乎不受影響,由於Bond的驅動程序會臨時接管上層應用的數據包,存放至數據緩衝區,等待備用網卡啓動後再發送出去。可是若是切換時間過長,則會引發緩衝區的溢出,致使丟包。
模式2(mode=2,balance-xor):xor爲異或運算(二進制位相異爲1,相同爲0)。此模式的默認選擇策略是:
選擇網卡的序號=(源MAC地址 XOR 目標MAC地址) % Slave網卡(從網卡)的數量。
其餘的傳輸策略能夠經過xmit_hash_policy配置項指定。
模式3(mode=3,broadcast):使用廣播策略,數據包會被廣播至全部Slave網卡進行傳送。
模式4(mode=4,802.3ad):使用動態連接聚合策略,啓動時會建立一個聚合組,全部Slave網卡共享一樣的速率和雙工設定。
必要條件:
1.支持使用ethtool工具獲取每一個slave網卡的速率和雙工設定;
2.須要交換機支持IEEE 802.3ad 動態鏈路聚合(Dynamic link aggregation)模式
模式5(mode=5,balance-tlbtransmitload balancing):基於每一個slave網卡的速率選擇傳輸網卡。
必要條件:支持使用ethtool工具獲取每一個slave網卡的速率。
模式6(mode=6,balance-alb,Adaptive load balancing):該模式包含了bond5模式,同時還支持對IPV4流量接收時的負載均衡策略(receive load balance, rlb),並且不須要任何交換機的支持。
必要條件:
配置bond 模式主要是爲了和交換機作協商。通常交換機支持LACP鏈路聚合,交換機的LACP又分爲靜態和動態。下面是交換機的兩種聚合方式介紹:
#################################### 1,靜態: mode on,手動強制模式: 不發送也不接收LACP協商報文,交換機物理端口被強制捆綁到etherchannel,數據包根據聚合口負載均衡模式在多個物理口上傳輸。通常默認的爲基於包的負載均衡,即在多個網口之間輪詢發送數據包。使用這種聚合模式時,對端也必須是mode on,強制造成etherchannel。 ######################################## 2,動態: active,主動協商模式: 交換機聚合口主動發出LACPDU報文,與對端符合802.3ad規範的動態聚合口主動協商。 通常推薦使用主動模式。 passive,被動協商模式: 交換機聚合口只接收LACPDU報文,被動與對端符合802.3ad規範的動態聚合口進行協商。
問題:那麼服務器的bond 和交換機的鏈路聚合是如何匹配的?