Linux(CentOS7/RHEL7)のBondingのmodeと設定確認方法、スイッチのLink Aggregation設定との組合せ

LinuxサーバではスイッチでのLink Aggregationに相当する機能のことを”Bonding(ボンディング)“と呼びます。また、Bondingに参加する物理インタフェースのことをスレーブインタフェースと呼びます。また、Bondingを司る論理インタフェースのことをマスターインタフェースと呼びます。

スポンサーリンク


スイッチのLink Aggregation と Linuxサーバ の Bonding を接続する際、Linuxサーバ側では以下のモードが選べます。

mode# mode name 説明 スイッチの
Link Aggre-
gation設定
0 balance-rr ・ラウンドロビンによる負荷分散での
 送信
・受信は全てのスレーブインタフェース
 で可能
Static
1 active-backup ・1つのスレーブインタフェースのみを
 Activeとし、送信
・受信はActiveポートからのみARP応答
 することで誘導
無し
2 balance-xor ・Link AggregationのStaticモードと同じ
・送信元/宛先情報を元に負荷分散
・負荷分散に使う情報はパラメータである
 xmit_hash_policyによって設定可能
・受信は全てのスレーブインタフェース
 で可能
Static
3 broadcast ・全てのスレーブインタフェースから
 同じパケットを送信
・受信は全てのスレーブインタフェース
 で可能
・冗長化はできるが実用的ではない
Static
4 802.3ad ・LACPを使ったLink Aggregationを実現
・送信元/宛先情報を元に負荷分散
・負荷分散に使う情報はパラメータである
 xmit_hash_policyによって設定可能

・受信はLACPでネゴの取れたインタ
 フェースのみから可能
LACP
5 balance-tlb ・スレーブインタフェースの負荷(Load)
 に応じた負荷分散での送信
・受信は全てのスレーブインタフェース
 で可能
Static
6 balance-alb ・送信はbalance-tlbと同じ
・受信は負荷に応じてARP応答するインタ
 フェースを変更することで誘導
無し

一般的によく使われるのはmode=1,2,4です。

0は構成によってはフレーム到達順序が逆になるなどで効率が悪くなる可能性があるため、推奨されません。

スポンサーリンク
スポンサーリンク

負荷分散方式

mode=2もしくは4においては、送信の負荷分散方式を「xmit_hash_policy」というパラメータで決めることができます。

デフォルトでは xmit_hash_policy=0(layer2:送信元MAC/宛先MAC) となるため、宛先が他セグメントとの通信がメインのサーバにおいては偏りが発生する可能性があります。例えばmode=4にして、xmit_hash_policyを設定しない場合は以下のようになります。

# cat /proc/net/bonding/bond0
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)

解消するためには、xmit_hash_policy=1(layer3+4:送信元IP&port/宛先IP&port)やxmit_hash_policy=2(layer2+3:送信元MAC&IP/宛先MAC&IP)を指定します。

Bondingの設定

RHEL7 / CentOS7 での Bondingの設定は以下の手順で実施します。

1. bonding のモジュールのロード

# modprobe –first-time bonding

2. /etc/sysconfig/network-scripts/ifcfg-bond0 ファイルの作成

# vi /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=10.1.1.1
NETMASK=255.255.255.0
GATEWAY=10.1.1.254
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS=”mode=0 miimon=1000 xmit_hash_policy=0″

3. bondingに参加させるインタフェースのファイルの編集

# vi /etc/sysconfig/network-scripts/ifcfg-***

以下を追記
MASTER=bond0
SLAVE=yes

4. ネットワークサービスを再起動

# nmcli connection reload (Network Managerが動作していれば)
# systemctl restart network

以上で完了です。 # cat /proc/net/bonding/bond0 で状態を確認できます。

モードと負荷分散方式の指定方法

モードと負荷分散方式は /etc/sysconfig/network-scripts/ifcfg-bond0 のBONDING_OPTSの中で指定できます。

BONDING_OPTS=”mode=4 miimon=1000 xmit_hash_policy=2″

vi等で上記を編集したのち、先程の例と同様、nmcli con reload; systemctl restart network でネットワークサービスを再起動すればOKです。状態を # cat /proc/net/bonding/bond0 で確認します。

# cat /proc/net/bonding/bond0
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)

なお、miimon=1000とは、MIIモニターという仕組みで1000msec=1秒間隔でBondingの状態を確認する、という意味になります。

また、/etc/modprobe.d/bonding.conf でBonding のオプション等の設定をすることは可能ではありますが、RedHatとしては非推奨になります。

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク