Centos下實現多網卡綁定

實現多網卡綁定在Centos6和Centos7可采用bonding方式,Centos7上team網絡組也可實現,并且功能更強大。

  • Linux bonding 模塊提供一種將多個網卡聚合成一塊邏輯捆綁網卡的實現方法。 捆綁的網卡擁有多種模式,根據模式的特性,可實現網絡負載均衡,網絡冗余切換,提高網絡吞吐量等功能。

大多流行Linux發行版都已裝載bonding模塊,及其用戶控制工具ifenslave。查詢語句:

modinfo bonding


  • “頻道綁定”、“以太網綁定”、“端口聚合”、“頻道成組”、“NIC 成組”、“鏈接合并” 等等。這個最初在 Linux 內核中應用的概念泛指“綁定”。Centos7上以網絡組代表這個概念的最新應用。網絡組依靠teamd模塊驅動實現。

檢查teamd模塊語句:

rpm -q teamd

一、bonding方式

bonding參數介紹

設定bonding 驅動參數值,以配置成需要的所需工作方式。以下并未列出全部參數,更多詳見文檔

/usr/share/doc/kernel-doc-2.6.32/Documentation/networking/bonding.txt

此文檔需要安裝kernel-doc rpm包。

1、mode模式設定

指定一種網卡綁定策略。常用模式為0,1,4,6。

balance-rr or 0 

    round-robin,平衡輪循策略。依次在活動的slave上傳輸數據包。

    次模式提供負載均衡,網絡冗余。

active-backup or 1

    主備策略。只有一個slave處于激活工作狀態,當且僅當活動的slave失敗時,去激活下一個slave工作。為避免交換機產生混亂,綁定網口的MAC地址對外只有一個接口上可見。

    此模式提供網絡冗余。

balance-xor or 2

     XOR策略?;谥付ǖ膫鬏擧ASH策略傳輸數據包。缺省的策略是:(源MAC地址 XOR 目標MAC地址)% slave數量。其他的傳輸策略可以通過xmit_hash_policy選項指定。

    此模式提供負載平衡和網絡冗余。

broadcast or 3

    廣播策略。在所有slave上傳輸所有數據包。

    此模式提供網絡冗余。

802.3ad or 4

    IEEE 802.3ad 鏈接聚合策略。創建一個聚合組,它們共享同樣的速率和雙工設定。根據802.3ad規范將多個slave工作在同一個激活的聚合體下。

      條件1:ethtool支持獲取每個slave的速率和雙工設定

      條件2:switch(交換機)支持IEEE802.3ad Dynamic link aggregation。多數交換機需要配置啟用802.3ad模式。

    此模式可提高網絡吞吐量。

balance-tlb or 5

    適應傳輸負載均衡策略。在每個slave上根據當前的負載(根據速度計算)分配外出流量。如果正在接受數據的slave出故障了,另一個slave接管失敗的slave的MAC地址。

    條件:ethtool支持獲取每個slave的速率和雙工設定

    此模式提供負載平衡和網絡冗余。

balance-alb or 6

    適應負載均衡模式。該模式包含了balance-tlb模式,同時加上針對IPV4流量的接收負載均衡(receiveload balance, rlb)。接收負載均衡是通過ARP協商實現的。bonding驅動截獲本機發送的ARP應答,并把源硬件地址改寫為bond中某個slave的唯一硬件地址,從而使得不同的對端使用不同的目標硬件地址來和本機通信。

    條件1ethtool支持獲取每個slave的速率;

      條件2:底層驅動支持設置某個設備的硬件地址。

      此模式支持負載均衡和網絡冗余。

需要說明的是:active-backup、balance-tlb 和 balance-alb 模式不需要交換機的任何特殊配置。其他綁定模式需要配置交換機以便整合鏈接。

2、fail_over_mac

指定active-backup模式下bond及slave的MAC地址設定

none or 0

    默認值。激活某一slave時,將所有slave及bond設置為該設備的MAC地址。

active or 1

    bond的MAC地址跟隨當前活動slave的MAC地址。在slave失敗切換時,bond的MAC地址進行改變,而不是slave。這種模式適合slave設備不能自己更改MAC地址的情況。

follow or 2

    bond的MAC地址進行通常性選擇。通常,bond的MAC地址被設定為第一個激活的slave,但其他處于備用狀態下的slave不會被設定該MAC地址。

3、miimon

MII 鏈路檢測頻率設定,單位為毫秒,默認值為0。

4、primary

設定值為網卡設備名(eth0,eth1)。指定active-backup模式下,只要該slave可用時,總是指定其為活動slave。


配置實例

在目錄/etc/sysconfig/network-scripts/,使用配置文件ifcfg-bondN創建bonding組,N為接口序號。

bond配置文件

DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=10.1.252.234
PREFIX=16
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="miimon=100 mode=1 primary=eth1 fail_over_mac=1"

這里指定mode模式為1,即active-backup,監聽間隔為100毫秒,主設備為eth1。如果指定primary選項,fail_over_mac值要指定為1。

slave配置文件

DEVICE=eth1
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

DEVICE=eth2
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

配置完成后,重啟網絡服務,注意在Centos6上關掉NetworkManager服務。

service network restart

查看接口狀態,slave的MAC地址設為不同地址,bond0跟隨活動slave的MAC地址,因為fail_over_mac=1。狀態都為up。

