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 15:10
下一篇 2016-09-13 15:19

相關推薦

  • N22-第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp -r /etc/skel /home/tuser1    (復制/etc/skel為/home/tuser1) [root@localho…

    Linux干貨 2016-09-05
  • 馬哥教育網絡班21期第3周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 who | cut -d" " -f 1 |sort |uniq 2、取出最后登錄到當前系統的用戶的相關信息。 last | head -…

    Linux干貨 2016-07-29
  • 文件管理命令及變量基礎

    文件管理工具:cp,    mv,     rm       cp命令:copy 源文件;目標文件 單源復制: cp [OPTION]….[-T]  SOURCE  DEST 多源復制:cp [OPTION] ….SOURCE…DIR…

    Linux干貨 2016-12-21
  • 初學Linux

       已經學習了Linux一周了,從原來的設計網頁、動畫影視制作、3D模型到現在的黑白界面虛擬世界,從原來吃睡由我到現在重回高三生活,說實話,一開始還是不太能適應的,尤其是眼睛,酸脹痛。不過,越努力越幸運,也覺得linux其實很有意思。。以下是我第一篇微博的內容,也是我學習linux一周所總結的知識。 首先,學習一門知識就要先了解他的歷史…

    Linux干貨 2017-07-15
  • 裝飾器

    裝飾器(Decorator) 裝飾器推導過程 需求 一個加法函數,想增強它的功能,能夠輸出被調用過以及調用的參數信息 def add(x,y): return x + y 增加信息輸出功能 def add(x,y): print(‘call {},{}+{}’.format(add.__name__, x, y)) return x + y 不足:打印語句的…

    2017-10-23
  • 十四.Linux博客-2016年8月22日數組

    格式說明: 操作 概念 命令 說明及舉例 十四.數組 數組概念 變量:存儲單個元素的內存空間數組:存儲多個元素的連續的內存空間,相當于多個變量的集合。數組名和索引索引:編號從0開始,屬于數值索引注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引,bash4.0版本之后開始支持。bash的數組支持稀疏格式(索引不連續) 聲明數組declare -…

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