Centos 7下網卡bonding配置之mode4


一、bonding技術

bonding(綁定)是一種linux系統下的網卡綁定技術,可以把服務器上n個物理網卡在系統內部抽象(綁定)成一個邏輯上的網卡,能夠提升網絡吞吐量、實現網絡冗余、負載等功能,有很多優勢。

bonding技術是linux系統內核層面實現的,它是一個內核模塊(驅動)。使用它需要系統有這個模塊, 我們可以modinfo命令查看下這個模塊的信息, 一般來說都支持.

modinfo bonding
filename:       /lib/modules/3.10.0-957.1.3.el7.x86_64/kernel/drivers/net/bonding/bonding.ko.xz
author:         Thomas Davis, tadavis@lbl.gov and many others
description:    Ethernet Channel Bonding Driver, v3.7.1
version:        3.7.1
license:        GPL
alias:          rtnl-link-bond
retpoline:      Y
rhelversion:    7.6
srcversion:     120C91D145D649655185C69
depends:        
intree:         Y
vermagic:       3.10.0-957.1.3.el7.x86_64 SMP mod_unload modversions 
signer:         CentOS Linux kernel signing key
sig_key:        E7:CE:F3:61:3A:9B:8B:D0:12:FA:E7:49:82:72:15:9B:B1:87:9C:65
sig_hashalgo:   sha256
parm:           max_bonds:Max number of bonded devices (int)
parm:           tx_queues:Max number of transmit queues (default = 16) (int)
parm:           num_grat_arp:Number of peer notifications to send on failover event (alias of num_unsol_na) (int)
parm:           num_unsol_na:Number of peer notifications to send on failover event (alias of num_grat_arp) (int)
parm:           miimon:Link check interval in milliseconds (int)
parm:           updelay:Delay before considering link up, in milliseconds (int)
parm:           downdelay:Delay before considering link down, in milliseconds (int)
parm:           use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int)
parm:           mode:Mode of operation; 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp)
parm:           primary:Primary network device to use (charp)
parm:           primary_reselect:Reselect primary slave once it comes up; 0 for always (default), 1 for only if speed of primary is better, 2 for only on active slave failure (charp)
parm:           lacp_rate:LACPDU tx rate to request from 802.3ad partner; 0 for slow, 1 for fast (charp)
parm:           ad_select:802.3ad aggregation selection logic; 0 for stable (default), 1 for bandwidth, 2 for count (charp)
parm:           min_links:Minimum number of available links before turning on carrier (int)
parm:           xmit_hash_policy:balance-alb, balance-tlb, balance-xor, 802.3ad hashing method; 0 for layer 2 (default), 1 for layer 3+4, 2 for layer 2+3, 3 for encap layer 2+3, 4 for encap layer 3+4 (charp)
parm:           arp_interval:arp interval in milliseconds (int)
parm:           arp_ip_target:arp targets in n.n.n.n form (array of charp)
parm:           arp_validate:validate src/dst of ARP probes; 0 for none (default), 1 for active, 2 for backup, 3 for all (charp)
parm:           arp_all_targets:fail on any/all arp targets timeout; 0 for any (default), 1 for all (charp)
parm:           fail_over_mac:For active-backup, do not set all slaves to the same MAC; 0 for none (default), 1 for active, 2 for follow (charp)
parm:           all_slaves_active:Keep all frames received on an interface by setting active flag for all slaves; 0 for never (default), 1 for always. (int)
parm:           resend_igmp:Number of IGMP membership reports to send on link failure (int)
parm:           packets_per_slave:Packets to send per slave in balance-rr mode; 0 for a random slave, 1 packet per slave (default), >1 packets per slave. (int)
parm:           lp_interval:The number of seconds between instances where the bonding driver sends learning packets to each slaves peer switch. The default is 1. (uint)

bonding的七種工作模式: 

