2 高可用性のためのネットワーク・サーバーの最適化
ネットワーク内のクライアントにネットワーク・サービスを提供するシステムの場合、サービスが継続し、中断されないように、ネットワークの可用性が優先されます。仮想ローカル・エリア・ネットワーク(VLAN)では、同様の機能があるシステムをそれら固有の仮想ネットワークに属しているかのようにグループ化して、ネットワークを編成することもできます。この機能により、ネットワークの管理が改善されます。
システムでこれらの高度な機能を使用できるようにするには、それに複数のNICが必要です。NICが多いほど、サーバーで提供できるネットワーク可用性の確実性が高まります。
ネットワーク結合の使用
ネットワーク・スイッチに接続されている、システムの複数の物理ネットワーク・インタフェースを単一の論理インタフェースにまとめると、スループットや可用性を高めることができます。物理ネットワーク・インタフェースのこのグループ化(集約)は、ネットワーク結合と呼ばれます。
結合ネットワーク・インタフェースでは、ロード・バランシングによってデータ・スループットを高めることができ、あるコンポーネント・デバイスから別のコンポーネント・デバイスへのフェイルオーバーをアクティブ化することで冗長性を提供できます。デフォルトでは、結合インタフェースはカーネルから通常のネットワーク・デバイスのように認識されますが、このインタフェースは、ラウンドロビン・スケジューラを使用して、使用可能なセカンダリ・デバイスを介してネットワーク・パケットを送信します。結合インタフェースの構成ファイル内の結合モジュール・パラメータを構成して、ロード・バランシングとデバイス・フェイルオーバーの動作を変更できます。
カーネル内のネットワーク結合ドライバを使用すると、要件および使用可能なネットワーク・インフラストラクチャに応じて異なる結合機能を利用するために、様々なモードでネットワーク結合を構成できます。たとえば、balance-rr
モードを使用すると、一連の物理ネットワーク・インタフェースにわたり、基本的なラウンドロビン・ロードバランシングおよびフォルト・トレランスを提供できます。一方、active-backup
モードでは、高可用性構成のための基本的なフォルト・トレランスが提供されます。802.3ad
や動的リンク・アグリゲーションなどの一部の結合モードでは、物理インタフェースが接続するスイッチに特定のハードウェア機能と構成が必要です。基本ロード・バランシング・モード(balance-rr
およびbalance-xor
)では、EtherChannelまたはトランキングをサポートするスイッチが使用されます。拡張ロード・バランシング・モード(balance-tlb
およびbalance-alb
)では、切替えハードウェアに要件は課されませんが、各コンポーネント・インタフェースのデバイス・ドライバで特定の機能(ethtoolのサポートや、デバイスがアクティブである間にハードウェア・アドレスを変更する機能など)を実装する必要があります。
カーネル結合ドライバの詳細は、https://www.kernel.org/doc/Documentation/networking/bonding.txtでアップストリームのドキュメントを参照するか、/usr/share/doc/iputils-*/README.bonding
を参照してください。
注意:
高可用性のために複数のシステムを直接接続してひとまとめにするネットワーク構成の場合は、自動フェイルオーバーなどの特定のネットワーク・インタフェース結合機能をサポートするにはスイッチが必要です。そうしないと、メカニズムが機能しない可能性があります。
ネットワーク結合の構成
ネットワーク結合は、コマンド行またはネットワーク接続エディタを使用して構成できます。
コマンドラインの使用
ネットワーク結合の構成に関するハンズオン・ラボ環境を含むチュートリアルは、Network Manager CLIを使用したネットワーク結合の作成を参照してください。
-
nmcli connection addコマンドを使用して、結合インタフェースを追加します。
sudo nmcli connection add type bond con-name "Bond Connection 1" ifname bond0 bond.options "mode=active-backup"
結合接続名と結合インタフェース名、さらに、重要なこととして、結合モード・オプションを設定することに注意してください。この例では、モードは
active-backup
に設定されています。結合接続名を設定しなかった場合は、結合インタフェース名が接続名としても使用されます。 -
オプションで、nmcli connection modifyコマンドを使用して、結合インタフェースのIPアドレスを構成します。デフォルトでは、インタフェースはDHCPを使用するように構成されていますが、静的IPアドレス指定が必要な場合は、アドレスを手動で構成する必要があります。たとえば、結合のIPv4設定を構成するには、次のように入力します。
sudo nmcli connection modify "Bond Connection 1" ipv4.addresses '192.0.2.2/24'
sudo nmcli connection modify "Bond Connection 1" ipv4.gateway '192.0.2.1'
sudo nmcli connection modify "Bond Connection 1" ipv4.dns '192.0.2.254'
sudo nmcli connection modify "Bond Connection 1" ipv4.method manual
-
nmcli connection addコマンドを使用して、物理ネットワーク・インタフェースをセカンダリタイプのインタフェースとして結合に追加します。次に例を示します。
sudo nmcli connection add type ethernet slave-type bond con-name bond0-if1 ifname enp1s0 master bond0
sudo nmcli connection add type ethernet slave-type bond con-name bond0-if2 ifname enp2s0 master bond0
各セカンダリに接続名を指定し、追加する各インタフェースのインタフェース名を選択します。使用可能なインタフェースのリストを取得するには、nmcli deviceコマンドを実行します。セカンダリ・ネットワーク・インタフェースをアタッチする結合のインタフェース名を指定します。
-
結合インタフェースを起動します。
sudo nmcli connection up "Bond Connection 1"
-
ネットワーク・インタフェースが結合に正しく追加されたことを確認します。これを確認するには、デバイス・リストを再度調べます。
sudo nmcli device
... enp1s0 ethernet connected bond0-if1 enp2s0 ethernet connected bond0-if2
ネットワーク接続エディタの使用
-
このエディタを起動します。
sudo nm-connection-editor
ネットワーク接続ウィンドウが開きます。
-
接続を追加するには、ウィンドウの下部にあるプラス(+)ボタンを使用します。
このステップでは、作成する接続タイプの入力を求める別のウィンドウが開きます。
-
ウィンドウのドロップダウン・リストで、仮想セクションから結合を選択し、作成をクリックします。
ネットワーク結合エディタ・ウィンドウが開きます。
ネットワーク結合エディタ
-
オプションで、結合の接続名を構成します。
-
追加ボタンをクリックして、ネットワーク結合に物理ネットワーク・インタフェースを追加します。
-
ネットワーク結合に追加する物理インタフェースのタイプを選択できる新しいウィンドウ。たとえば、イーサネット・タイプを選択して、ネットワーク結合にイーサネット・インタフェースを追加できます。作成ボタンをクリックして、セカンダリ・インタフェースを構成します。
-
オプションで、セカンダリ・インタフェースの名前を構成します。
-
デバイスフィールドで、結合にセカンダリとして追加する物理ネットワーク・インタフェースを選択します。デバイスがネットワーク用にすでに構成されている場合は結合内で構成できるものとしてそれがリストされないことに注意してください。
-
保存をクリックして、セカンダリ・デバイスをネットワーク結合に追加します。
この結合インタフェースを構成するすべての物理ネットワーク・インタフェースについて、これらの手順を繰り返します。
-
-
ネットワーク結合に使用する結合モードを構成します。
モードドロップダウン・リストから結合モードを選択します。なお、一部のモードでは、ネットワーク・スイッチに関してさらに構成が必要になる場合があります。
-
デフォルト設定を使用しない場合は、必要に応じてその他の結合パラメータ(リンク・モニタリングなど)を構成します。
ネットワーク結合IP構成にDHCPを使用しない予定の場合は、IPv4タブとIPv6タブをクリックすることでIPアドレス指定を設定します。
-
保存ボタンをクリックして構成を保存し、ネットワーク結合を作成します。
ネットワーク結合ステータスの確認
-
次のコマンドを実行して、デバイス名がbond0のネットワーク結合に関する情報を取得します。
cat /proc/net/bonding/bond0
出力では、アクティブな結合セカンダリなど、結合構成およびステータスが示されます。出力では、各セカンダリ・インタフェースのステータスに関する情報も示されます。
-
セカンダリ・インタフェースの1つに接続されている物理ケーブルを一時的に取り外します。この他に、リンク障害をテストするために使用可能な信頼できる方法はありません。
-
この手順の最初のステップに示されているように、結合リンクのステータスを確認します。セカンダリ・インタフェースのステータスでは、そのインタフェースが停止しており、リンク障害が発生していることが示されます。
タグ付けされていないデータ・フレームを使用したVLANの構成
VLANは、同じ物理ネットワークに接続されているかのように通信できるマシンのグループです。VLANを使用すると、LAN上のその実際の物理的な場所に関係なくシステムをグループ化できます。タグ付けされていないデータ・フレームを使用するVLANでは、ネットワーク・スイッチのポートを同じ永続的なVLAN IDまたはPVID (デフォルトのVLANである1以外)に割り当てることによって、ブロードキャスト・ドメインを作成します。このPVIDに割り当てたすべてのポートは、1つのブロードキャスト・ドメインに存在します。同じVLANにあるデバイス間のブロードキャストは、別のVLANでの他のポートには認識されません(それらが同じスイッチ上に存在する場合でも同様)。
「ネットワーク設定」エディタまたはnmcliコマンドを使用してEthernetインタフェース用のVLANデバイスを作成します。
コマンド行からVLANデバイスを作成するには:
sudo nmcli con add type vlan con-name bond0-pvid10 ifname bond0-pvid10 dev bond0 id 10
前のコマンドを実行すると、VLANデバイスbond0-pvid10
が結合インタフェースbond0
に10のPVIDを使用して設定されます。物理LANを使用する標準インタフェースであるbond0
に加えて、仮想LANにアクセスするタグ付けされていないフレームを使用できる、bond0-pvid10
などのVLANデバイスが設定されました。
注意:
結合インタフェースのコンポーネント・インタフェースに対して仮想インタフェースを作成する必要はありません。ただし、それらの接続先の各スイッチ・ポートにPVIDを設定する必要があります。
また、次のコマンドを使用して、結合されていないインタフェースについてVLANデバイスを設定できます。次に例を示します。
sudo nmcli con add type vlan con-name en1-pvid5 ifname en1-pvid5 dev en1 id 5
構成されているVLANインタフェースについて情報を取得するには、/proc/net/VLAN
ディレクトリ内のファイルを表示します。
ipコマンドを使用してVLANデバイスを作成することもできます。ただし、このようなデバイスは、システムを再起動すると存在しなくなります。
たとえば、次のように5
のPVIDを使用して、en1
のVLANインタフェースen1.5
を作成します。
sudo ip link add link eth1 name eth1.5 type vlan id 5
詳細は、ip(8)
マニュアル・ページを参照してください。