bond0可以使用命令ifup bond0/ifdown bond0啟用或禁用

blob.png

查看bonding狀態

cat /proc/net/bonding/bond0

可以看到模式,主設備信息,當前活動slave,及各slave狀態。

blob.png

冗余測試試驗

從另外一個主機ping bond0 IP:10.1.252.234。網絡連通。

blob.png

剛才查看bond狀態,可知活動slave為eth1,現在在虛擬機控制臺斷掉eth1

bond狀態信息中,活動slave已切換為eth2,而且eth1狀態為down

blob.png

查看接口MAC,bond0跟隨eth2的MAC地址blob.png

網絡ping沒有問題,此處體現了active-backup模式的冗余功能。

blob.png

現在恢復eth1,

blob.png

網絡連通沒問題

blob.png

二、網絡組方式

網絡組的守護進程,teamd,使用libteam控制一個網絡組驅動的一個實例,此實例添加硬件設備驅動多個實例來組成網絡連接的成組。網絡組驅動對內核其他部分呈現一個接口來調用,這個接口一般命名為team0,team1之類。用戶可以以JASON格式配置一個網絡組實例,配置當中用runner來指定teamd運行的特性,相當于bonding方式中的mode。

主接口和從屬接口的默認行為:

  1. 啟動主接口不會自動啟動端口接口。

  2. 啟動端口接口總是會啟動主接口。

  3. 停止主接口總是會停止端口接口。

  4. 沒有端口的主機可啟動靜態 IP 連接。

  5. 沒有端口的主機在啟動 DHCP 連接時會等待端口。

  6. 添加附帶載波的端口后,使用 DHCP 連接的主機會等待端口完成連接。

  7. 添加不附帶載波的端口后,使用 DHCP 連接的主機會讓端口繼續等待。

runner可配置成:  

  • broadcast(可將數據傳送到所有端口)

  • round-robin(可按順序將數據傳送到所有端口)

  • active-backup(使用一個端口或鏈接時其他則處于備用狀態)

  • loadbalance(使用主動 Tx 負載平衡及基于 BPF 的 Tx 端口選擇程序)

  • lacp(采用 802.3ad 鏈接合并控制協議)

配置實例

使用ifcfg文件配置一個網絡組,路徑為/etc/sysconfig/network-scripts/ifcfg-team0

配置主接口文件

DEVICE=team0
DEVICETYPE=Team
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.1.252.235
PREFIX=16
TEAM_CONFIG='{"runner": {"name": "activebackup","hwaddr_policy": "by_active"}}'

這里指定運行方式為activebackup,hwaddr_policy相當于bonding中的fail_over_mac參數,指定硬件地址策略為by_active。

配置從屬接口文件

ifcfg-tp1

DEVICE=eno33554984
NAME=tp1
DEVICETYPE=TeamPort
ONBOOT=yes
TEAM_MASTER=team0
TEAM_PORT_CONFIG='{"prio": 100}'

ifcfg-tp2

DEVICE=eno50332208
NAME=tp2
DEVICETYPE=TeamPort
ONBOOT=yes
TEAM_MASTER=team0
TEAM_PORT_CONFIG='{"prio": 50}'

這里指定了端口優先權。

~]$ ifup team0    #啟動team0主接口,創建守護進程teamd
~]$ teamdctl team0 state    #查看teamd狀態

blob.png

blob.png

可以看到主接口已創建,但是從屬接口沒有加進來。ip命令查看,team0處于down狀態。

~]$ ifup tp1
~]$ ifup tp2           #啟動從屬接口

blob.pngblob.png

可以看到team0 網絡組已正常運行。


更多信息查詢請參考:rhel7聯網指南–網絡組






原創文章,作者:cutemsyu,如若轉載,請注明出處:http://www.www58058.com/45043

(0)
cutemsyucutemsyu
上一篇 2016-09-13
下一篇 2016-09-13

相關推薦

  • 磁盤管理

    磁盤管理

    Linux干貨 2017-10-27
  • 馬哥教育網絡班21期-第九周課程練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash m=0 n=0 for i in `awk -F: '{print $NF}'&nb…

    Linux干貨 2016-09-15
  • 網絡接口配置-bonding

    網絡接口配置-bonding ?Bonding 就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。當然,直接給兩塊網卡設置同一IP地址是不可能的。通過bonding,虛擬一塊網卡對外提供連接,物理網卡的被修改為相同的MAC地址。 Bonding的工作模式 ?Mode 0 (balance-rr) 輪轉(Round-robin)策略:從頭…

    Linux干貨 2016-09-05
  • Linux GNU AWK使用

                                    Linux GNU AWK使用 本章內容: awk介紹 awk基本用法 awk變量 awk格式化 awk操作符 awk條件判斷…

    系統運維 2016-10-01
  • 第二周練習題

    創建/tmp目錄下的:a_c,a_d,b_c,b_d; ~]# mkdir -pv /tmp/{a_{c,d},b_{c,d}} 創建如下目錄: ~]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,…

    Linux干貨 2016-11-01
  • Linux磁盤管理及其相關命令使用

    Linux磁盤及文件系統    CPU MEMORY(RAM) I/O    I/O:disks entercard    Disks:持久存儲數據    接口類型:      IDE(ata):并行 133MB/s     &n…

    Linux干貨 2016-08-26
欧美性久久久久