Linux下bond雙網卡綁定


bond,是一種雙網卡綁定技術。即將多塊物理網卡綁定成一個邏輯網卡,並實現網卡冗餘、流量均衡等的一種可靠性強且高可用技術。centos

七種bond模式:網絡

1、mod=0即banlance-rr(平衡輪循環策略)負載均衡

特色:傳輸數據包的順序是依次傳輸,第一個走eth0,第二個包走eth1……一直這樣循環下去,直到傳輸完成。該模式提供負載均衡和容錯能力。ide

假如當一個鏈接或會話的數據包從不一樣的接口發出,並通過不一樣的鏈路,客戶端可能會出現數據包無序到達的狀況,這樣致使無序到達的數據需從新被髮送,便會致使網絡的吞吐量的降低。oop

 

2、mod=1即active-backup(主-備份策略)centos7

特色:只有一個網卡設備處於活動狀態,當處於primary的網卡出現故障或宕掉,便會當即將slave網卡轉換爲master網卡,接應原來主網卡的流量傳輸。該模式只提供了容錯的能力。spa

網卡的mac地址是獨一的,是bond的mac地址是惟一的,這也避免了交換機發生混亂,產生arp廣播風暴。一方面該模式可以提供網卡鏈接的可用性;另外一方面只有一塊網卡處理活躍狀態,資源的利用率低。rest

 

3、mod=2即balance-xor(平衡策略)接口

特色:基於指定的傳輸HASH策略傳輸數據包。該模式提供負載均衡和容錯能力。ip

 

4、mode=3即broadcast(廣播策略)

特色:在每一個slave接口上傳輸每一個數據包,該模式提供了容錯能力。

 

5、mod=4即802.3ad(IEEE802.3ad動態連接聚合)

特色:建立一個聚合組,它們共享一樣的速率和雙工設定。外出流量slave選舉是基於傳輸hash策略,該策略能夠經過xmit_hash_policy選項從缺省的XOR策略改變到其餘策略。

條件:ethbool支持獲取每一個slave的速率和雙工設定;交換機支持IEEE802.3ad;

大多數交換機須要通過特定配置才能支持802.3ad模式。

 

6、mod=5即balance-tlb(適調器傳輸負載均衡)

特色:不須要任何特別的交換機支持的通道bonding。在每一個slave根據當前的負載分配外出流量。若是正在接受數據的slave出現故障了,另外一個slave接管失敗的slave的mac地址。

條件:ethbool支持獲取每一個slave的速率。

 

7、mode=6即balance-alb(適調器適應性負載均衡)

特色:該模式包含了balance-tlb模式,同時加上針對ipv4流量的接收負載均衡,並且不須要交換機的支持。接收負載均衡是經過ARP協商實現的。

 

 

實驗以centos7.2進行網卡綁定的過程:

1、建立一個bond0

[root@bond ~]# cd /etc/sysconfig/network-scripts/

[root@bond network-scripts]# cat ifcfg-bond0 

DEVICE=bond0

BOOTPROTO=static

ONBOOT=yes

IPADDR=172.25.254.200

NETMASK=255.255.255.0

GATEWAY=172.25.254.2

NETWORK=172.25.254.0

DNS1=202.96.134.133

BONDING_OPTS="mode=1 miimon=100 primary=eno16777736"

USERCTL=no

[root@bond network-scripts]# 

 

2、修改雙網卡的配置文件

[root@bond network-scripts]# cat ifcfg-eno16777736 

DEVICE=eno16777736

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0

SLAVE=yes

USERCTL=no

NM_CONTORLLED=no

[root@bond network-scripts]# cat ifcfg-eno33554992 

DEVICE=eno33554992

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0

SLAVE=yes

USERCTL=no

NM_CONTORLLED=no

[root@bond network-scripts]# 

 

3、重啓網絡服務

[root@bond network-scripts]# systemctl restart network

 

#加載bonding模塊

[root@bond network-scripts]# cat /etc/modprobe.d/bonding.conf 

alias bond0 bonding

options bond0 miimon=100 mode=1

[root@bond network-scripts]# modprobe bonding

 

4、實驗驗證

[root@bond network-scripts]# ip add show

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 bond0 state UP qlen 1000

    link/ether 00:0c:29:fa:56:68 brd ff:ff:ff:ff:ff:ff

3: eno33554992: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000

    link/ether 00:0c:29:fa:56:68 brd ff:ff:ff:ff:ff:ff

4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 

    link/ether 00:0c:29:fa:56:68 brd ff:ff:ff:ff:ff:ff

    inet 172.25.254.200/24 brd 172.25.254.255 scope global bond0

       valid_lft forever preferred_lft forever

    inet6 fe80::20c:29ff:fefa:5668/64 scope link 

       valid_lft forever preferred_lft forever

[root@bond network-scripts]# 

 

5、經過/proc/net/bonding/bond0進行查看模式以及網卡狀態等信息

[root@bond 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: eno16777736 (primary_reselect always)

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:fa:56:68

Slave queue ID: 0


Slave Interface: eno33554992

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:0c:29:fa:56:72

Slave queue ID: 0

[root@bond network-scripts]# 

 

6、當處於active的網卡宕掉後,slave網卡便會當即接應它的任務

[root@bond ~]# ifconfig eno16777736 down 

[root@bond ~]# cat /proc/net/bonding/bond0 

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)


Bonding Mode: fault-tolerance (active-backup)

Primary Slave: eno16777736 (primary_reselect always)

Currently Active Slave: eno33554992

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:fa:56:68

Slave queue ID: 0


Slave Interface: eno33554992

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:0c:29:fa:56:72

Slave queue ID: 0


[root@bond ~]# ping baidu.com

PING baidu.com (180.149.132.47) 56(84) bytes of data.

64 bytes from 180.149.132.47: icmp_seq=1 ttl=128 time=39.4 ms

64 bytes from 180.149.132.47: icmp_seq=2 ttl=128 time=39.3 ms

64 bytes from 180.149.132.47: icmp_seq=3 ttl=128 time=39.2 ms

64 bytes from 180.149.132.47: icmp_seq=4 ttl=128 time=39.1 ms

64 bytes from 180.149.132.47: icmp_seq=5 ttl=128 time=40.0 ms

相關文章
相關標籤/搜索