bonding†
複数のNICを束ねる事で、耐障害性向上・トラフィック負荷分散を図る技術。
目的に応じて最適な負荷分散アルゴリズムを選択する必要がある。
様々な別名があり、Bonding(ボンディング)以外には、チーミング(Teaming)、
CiscoだとPortChannel(ポートチャネル)、LAG(リンクアグリゲーション)と呼ぶ事もある。
参考サイト†
冗長化アルゴリズム†
モードを何も指定しない場合は、balance-rrが自動的に選択される。
bondingインターフェースの対向L2SWでLACPを設定出来る場合、802.3adにするのがオススメ。
blance-rrはラウンドロビン方式となる為、対向L2SWがスタック構成の場合は、
パケット送信元のMACアドレスが都度変化する事となり、稀に接続断が発生する。
これは、Linux・UNIX系OSを使っているアプライアンス(SANディスク装置、負荷分散装置、FW-UTM)全般に当てはまる事が多い。
その為、blance-rrは基本的に使用しない事を推奨する。
どうしてもblance-rrを使用する場合は、対向L2SWが1台である事を前提に、
MACアドレス分散が発生しない事を踏まえた上で、設計する必要がある。
+
| | アルゴリズム一覧
|
mode | 別名 | 説明 |
0 | balance-rr | 耐障害性とロードバランシングのためラウンドロビンポリシーを設定します。 利用可能な第1のインターフェースからそれぞれのボンディングされた、 スレーブインターフェースで送受信が順次行われます。 |
1 | active-backup | 耐障害性のためアクティブなバックアップポリシーを設定します。 利用可能な第1のボンディングされたスレーブインターフェースにより送受信が行われます。 別のボンディングされたスレーブインターフェースは、 アクティブなボンディングされたスレーブインターフェースが失敗した場合にのみ使用されます。 |
2 | balance-xor | 耐障害性とロードバランシングのためXOR(排他的論理和)ポリシーを設定します。 この方法を使用すると、インターフェースによって受信要求のMACアドレスと、 スレーブNICの1つのMACアドレスが一致します。 このリンクが確立すると、利用可能な第1のインターフェースから送信が順次行われます。 |
3 | broadcast | 耐障害性のためブロードキャストポリシーを設定します。 すべての送信は、すべてのスレーブインターフェースで行われます。 |
4 | 802.3ad | IEEE802.3ad動的リンクアグリゲーションのポリシーを設定します。 同一の速度とデュプレックス設定を共有するアグリゲーショングループを作成します。 アクティブなアグリゲーターのすべてのスレーブで送受信を行います。 802.3adに対応するスイッチが必要です。 |
5 | balance-tlb | 耐障害性とロードバランシングのため送信ロードバランシング(TLB)ポリシーを設定します。 発信トラフィックは、各スレーブインターフェースの現在の負荷に従って分散されます。 受信トラフィックは、現在のスレーブにより受信されます。 受信しているスレーブが失敗すると、別のスレーブが失敗したスレーブの MAC アドレスを引き継ぎます。 |
6 | balance-alb | 耐障害性とロードバランシングのためアクティブロードバランシング(ALB)ポリシーを設定します。 IPV4トラフィック用の送受信ロードバランシングが含まれます。 ARPネゴシエーションにより、受信ロードバランシングが可能です。 |
|
送信ポリシー†
bondingには負荷分散アルゴリズムとは別に、パケット送信ポリシーが存在する。
L2~L4で分散方式に重み付けをする事で、通信が1インターフェースに偏るのを解消する事が出来る。
何も設定しない場合は、L2(MACアドレス)ベースでの負荷分散になる。
送信元のLinuxサーバが仮想化している場合、パケット送信元が全て同じMACアドレスとなる為、L2制御では偏りが発生する。
このような場合はL2+L3(MACアドレスとIPアドレスのハッシュ)で分散を行う方が良い。
+
| | ポリシ一覧
|
policy | 別名 | 802.3ad | 説明 |
0 | Layer2 | 対応している | ハードウェアMACアドレスのXORを使用してハッシュを生成します。 すべてのトラフィックを同じスレーブの特定のネットワークピアに割り振ります。 |
1 | Layer3+Layer4 | 対応してない | 上位レイヤープロトコルの情報を使用して、ハッシュを生成します。 断片化されたTCPまたはUDPパケットと他の全IPプロトコルトラフィックについては、 送信元及び宛先ポート情報が省略されます。 |
2 | Layer2+Layer3 | 対応している | Layer2及びLayer3プロトコル情報の組み合わせを使用して、ハッシュを生成します。 すべてのトラフィックを同じスレーブの特定のネットワークピアに割り振ります。 |
|
設定方法(Linux)†
CentOS4、CentOS5~7でパラメータの指定方法が変化する。
今回は下記の条件でbondingする事を想定して設定を行う
使用I/F | eth0/eth1 |
生成I/F | bond0 |
アルゴリズム | 802.3ad (LACP) |
ポリシー | L2+L3 |
+
| | 設定内容
|
# vi /etc/modprobe.d/if-bondig.conf
---
alias bond0 bonding
## CentOS4の場合は下記も追加
options bond0 mode=4 xmit_hash_policy=2 miimon=100
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
---
DEVICE="eth0"
USERCTL="none"
BOOTPROTO="none"
HWADDR="NICの実MACアドレスを設定"
ONBOOT="yes"
MASTER="bond0"
SLAVE="yes"
UUID="適当にUUIDを生成して設定"
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
---
DEVICE="eth1"
USERCTL="none"
BOOTPROTO="none"
HWADDR="NICの実MACアドレスを設定"
ONBOOT="yes"
MASTER="bond0"
SLAVE="yes"
UUID="適当にUUIDを生成して設定"
# vi /etc/sysconfig/network-scripts/ifcfg-bond0
---
DEVICE="bond0"
BOOTPROTO="static"
BROADCAST="ブロードキャストアドレス"
IPADDR="bondigI/FのIPアドレス"
IPV6INIT="no"
IPV6_AUTOCONF="no"
NETMASK="サブネットマスク"
PEERDNS="no"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
BONDING_OPTS="bond0 mode=4 xmit_hash_policy=2 miimon=100"
UUID="適当にUUIDを生成して設定"
|
設定方法(L2SW)†
L2SWではPort-ChannelインターフェースをLACPモードで作成する
事前にPort-Channelを形成した上でLANケーブル結線を行わないとループになるので注意
ステータス確認†
設定した後は、下記コマンドを使って設定が反映されているか確認を行う。
bondingはL2SWとのモード不一致、LACPDU送信タイミング不一致などでループになりやすい。
bondingデバイス(インターフェース)の削除†
bondingのインターフェース番号を間違えた場合、間違えた番号でデバイスが生成されてしまい、
bondingデバイスを削除出来なくなる。
使わないデバイスが残っているのは後々障害になりかねないので、
いらないbondingデバイスは下記のコマンド2つを実行して削除する。
例として、bond0デバイスを手動削除する方法をメモしておく
+
| | 削除コマンド
|
- /proc/net/bondingの削除
# rmmod bonding
|