Debian Linuxでネットワーク(NIC)ボンディング/チーミングを構成する方法


NICチーミングは、サーバー/ワークステーションコンピューティング領域の冗長性と高可用性に対する興味深いソリューションを提供します。複数のネットワークインターフェイスカードを使用できるため、管理者は特定のサーバーへのアクセス方法を工夫したり、トラフィックが特定のサーバーに流れるためのより大きなパイプを作成したりできます。

このガイドでは、Debianシステムでの2つのネットワークインターフェイスカードのチーム化について説明します。 ifenslaveと呼ばれるソフトウェアを使用して、結合されたデバイスにNICを接続および切断します。ボンドデバイスは、カーネルとインターフェイスするネットワークデバイスになりますが、実際のネットワークインターフェイスデバイス(eth0、eth1など)を物理的に使用します。

構成の前に最初に行うことは、システムを実際に実装する必要があるボンディングのタイプを決定することです。この記事の執筆時点で、Linuxカーネルでサポートされているボンディングモードは6つあります。これらの結合「モード」の中には、セットアップが簡単なものもあれば、リンクが接続するスイッチに特別な構成が必要なものもあります。

ボンドモードを理解する

このNICチーミングの方法は「ラウンドロビン」と呼ばれるため、名前に「RR」が含まれています。このボンディング方法では、ネットワークパケットは、ボンディングされたインターフェイスを構成する各ネットワークインターフェイスカードを介してローテーションされます。

たとえば、eth0、eth1、およびeth2がすべてbond0インターフェースにスレーブ化されているシステム。このインターフェイスは、ボンドモード0で有効にすると、最初のパケットをeth0に送信し、2番目のパケットをeth1に送信し、3番目のパケットをeth2に送信してから、eth0から4番目のパケットで開始します。これは、モードが「ラウンドロビン」名を取得する場所です。

このボンド方式では、1つのネットワークインターフェイスのみがアクティブになり、ボンド内の他のインターフェイスは、プライマリネットワークインターフェイスカードへのリンクで障害が発生するのを待つだけです。

バランスXORボンドモードでは、ボンドは送信元と宛先のMACアドレスを評価して、ネットワークパケットを送信するインターフェイスを決定します。この方法では、特定のMacアドレスに対して同じインターフェイスが選択されるため、負荷分散とフォールトトレランスが可能になります。

この方法では、ボンドデバイスはすべてのスレーブインターフェイスからデータを送信するため、この特定のボンディング方法の「ブロードキャスト」名になります。この方法の用途はほとんどありませんが、ある程度のフォールトトレランスを提供します。

これはリンクアグリゲーションのための特別な結合方法であり、この特定の結合されたインターフェイスが接続するスイッチに特別な構成が必要です。この方法は、リンクアグリゲーションのIEEE標準に準拠しており、フォールトトレランスと帯域幅の増加の両方を提供します。

TLBでは、ボンドは通常どおりスレーブインターフェイスでトラフィックを受信しますが、システムがトラフィックを送信する必要がある場合は、各インターフェイスのロード/キューに基づいて、データの送信に最適なインターフェイスを決定します。

ALBでは、ボンドはボンドモード5と同様に負荷分散されますが、受信バランスをロードする機能も追加されています。

システムが果たす役割に応じて、適切な結合方法を選択することが不可欠です。このチュートリアルは、2つのネットワークインターフェイス(eth0とeth1)を備えたDebian Jessieで実行され、ボンドモード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として参照されることをシステムに通知します。

2番目のスタンザ(上の黄色のボックス)は、使用される実際の結合インターフェースです。 「 autobond0 」は、システムの起動時にボンドを自動的に初期化するようにシステムに指示します。 ‘ iface bond0 inet dhcp ‘は明白かもしれませんが、念のため、このスタンザは、bond0という名前のインターフェイスがDHCP(動的ホスト制御プロトコル)を介してネットワーク情報を取得する必要があることを示しています。

bond-mode1 」は、この特定の結合インターフェースで使用される結合モードを決定するために使用されるものです。この場合、bond-mode 1は、このボンドがアクティブバックアップセットアップであることを示し、オプション「 bond-primary 」は、使用するボンドのプライマリインターフェイスを示します。 ‘ slaves eth0 eth1 ‘は、どの物理インターフェースがこの特定の結合インターフェースの一部であるかを示します。

次の数行は、リンク障害が発生した場合に、ボンドをプライマリインターフェイスからスレーブインターフェイスの1つに切り替えるタイミングを決定するために重要です。 Miimonは、ボンドリンクのステータスを監視するために使用できるオプションの1つであり、他のオプションはarp要求の使用です。

このガイドではmiimonを使用します。 ‘ bond-miimon 100 ‘は、100ミリ秒ごとにリンクを検査するようにカーネルに指示します。 「 bond-downdelay400 」は、現在アクティブなインターフェースが実際にダウンしていると結論付ける前に、システムが400ミリ秒待機することを意味します。

bond-updelay800 」は、リンクが確立されてから800ミリ秒後まで、新しいアクティブなインターフェースの使用を待機するようにシステムに指示するために使用されます。 updelayとdowndelayに関する注意事項。これらの値は両方とも、miimon値の倍数である必要があります。そうでない場合、システムは切り捨てられます。