bonding技術提供了七種工作模式,在使用的時候需要指定一種,每種有各自的優缺點.

  1. balance-rr (mode=0)       默認, 有高可用 (容錯) 和負載均衡的功能,  需要交換機的配置,每塊網卡輪詢發包 (流量分發比較均衡).
  2. active-backup (mode=1)  只有高可用 (容錯) 功能, 不需要交換機配置, 這種模式只有一塊網卡工作, 對外只有一個mac地址。缺點是端口利用率比較低
  3. balance-xor (mode=2)     不常用
  4. broadcast (mode=3)        不常用
  5. 802.3ad (mode=4)          IEEE 802.3ad 動態鏈路聚合,需要交換機配置
  6. balance-tlb (mode=5)      不常用
  7. balance-alb (mode=6)     有高可用 ( 容錯 )和負載均衡的功能,不需要交換機配置  (流量分發到每個接口不是特別均衡)。

二、Centos7配置bonding

系統: Centos7.5
網卡: ifcfg-eno49、ifcfg-eno50
bond0:10.162.97.41
負載模式: mode4(802.3ad 動態鏈路聚合)

1、關閉和停止NetworkManager服務

systemctl stop NetworkManager.service     # 停止NetworkManager服務 systemctl disable NetworkManager.service # 禁止開機啟動NetworkManager服務

ps: 一定要關閉,不關會對做bonding有干擾

2、加載bonding模塊

modprobe  bonding

沒有提示說明加載成功, 如果出現modprobe: ERROR: could not insert 'bonding': Module already in kernel說明你已經加載了這個模塊, 就不用管了

你也可以使用lsmod | grep bonding查看模塊是否被加載

lsmod | grep bonding
bonding               136705  0 

3、創建基於bond0接口的配置文件

vim /etc/sysconfig/network-scripts/ifcfg-bond0

修改成如下,根據你的情況:

復制代碼
DEVICE=bond0
TYPE=Bond
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.162.97.41
NETMASK=255.255.255.0
GATEWAY=10.162.97.253
DNS1=10.1.0.62
BONDING_MASTER=yes
BONDING_OPTS="mode=4 miimon=100"
復制代碼

上面的BONDING_OPTS="mode=4 miimon=100" 表示這里配置的工作模式是802.3ad 動態鏈路聚合, miimon表示監視網絡鏈接的頻度 (毫秒), 我們設置的是100毫秒, 根據你的需求也可以指定mode成其它的負載模式。

4、修改ifcfg-eno49接口的配置文件

vim /etc/sysconfig/network-scripts/ifcfg-eno49

修改成如下:

復制代碼
TYPE=Ethernet
PROXY_METHOD=none
dBROWSER_ONLY=no
BOOTPROTO=static
DEFROUT=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eno49
UUID=29d2526a-2eec-4a5e-8190-3d1fe5e04f57
DEVICE=eno49.97
ONBOOT=yes
MASTER=bond0
SLAVE=yes
VLAN=yes //此處配置VLAN,因為所處交換機端口為Trunk
TYPE=Vlan
VLAN_ID=97
復制代碼

5、修改ifcfg-eno50接口的配置文件

vim /etc/sysconfig/network-scripts/ifcfg-eno50

修改成如下:

復制代碼
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eno50
UUID=dae63958-841f-4666-9308-28bda92dc66f
DEVICE=eno50.97
ONBOOT=yes
MASTER=bond0
SLAVE=yes
VLAN=yes
TYPE=Vlan
VLAN_ID=97
復制代碼

6、測試

重啟網絡服務

systemctl restart network

查看bond0的接口狀態信息  ( 如果報錯說明沒做成功,很有可能是bond0接口沒起來)

復制代碼
# cat /proc/net/bonding/bond0 [root@bogon ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation // 綁定模式: 當前是ald模式(mode 4), 也就是802.3ad 動態鏈路聚合
Transmit Hash Policy: layer2 (0)
MII Status: up // 接口狀態: up(MII是Media Independent Interface簡稱, 接口的意思)
MII Polling Interval (ms): 100 // 接口輪詢的時間隔(這里是100ms)
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info //802.3ad 信息
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: 20:67:7c:1f:15:f0
Active Aggregator Info:
        Aggregator ID: 1
        Number of ports: 1
        Actor Key: 15
        Partner Key: 1
        Partner Mac Address: 00:00:00:00:00:00

