09/04/16 大幅に修正
複数のネットワークインターフェイスを束ねて冗長性や負荷分散を行う技術を、Linuxではボンディングと呼ばれるドライバにより実現しています。CentOSでボンディングを構成したときのメモ。
CentOS 5.2にてテストしましたがRed Hat系のディストリビューションであれば適用できるかと思われます。
- CentOS 5.2 on VMware Server 1.0.6
- 仮想NIC × 2
- ホストマシン搭載物理NIC数: 3
ここで、eth0, eth1のようにネットワークデバイスがすでに利用できる状況になっていることが前提となります。
eth0とeth1をボンディングし、ネットワークデバイスbond0を、eth2とeth3をボンディングしネットワークデバイスbond1を生成する場合の手順は以下の通り。
以下の要領でボンディングインターフェイスの数だけ定義する。
alias bond0 bonding
alias bond1 bonding
ボンディングインターフェイスが1つ、もしくは複数のボンディングインターフェイスにて同一の設定を行う場合は次のようになる。
alias bond0 bonding
alias bond1 bonding
options bonding mode= miimon=100
マスターデバイスの指定とスレーブデバイスであることを設定する。HWADDRの値はMACアドレスとモジュールのエイリアスを固定する為にも必ず設定することを推奨
DEVICE=eth[0-3]
HWADDR=xx:xx:xx:xx:xx:xx
BOOTPROTO=none
USERCTL=no
ONBOOT=no
MASTER=bond[0|1]
SLAVE=yes
通常eth0などに記載する内容をここに記載する。
DEVICE=bond[0|1]
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
NETWORK=xxx.xxx.xxx.xxx
BROADCAST=xxx.xxx.xxx.xxx
GATEWAY=xxx.xxx.xxx.xxx
ONBOOT=yes
USERCTL=no
BONDING_OPTS="mode=[N] primary=ethX miimon=100 updelay=500"
# service network restart
modeに設定可能な値と機能・制約について述べる
障害耐性とロードバランシングに対するラウンドロビンポリシー
- 制約
- Ether ChannelなどのTrunkingをサポートするネットワークスイッチと接続する必要がある
-送信時: 1パケットごとにスレーブされたインターフェイスが順に使用される。
- 受信時: ネットワークスイッチ側の判断で使用されるスレーブインターフェイスが決定する
障害耐性に対するアクティブ バックアップ ポリシー
ネットワークの障害耐性を最大限に高めたい場合に適用
- 制約
- ネットワークスイッチに特別な機能は必要ない
-1つのアクティブインターフェイスのみ使用し、アクティブインターフェイスの障害時にはスレーブされた他のインターフェイスに切り替わる
障害耐性とロードバランシングに対するXORポリシー
- 制約
- Ether ChannelなどのTruningをサポートするネットワークスイッチと接続する必要がある
-送信アダプター: 送信先のMACアドレスをキーとするハッシュで選択される
- 受信アダプター: ネットワークスイッチ側の判断で選択される
障害耐性用のブロードキャストポリシー
- 全てのアダプターからパケットを送出する。
- 特殊なネットワーク構成において使用するもので通常の環境では使用できない。
IEEE 802.3ad ダイナミック リンクアグリゲーションポリシー
- 制約
- IEEE 802.3adに対応したネットワークスイッチが必要
-IEEE 802.3ad Link Aggrigationの規格による接続(同じスピードとデュプレックス設定を共有するアグリゲーションを作成し、アクティブなアグリゲーション内全てのスレーブインターフェイス上で送受信を行う)
障害耐性とロードバランシング用の送信ロードバランシング(TLB)ポリシー
- 制約
- ネットワークスイッチに特別な機能は必要ない
-送信: アダプターの速度、負荷に応じて選択される
- 受信: 1つのアクティブアダプターのみを選択し、障害時には他のアダプターに切り替えられる
障害耐性とロードバランシング用のアクティブロードバランシング(ALB)ポリシー
- 制約
- ネットワークスイッチに特別な機能は必要ない
-送信: アダプターの速度、負荷に応じて選択される
- 受信: アダプターの速度、負荷に応じて選択される。ただし、通信相手のIPアドレスに応じて固定したアダプターを使用する(通信相手のARPテーブルに登録されるMACアドレスを変更することで受信アダプターを選択する(ARPネゴシエーション)ため、ルータ越しの通信の場合、常に同じアダプターが使用される)
active-backupポリシーが最適かと思われるが、balance-tlb, balance-albでもいけそう(未検証)。
mode=1 (Active-Backup)モードにて、起動時に優先的にアクティブアダプターとして使用するアダプタのエイリアス(eth0など)を指定。
MII規格のリンク情報を利用する。つまり、MIIのリンクダウンイベントのみを見ているので物理アダプタのドライバモジュールが検知できない障害(ネットワークスイッチより先の接続障害)は検知できない。デフォルトは100(ms)。
MIIリンク監視によるリンクアップを検知後、対象のアダプタをアクティブにするまでの遅延時間を指定する。miimonの整数倍の値にする必要がある。