天天看點

如何為Hadoop叢集伺服器綁定雙萬兆網卡

作者:羅康

1     文檔編寫目的

在搭建Hadoop叢集時,要求網絡使用以太網,最低要求使用千兆網絡,推薦使用萬兆網絡,标準配置是資料網絡配備雙萬兆網卡,管理網絡配備雙千兆網卡。使用雙萬兆網卡的好處有以下幾點:

  • 提高了Hadoop叢集的吞吐能力;
  • 提供網絡備援,把多塊網卡綁定到一個IP位址,當一塊網卡發生實體性損壞的情況下,仍然能夠提供正常的服務,不會因為單塊網卡故障而導緻節點不可用。

本文将主要講述如何為Hadoop叢集伺服器綁定雙萬兆網卡,以綁定一台伺服器的萬兆網卡為例,其他伺服器操作類似,所有伺服器都必須綁定。

測試環境:作業系統版本為Redhat 7.2

文章目錄結構:

    1.  文檔編寫目的

    2.  Linux Bonding

    2.1 Linux Bonding介紹

    2.2 Bond mode介紹

    3.  綁定雙萬兆網卡

    3.1 定位萬兆網卡

    3.2 綁定雙萬兆網卡

    4.  功能驗證

    5.  總結

2     Linux Bonding

2.1 Linux Bonding介紹

Linux Bonding 驅動提供了一個把多個網絡接口裝置捆綁為單個的網絡接口裝置來使用的功能,用于網絡負載均衡及網絡備援,在生産場景中是一種常用的技術。可以通過以下指令确定核心是否支援 bonding:

# cat /boot/config-3.10.0-327.el7.x86_64  | grep -i CONFIG_BONDING

不同作業系統版本,紅色字型部分可能有所不同,執行該指令後,得到如下類似輸出則表示支援bonding:

如何為Hadoop叢集伺服器綁定雙萬兆網卡

2.2 Bond mode介紹

Bond mode一共有7種,分别對應0~6

mode=0:平衡負載模式,有自動備援,但需要“Switch”(交換機)支援及設定。

特點:傳輸資料包順序是依次傳輸。

mode=1:自動備援模式,其中一條線若斷線,其他線路将會自動備援。

mode=2:Balance-XOR policy(平衡政策)

特點:基于指定的傳輸HASH政策傳輸資料包,此模式提供負載平衡和容錯能力。

mode=3:Broadcast(廣播政策)

特點:在每個slave接口上傳輸每個資料包,此模式提供了容錯能力。

mode=4:IEEE 802.3ad(動态連結聚合)

特點:建立一個聚合組,它們共享同樣的速率和雙工設定。根據802.3ad規範将多個slave工作在同一個激活的聚合體下。

必要條件:

條件1:ethtool支援擷取每個slave的速率和雙工設定;

條件2:switch(交換機)支援IEEE802.3ad Dynamic link aggregation;

條件3:大多數Switch(交換機)需要經過特定配置才能支援802.3ad模式。

mode=5:Adaptive transmit load balancing(擴充卡傳輸負載均衡)

特點:不需要任何特别的Switch(交換機)支援的通道bonding。在每個slave上根據目前的負載(根據速度計算)配置設定外出流量。如果正在接受資料的slave出故障了,另一個slave接管失敗的slave的MAC位址。

必要條件:ethtool支援擷取每個slave的速率。

mode=6:Adaptive load balancing(擴充卡适應性負載均衡)

特點:表示負載均衡方式,兩塊網卡都工作,不需要交換機作支援。

3     綁定雙萬兆網卡

3.1  定位萬兆網卡

1、登入任意一台伺服器,使用“ip a”指令找到狀态為“UP”的網卡,我這裡兩塊萬兆網卡對應裝置是eno50和ens3f1

如何為Hadoop叢集伺服器綁定雙萬兆網卡

注意,我這裡已經綁定了雙萬兆網卡,是以能看到我這兩塊網卡的master是bond0

2、可能存在多塊網卡,執行“ethtool eno50”指令,确認狀态為“UP”的網卡是否為萬兆網卡,其他網卡類似。

如何為Hadoop叢集伺服器綁定雙萬兆網卡
如何為Hadoop叢集伺服器綁定雙萬兆網卡

3.2 綁定雙萬兆網卡

1、進入/etc/sysconfig/network-scripts/目錄

cd /etc/sysconfig/network-scripts/

2、建立ifcfg-bond0檔案,添加内容如下:

DEVICE=bond0

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.1.1  #IP位址

NETMASK=255.255.255.128  #掩碼值

GATEWAY=192.168.1.126  #網關位址

USERCTL=no  #非root使用者不可以控制該網卡

NM_CONTROLLED=no  #網卡不給NetworkManager管理

BONDING_OPTS="mode=4 miimon=100  xmit_hash_policy=layer2+3"

紅色字型部分需要依據實際情況修改,這裡解釋下BONDING_OPTS配置項,mode=4配置的是動态鍊路聚合;miimon=100代表系統每100ms監測一次鍊路連接配接狀态,如果有一條線路不通就轉入另一條線路;xmit_hash_policy=layer2+3設定的是外出流量的slave選舉政策。

3、修改ifcfg-eno50和ifcfg-ens3f1檔案,建議修改前備份。檔案内容如下:

[root@bigdata31 network-scripts]# cat  ifcfg-eno50

DEVICE=eno50

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0  #配置master為bond0

SLAVE=yes   #啟用slave

USERCTL=no

NM_CONTROLLED=no

[root@bigdata31 network-scripts]# cat  ifcfg-ens3f1

DEVICE=ens3f1

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0  #配置master為bond0

SLAVE=yes   #啟用slave

USERCTL=no

NM_CONTROLLED=no

4、修改完成後,重新開機網絡服務

systemctl restart network

4     功能驗證

1、執行“ip a”指令,可以看到bond0,并且eno50和ens3f1的master均為bond0,IP位址一緻。

如何為Hadoop叢集伺服器綁定雙萬兆網卡

2、使用ethtool工具檢視bond0的帶寬

如何為Hadoop叢集伺服器綁定雙萬兆網卡

5     總結

1、通過Linux Bonding可以把多塊網卡綁定為一塊邏輯網卡,所有網卡共用一個IP位址;

2、通過ethtool工具可以檢視網卡帶寬等資訊;

3、解綁雙網卡操作類似,反向操作,還原配置即可。

繼續閱讀