Slave Interface: eno49.97 // 備接口: eno49.97
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 20:67:7c:1f:15:f0
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: monitoring
Partner Churn State: monitoring
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
    system priority: 65535
    system mac address: 20:67:7c:1f:15:f0
    port key: 15
    port priority: 255
    port number: 1
    port state: 197
details partner lacp pdu:
    system priority: 65535
    system mac address: 00:00:00:00:00:00
    oper key: 1
    port priority: 255
    port number: 1
    port state: 3

Slave Interface: eno50.97 // 備接口: eno50.97
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 20:67:7c:1f:15:f8
Slave queue ID: 0
Aggregator ID: 2
Actor Churn State: monitoring
Partner Churn State: monitoring
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
    system priority: 65535
    system mac address: 20:67:7c:1f:15:f0
    port key: 15
    port priority: 255
    port number: 2
    port state: 197
details partner lacp pdu:
    system priority: 65535
    system mac address: 00:00:00:00:00:00
    oper key: 1
    port priority: 255
    port number: 1
    port state: 3
復制代碼

通過ifconfig命令查看下網絡的接口信息

復制代碼
# ifconfig  [root@bogon ~]# ifconfig             
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
        inet 10.162.97.41  netmask 255.255.255.0  broadcast 10.162.97.255
        ether 20:67:7c:1f:15:f0  txqueuelen 1000  (Ethernet)
        RX packets 22039  bytes 1436892 (1.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6687  bytes 678240 (662.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno49: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 20:67:7c:1f:15:f0  txqueuelen 1000  (Ethernet)
        RX packets 16645  bytes 1894648 (1.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7228  bytes 833488 (813.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0x96000000-967fffff  

eno50: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 20:67:7c:1f:15:f8  txqueuelen 1000  (Ethernet)
        RX packets 11163  bytes 1107408 (1.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 791  bytes 119264 (116.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 17  memory 0x95000000-957fffff  

eno51: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 20:67:7c:1f:15:f1  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 17  memory 0x94000000-947fffff  

eno52: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 20:67:7c:1f:15:f9  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 18  memory 0x93000000-937fffff  

eno49.97: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 20:67:7c:1f:15:f0  txqueuelen 1000  (Ethernet)
        RX packets 13004  bytes 1017228 (993.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6404  bytes 658552 (643.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno50.97: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 20:67:7c:1f:15:f0  txqueuelen 1000  (Ethernet)
        RX packets 7632  bytes 351072 (342.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2  bytes 180 (180.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens2f0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 48:df:37:36:a9:24  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xc8300000-c83fffff  

ens2f1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 48:df:37:36:a9:25  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xc8200000-c82fffff  

ens2f2: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 48:df:37:36:a9:26  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xc8100000-c81fffff  

ens2f3: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 48:df:37:36:a9:27  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xc8000000-c80fffff  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 16  bytes 1356 (1.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16  bytes 1356 (1.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
復制代碼

測試網絡高可用, 我們拔掉其中一根網線進行測試, 結論是:

  • 在本次mode=6模式下丟包1個, 恢復網絡時( 網絡插回去 ) 丟包在5-6個左右,說明高可用功能正常但恢復的時候丟包會比較多
  • 測試mode=1模式下丟包1個,恢復網絡時( 網線插回去 ) 基本上沒有丟包,說明高可用功能和恢復的時候都正常
  • mode6這種負載模式除了故障恢復的時候有丟包之外其它都挺好的,如果能夠忽略這點的話可以這種模式;而mode1故障的切換和恢復都很快,基本沒丟包和延時。但端口利用率比較低,因為這種主備的模式只有一張網卡在工作.

引自於:

http://www.cnblogs.com/huangweimin/articles/6527058.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM