1、簡介linux
2、模式vim
注*建議學以前先看這個文章bash
https://blog.51cto.com/sf1314/2071298服務器
一、balance-rr網絡
輪轉策略:按照順序輪流使用每一個接口來發送和接收數據包,提升了負載均衡的能力,可是須要交換機的支持,由於該模式全部端口的mac地址相同,交換機不能識別多個一個Mac地址對應多個端口,因此須要作鏈路聚合 ----Ethernet Channel併發
mode=0負載均衡
二、active-backupide
主備策略:只使用其中一個網卡,當網卡損壞時激活另外的一個網卡oop
mode=1性能
三、balance-xor
平衡策略: 基於所選擇的傳送hash策略
mode=2
四、
廣播策略:全部卡上都接收和發送報文,提升了容錯性
mode=3
五、802.3ad
鏈路聚合模式
802.3ad策略: LACP 鏈路聚合模式,交換機得開啓鏈路聚合,將兩張網卡當作一張來使用,提升鏈路性能,須要交換機支持802.3ad 動態鏈路聚合和服務器硬件支持ethtool。
mode=4
六、balance-tlb
自適應傳輸負載均衡
不須要配置交換機。在每一個網卡會根據上根據當前的負載狀況來分配流量。若是一個網卡出現故障,那麼另一個網卡會接管故障網卡
mode=5
七、balance-alb
自適應負載均衡:包括balance-tlb,不須要另外配置交換機,接受負載均衡經過ARP協商實現
當本機發送ARP請求時,bonding驅動把對端的IP信息從ARP包中複製並保存下來,當ARP應答從對端到達 時,bonding驅動把它的硬件地址提取出來,併發起一個ARP應答給bond中的某個slave。使用ARP協商進行負載均衡的一個問題是:每次廣播 ARP請求時都會使用bond的硬件地址,所以對端學習到這個硬件地址後,接收流量將會所有流向當前的slave。這個問題能夠經過給全部的對端發送更新 (ARP應答)來解決,應答中包含他們獨一無二的硬件地址,從而致使流量從新分佈。當新的slave加入到bond中時,或者某個未激活的slave從新 激活時,接收流量也要從新分佈。接收的負載被順序地分佈(round robin)在bond中最高速的slave上
當某個鏈路被從新接上,或者一個新的slave加入到bond中,接收流量在全部當前激活的slave中所有從新分配,經過使用指定的MAC地址給每一個 client發起ARP應答。下面介紹的updelay參數必須被設置爲某個大於等於switch(交換機)轉發延時的值,從而保證發往對端的ARP應答 不會被switch(交換機)阻截。
mode=6
3、安裝
準備 多網卡主機一臺
網卡橋接
選擇局域網內空閒ip地址一枚
[root@localhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:fd:1d:cf brd ff:ff:ff:ff:ff:ff inet 192.168.3.151/24 brd 192.168.3.255 scope global dynamic eno16777736 valid_lft 258897sec preferred_lft 258897sec inet6 fe80::20c:29ff:fefd:1dcf/64 scope link valid_lft forever preferred_lft forever 3: eno33554984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:fd:1d:d9 brd ff:ff:ff:ff:ff:ff inet 192.168.3.154/24 brd 192.168.3.255 scope global dynamic eno33554984 valid_lft 258897sec preferred_lft 258897sec inet6 fe80::20c:29ff:fefd:1dd9/64 scope link valid_lft forever preferred_lft forever 4: eno50332208: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:fd:1d:e3 brd ff:ff:ff:ff:ff:ff inet 192.168.3.155/24 brd 192.168.3.255 scope global dynamic eno50332208 valid_lft 258897sec preferred_lft 258897sec inet6 fe80::20c:29ff:fefd:1de3/64 scope link valid_lft forever preferred_lft forever
#查看硬件狀態
[root@localhost ~]# nmcli device status 設備 類型 狀態 CONNECTION eno16777736 ethernet 鏈接的 eno16777736 eno33554984 ethernet 鏈接的 有線鏈接 1 eno50332208 ethernet 鏈接的 有線鏈接 2 lo loopback 未管理 --
#查看linux是否支持Bond
[root@localhost ~]# modinfo bondingfilename: /lib/modules/3.10.0-229.el7.x86_64/kernel/drivers/net/bonding/bonding.ko alias: rtnl-link-bond author: Thomas Davis, tadavis@lbl.gov and many others description: Ethernet Channel Bonding Driver, v3.7.1 version: 3.7.1 license: GPL .......... ..........
#以上信息反映機器支持bond
#本人選取其中兩種方式來製做bond綁定,
一種是active-backup,
另一種選擇balance-tlb,而且作相應測試
方式1:nmcli方式
使用nmcli命令來建立bond卡
nmcli connection add type bond ifname bond1 mode 1
nmcli connection add type bond-slave ifname eno33554984 master bond1
nmcli connection add type bond-slave ifname eno50332208 master bond1
nmcli connection add type bond-slave ifname eno16777736 master bond1
#connection add 添加新的鏈接
#con-name 鏈接名稱 暫時沒使用
#type 設備類型
#ifname 接口設備名稱
#master 指定該硬件的master
# 執行完成以上命令後會生成如下文件
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# ll 總用量 248 -rw-r--r--. 1 root root 328 3月 29 18:08 ifcfg-bond-bond1 -rw-r--r--. 1 root root 137 3月 29 18:08 ifcfg-bond-slave-eno16777736 -rw-r--r--. 1 root root 137 3月 29 18:08 ifcfg-bond-slave-eno33554984 -rw-r--r--. 1 root root 137 3月 29 18:08 ifcfg-bond-slave-eno50332208
#修改已經生成的配置文件
[root@localhost network-scripts]# vim ifcfg-bond-bond1 DEVICE=bond1 BONDING_OPTS=mode=active-backup TYPE=Bond BONDING_MASTER=yes BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=bond-bond1 UUID=5ed04865-5802-4fd5-9d80-917d1fadae70ON BOOT=yes IPADDR=192.168.3.200 PREFIX=24 GATEWAY=192.168.3.254 DNS1=192.168.30.202
#重啓網卡
[root@localhost network-scripts]# systemctl restart network
#查看網絡和路由狀態
[root@localhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: eno16777736: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond1 state UP qlen 1000 link/ether 00:0c:29:fd:1d:cf brd ff:ff:ff:ff:ff:ff 3: eno33554984: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond1 state UP qlen 1000 link/ether 00:0c:29:fd:1d:cf brd ff:ff:ff:ff:ff:ff 4: eno50332208: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond1 state UP qlen 1000 link/ether 00:0c:29:fd:1d:cf brd ff:ff:ff:ff:ff:ff 6: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 00:0c:29:fd:1d:cf brd ff:ff:ff:ff:ff:ff inet 192.168.3.200/24 brd 192.168.3.255 scope global bond1 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fefd:1dcf/64 scope link valid_lft forever preferred_lft forever
[root@localhost ~]# ip route default via 192.168.3.254 dev bond1 proto static metric 300 192.168.3.0/24 dev bond1 proto kernel scope link src 192.168.3.200 metric 300
[root@localhost ~]# cat /proc/net/bonding/bond1 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eno16777736 #這爲當前打開的網卡 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eno16777736 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:fd:1d:cf Slave queue ID: 0 Slave Interface: eno33554984 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:fd:1d:d9 Slave queue ID: 0 Slave Interface: eno50332208 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:fd:1d:e3 Slave queue ID: 0
#測試
#三張網卡隨意關閉任意兩張
ifdown em1
#關閉掉兩張網卡後,會有一次斷點,切換網卡的過程
#網卡已經切換爲eno50332208
[root@localhost ~]# cat /proc/net/bonding/bond1 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eno50332208 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eno16777736 MII Status: down Speed: Unknown Duplex: Unknown Link Failure Count: 1 Permanent HW addr: 00:0c:29:fd:1d:cf Slave queue ID: 0 Slave Interface: eno33554984 MII Status: down Speed: Unknown Duplex: Unknown Link Failure Count: 1 Permanent HW addr: 00:0c:29:fd:1d:d9 Slave queue ID: 0 Slave Interface: eno50332208 MII Status: up Speed: 1000 Mbps Duplex: fullLink Failure Count: 0 Permanent HW addr: 00:0c:29:fd:1d:e3 Slave queue ID: 0
#實驗完成
#刪除原有配置
#清除bond網卡配置
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# rm -rf ifcfg-bond-*
#顯示全部活動的鏈接
[root@localhost network-scripts]# nmcli connection show 名稱 UUID 類型 設備 有線鏈接 2 4013b28a-31dd-43b0-9b32-6582a20353f9 802-3-ethernet -- 有線鏈接 1 9cca4859-5085-4cb3-a660-4664fac689c5 802-3-ethernet -- eno16777736 5dcd1c25-9d8b-4c0f-967c-cd0b250ff929 802-3-ethernet -- bond-slave-eno16777736 24c73fe2-9c55-4202-92f3-d4ff259a6d84 802-3-ethernet eno16777736 bond-slave-eno50332208 ea727513-602e-450e-ad36-dd15cc5d2e82 802-3-ethernet eno50332208 bond-slave-eno33554984 ca74b313-4a4e-44e3-bb5b-84d5dfa1d3aa 802-3-ethernet eno33554984 bond-bond1 5ed04865-5802-4fd5-9d80-917d1fadae70 bond bond1
#刪除網卡配置鏈接
[root@localhost network-scripts]# nmcli con del bond-slave-eno50332208 [root@localhost network-scripts]# nmcli con del bond-slave-eno33554984 [root@localhost network-scripts]# cat /proc/net/bonding/bond1 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: NoneCurrently Active Slave: eno16777736 MII Status: up MII Polling Interval (ms): 100Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eno16777736 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 00:0c:29:fd:1d:cf Slave queue ID: 0 [root@localhost network-scripts]# nmcli con del bond-slave-eno16777736 [root@localhost network-scripts]# nmcli con del bond-bond1
網卡恢復
#方式2:cli方式
以文件方式配置Bond
#備份原有網卡配置文件
[root@localhost ~]# mkdir -p /data/backup/network [root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost ~]# cp ifcfg-eno* /data/backup/network/
#由於是新加入的卡,因此沒有配置文件,可是硬件信息中是能夠查到的
[root@localhost network-scripts]# nmcli device status 設備 類型 狀態 CONNECTION eno16777736 ethernet 鏈接的 eno16777736 eno33554984 ethernet 鏈接的 有線鏈接 1 eno50332208 ethernet 鏈接的 有線鏈接 2 lo loopback 未管理 --
[root@localhost network-scripts]# ll 總用量 236 -rw-r--r--. 1 root root 295 8月 25 2015 ifcfg-eno16777736 -rw-r--r--. 1 root root 295 3月 29 19:13 ifcfg-eno33554984 [root@localhost network-scripts]# cp ifcfg-eno16777736 ifcfg-eno33554984
[root@localhost network-scripts]# vim ifcfg-bond5 DEVICE=bond5 BONDING_OPTS="mode=balance-tlb" TYPE=BondBONDING_MASTER=yes BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no NAME=bond5 ONBOOT=yes IPADDR=192.168.3.200 PREFIX=24 GATEWAY=192.168.3.254 DNS1=192.168.30.202 [root@localhost network-scripts]# vim ifcfg-eno16777736 TYPE=Ethernet #BOOTPROTO=dhcp DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=yes NAME=eno16777736 DEVICE=eno16777736 ONBOOT=yes MASTER=bond5 SLAVE=yes [root@localhost network-scripts]# vim ifcfg-eno33554984 TYPE=Ethernet #BOOTPROTO=dhcp DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=yes NAME=eno33554984 DEVICE=eno33554984 ONBOOT=yes MASTER=bond5 SLAVE=yes [root@localhost network-scripts]# vim ifcfg-eno50332208 TYPE=Ethernet #BOOTPROTO=dhcp DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=yes NAME=eno50332208 DEVICE=eno50332208 ONBOOT=yes MASTER=bond5 SLAVE=yes
#重啓網卡
[root@localhost network-scripts]# systemctl restart network
[root@localhost ~]# nmcli connection show 名稱 UUID 類型 設備 eno50332208 d2665055-8e83-58f1-e9e3-49a5fb133641 802-3-ethernet eno50332208 eno16777736 13756690-ac77-b776-4fc1-f5535cee6f16 802-3-ethernet eno16777736 有線鏈接 2 4013b28a-31dd-43b0-9b32-6582a20353f9 802-3-ethernet -- 有線鏈接 1 9cca4859-5085-4cb3-a660-4664fac689c5 802-3-ethernet -- eno33554984 fb67dbad-ec81-39b4-42b1-ebf975c3ff13 802-3-ethernet eno33554984 bond5 d1a49a62-2f2d-2e41-a63d-be3a81b6a2fb bond bond5
[root@localhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: eno16777736: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond5 state UP qlen 1000 link/ether 00:0c:29:fd:1d:cf brd ff:ff:ff:ff:ff:ff 3: eno33554984: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond5 state UP qlen 1000 link/ether 00:0c:29:fd:1d:d9 brd ff:ff:ff:ff:ff:ff 4: eno50332208: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond5 state UP qlen 1000 link/ether 00:0c:29:fd:1d:e3 brd ff:ff:ff:ff:ff:ff 7: bond5: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 00:0c:29:fd:1d:cf brd ff:ff:ff:ff:ff:ff inet 192.168.3.200/24 brd 192.168.3.255 scope global bond5 valid_lft forever preferred_lft forever inet6 fe80::a81d:6bff:feac:5cd6/64 scope link valid_lft forever preferred_lft forever
#我的建議各位跟balance-rr 模式作個對比
[root@localhost ~]# cat /proc/net/bonding/bond5 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: transmit load balancing Primary Slave: None Currently Active Slave: eno16777736 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eno16777736 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:fd:1d:cf Slave queue ID: 0 Slave Interface: eno33554984 MII Status: upSpeed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:fd:1d:d9 Slave queue ID: 0 Slave Interface: eno50332208 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:fd:1d:e3 Slave queue ID: 0
注*模式選擇有如下這些
balance-rr(0)
active-backup(1)
balance-xor (2)
broadcast (3)
802.3ad (4)
balance-tlb (5)
balance-alb (6)