Debian Linuxでネットワーク(NIC)結合/チーミングを構成する方法
NICのチーミングは、サーバーやワークステーションのコンピューティング領域における冗長性と高可用性に対する興味深い解決策を提供します。複数のネットワークインターフェースカードを持つことができるため、管理者は特定のサーバーへのアクセス方法や、特定のサーバーにトラフィックが流れるためのより大きなパイプを作成することに創造的になることができます。
参照: Ubuntuでネットワークボンディングまたはチーミングを設定する方法
このガイドでは、Debianシステムでの二つのネットワークインターフェースカードのチーミングについて説明します。ifenslaveと呼ばれるソフトウェアを使用して、バンドルデバイスからNICを接続および切断します。バンドルデバイスは、カーネルとインターフェースを持つネットワークデバイスとなりますが、実際には物理的なネットワークインターフェースデバイス(eth0、eth1など)を使用します。
Debian Linuxにおけるボンディング
構成を行う前に最初にすべきことは、システムが実際に実装する必要のあるボンディングのタイプを決定することです。執筆時点で、Linuxカーネルは6つのボンディングモードをサポートしています。これらのボンディング「モード」の中には、設定が簡単なものもあれば、リンクが接続するスイッチで特別な設定が必要なものもあります。
結合モードの理解
ボンドモード0 - バランス-rr
このNICチーミングの方法は「ラウンドロビン」と呼ばれ、そのため名称に「RR」が付いています。このバンドル方法では、ネットワークパケットがバンドルインターフェースを構成する各ネットワークインターフェースカードを回転して送信されます。
例えば、eth0、eth1、およびeth2がすべてbond0インターフェースにスレーブ化されているシステムがあります。このインターフェースは、ボンドモード0で有効にすると、最初のパケットをeth0に、2番目のパケットをeth1に、3番目のパケットをeth2に送信し、その後4番目のパケットで再びeth0に戻ります。これが、このモードが「ラウンドロビン」と呼ばれる所以です。
ボンドモード1 - アクティブバックアップ
この結合方法では、1つのネットワークインターフェースのみがアクティブであり、他の結合されたインターフェースは、プライマリネットワークインターフェースカードへのリンクの障害を待機しています。
ボンドモード2 - バランスXOR
バランスXORバンドモードでは、バンドがソースおよびデスティネーションのMACアドレスを評価して、ネットワークパケットをどのインターフェースから送信するかを決定します。この方法は、特定のMACアドレスに対して同じインターフェースを選ぶため、負荷分散とフォールトトレランスが可能です。
ボンドモード3 – ブロードキャスト
この方法では、ボンドデバイスはすべてのスレーブインターフェースにデータを送信します。そのため、この特定のボンディングメソッドは「ブロードキャスト」と呼ばれています。この方法の使用例は非常に少ないですが、一方で障害耐性のレベルを提供します。
ボンドモード4 – 802.3ad
これはリンク集約のための特別なバンドル方式であり、この特定のバンドルインターフェースが接続されるスイッチで特別な設定が必要です。この方式は、リンク集約のためのIEEE標準に従い、障害耐性と帯域幅の向上を提供します。
ボンドモード5 – トランスミットロードバランシング
TLBでは、バンドルはスレーブインターフェースで通常通りトラフィックを受信しますが、システムがトラフィックを送信する必要があるときには、各インターフェースの負荷/キューに基づいてデータを送信するのに最適なインターフェースを決定します。
ボンドモード6 – アダプティブ負荷分散
ALBでは、バンドはバンドモード5と同様にロードバランスを行いますが、受信バランスをロードする追加機能も備えています。
システムの役割に応じて、適切なボンド方法を選択することが重要です。このチュートリアルでは、Debian Jessie上で、二つのネットワークインターフェース(eth0とeth1)を使用し、ボンドモード1またはアクティブ-バックアップに設定します。
しかし、異なるモード間を切り替えるのは非常に簡単です。なぜなら、それはネットワークインターフェースファイルの変更に過ぎないからです(ボンドモード4が選択されていない場合、スイッチの設定が必要となります)。
NICチーミング構成
このプロセスの最初のステップは、リポジトリから適切なソフトウェアを取得することです。Debianのソフトウェアはifenslaveとして知られており、‘apt‘を使ってインストールすることができます。
# apt-get install ifenslave-2.6
ソフトウェアがインストールされると、カーネルにはこのインストールと今後の再起動時の両方においてボンディングモジュールを読み込むよう指示する必要があります。このモジュールを一度だけ読み込むには、modprobeユーティリティを使用してカーネルモジュールを読み込むことができます。
# modprobe bonding
再び、このバンドがシステムの再起動時にアクティブであることを保証するために、「/etc/modules」ファイルを変更して、カーネルに起動時にボンディングモジュールをロードするように指示する必要があります。
# echo 'bonding' >> /etc/modules
カーネルがNICボンディングに必要なモジュールを認識したので、実際のボンドインターフェースを作成する時が来ました。これは、‘/etc/network/interfaces‘にあるインターフェースファイルを通じて行われ、任意のテキストエディタで編集できます。
# nano /etc/network/interfaces
このファイルには、システムが接続しているすべてのネットワークデバイスのネットワークインターフェイス設定が含まれています。この例では、2つのネットワークカード(eth0 と eth1)があります。2つの物理ネットワークカードを1つの論理インターフェイスに束ねるために、適切なボンドインターフェイスをこのファイル内に作成する必要があります。これは非常にシンプルなインターフェイスファイルですが、動作するボンドインターフェイスを作成するために必要なすべてのことを行います。
最初のスタンザ(赤いボックスの上)は、標準ループバックインターフェースの設定です。‘auto lo’は、カーネルに起動時に自動的にアダプタを起動するように指示します。‘iface lo inet loopback’は、このインターフェースがシステムのループバックインターフェースであること、また一般的に127.0.0.1と参照されることをシステムに伝えます。
二番目のスタンザ(上の黄色いボックス)は使用される実際のボンドインターフェースです。‘auto bond0’は、システム起動時にボンドを自動的に初期化するようにシステムに指示します。‘iface bond0 inet dhcp’は明らかかもしれませんが、念のために説明すると、このスタンザはbond0という名前のインターフェースがDHCP(Dynamic Host Control Protocol)を通じてネットワーク情報を取得すべきであることを示しています。
「bond-mode 1」は、この特定のボンディングインターフェースで使用されるボンドモードを決定するために使用されます。この場合、bond-mode 1は、このボンドがアクティブ・バックアップ設定であり、「bond-primary」がボンドで使用するプライマリインターフェースを示します。「slaves eth0 eth1」は、この特定のボンディングインターフェースの一部である物理インターフェースを示します。
次の数行は、リンク障害が発生した場合に、ボンドがプライマリインターフェースからスレーブインターフェースのいずれかに切り替わるべき時期を決定するために重要です。Miimonは、ボンドリンクの状態を監視するために利用できるオプションの1つで、もう1つのオプションはarpリクエストを使用することです。
このガイドではmiimonを使用します。‘bond-miimon 100‘は、カーネルに100ミリ秒ごとにリンクを検査するように指示します。‘bond-downdelay 400‘は、システムが現在アクティブなインターフェースが確かにダウンしていると判断するまで400ミリ秒待機することを意味します。
「bond-updelay 800」は、リンクが確立された後800ミリ秒まで新しいアクティブインターフェイスの使用を待機するようシステムに指示するために使用されます。updelayおよびdowndelayについての注意点として、これらの値は両方ともmiimon値の倍数でなければならず、そうでない場合はシステムが切り捨てることがあります。
