RHEL/CentOS 7でネットワークボンディングまたはチーミングを設定および構成する方法 - パート11
システム管理者が利用可能な帯域幅を増やし、データ転送の冗長性と負荷分散を提供したい場合、ネットワークボンディングと呼ばれるカーネル機能を利用することで、費用対効果の高い方法で作業を行うことができます。
Linuxでの帯域幅制限を増やす方法についてもっと読む
Linux上のアプリケーションによって使用されるネットワーク帯域幅を制限する方法 - Trickle http://t.co/It2ccJeAih
Via @tecmint pic.twitter.com/nzKwF3ec2O— TecMint.com (@tecmint) 2015年9月17日
簡単に言うと、ボンディングとは、2つ以上の物理ネットワークインターフェース(スレーブと呼ばれる)を1つの論理インターフェース(マスターと呼ばれる)に統合することを意味します。特定のNIC(ネットワークインターフェースカード)に問題が発生しても、他のインターフェースがアクティブである限り、通信に大きな影響はありません。
Linuxシステムにおけるネットワークボンディングについては、ここで詳しく読むことができます。
- RHEL/CentOS 6/5におけるネットワークチーミングまたはNiCボンディング
- Debian系システムにおけるネットワークNIC結合またはチーミング
- Ubuntuでネットワークバンディングまたはチーミングを構成する方法
ネットワークバンドリングまたはチーミングの有効化と構成
デフォルトでは、ボンディングカーネルモジュールは有効になっていません。したがって、これをロードし、再起動時に持続するようにする必要があります。--first-timeオプションを使用すると、modprobeはモジュールの読み込みが失敗した場合に警告します:
# modprobe --first-time bonding
上記のコマンドは、現在のセッションのためにボンディングモジュールをロードします。持続性を確保するために、/etc/modules-load.d内に、/etc/modules-load.d/bonding.confのような説明的な名前の.confファイルを作成してください。
# echo "# Load the bonding kernel module at boot" > /etc/modules-load.d/bonding.conf
echo "bonding" >> /etc/modules-load.d/bonding.conf
サーバーを再起動し、再起動後にバンディングモジュールが自動的に読み込まれることを確認してください。図1に示すように:
この記事では、3つのインターフェース(enp0s3、enp0s8、および enp0s9)を使用して、便利に名付けられたボンドbond0を作成します。
bond0を作成するには、NetworkManagerを制御するためのテキストインターフェースであるnmtuiを使用することができます。コマンドラインから引数なしで呼び出すと、nmtuiはテキストインターフェースを表示し、既存の接続を編集したり、接続をアクティブ化したり、システムのホスト名を設定したりすることができます。
接続の編集 を選択 –> 追加 –> ボンド を選択します (図2に示すように):
接続の編集画面で、スレーブインターフェース(この場合はenp0s3、enp0s8、enp0s9)を追加し、説明的な(プロファイル)名を付けます(例えば、NIC #1、NIC #2、NIC #3それぞれ)。
さらに、ボンドの名前とデバイスを設定する必要があります(図3ではそれぞれTecmintBondとbond0)およびbond0のIPアドレス、ゲートウェイアドレス、およびDNSサーバーのIPアドレスを入力してください。
注 お使いのインターフェースのMACアドレスを入力する必要はありません。なぜならnmtuiがそれを自動で処理してくれるからです。他のすべての設定はデフォルトのままで問題ありません。詳細については図3を参照してください。
終わったら、画面の下に行き、OKを選択してください(図4を参照):
これで完了です。テキストインターフェースを終了し、コマンドラインに戻ります。ここで、新しく作成したインターフェースをipコマンドを使用して有効にします:
# ip link set dev bond0 up
その後、bond0がUP状態であり、192.168.0.200が割り当てられていることがFig. 5に示されています。
# ip addr show bond0
Linuxにおけるネットワークボンディングまたはチーミングのテスト
bond0が実際に機能しているかを確認するためには、別のマシンからそのIPアドレスにpingを打つか、あるいはさらに良い方法として、カーネルインターフェーステーブルをリアルタイムで監視して、ネットワークトラフィックが3つのネットワークインターフェース間でどのように分配されているかを確認することができます(リフレッシュ時間は
-dオプションは、変更が発生したときにハイライト表示するために使用されます。
# watch -d -n1 netstat -i
いくつかのバンディングモードがあり、それぞれに特徴があることに注意することが重要です。それらは、Red Hat Enterprise Linux 7ネットワーク管理ガイドの4.5節に記載されています。あなたのニーズに応じて、どちらか一方を選択することになります。
私たちの現在の設定では、ラウンドロビンモードを選択しました(図3参照)。これにより、パケットは最初のスレーブから順番に送信され、最後のスレーブで終わり、再び最初のスレーブから始まります。
ラウンドロビン方式はmode 0とも呼ばれ、負荷分散と冗長性を提供します。ボンディングモードを変更するには、前述の通りnmtuiを使用できます(図7も参照)。
アクティブバックアップに変更すると、特定の時点で唯一のアクティブインターフェースとして機能するスレーブを選択するよう求められます。そのカードが故障した場合、残りのスレーブのうちの1つがその位置を引き継ぎ、アクティブになります。
enp0s3 をプライマリースレーブとして選択し、bond0 をダウンし再度アップし、ネットワークを再起動し、カーネルインターフェイステーブルを表示します(図8を参照)。
データ転送(TX-OKおよびRX-OK)が現在enp0s3のみに対して行われていることに注意してください。
# ip link set dev bond0 down
ip link set dev bond0 up
systemctl restart network
あるいは、ボンドをカーネルが見ているように見ることもできます(図9を参照):
# cat /proc/net/bonding/bond0
要約
この章では、データ転送の帯域幅を増やし、負荷分散と冗長性を確保するために、Red Hat Enterprise Linux 7(CentOS 7およびFedora 22+でも動作します)でのボンディングの設定と構成方法について説明しました。
他の結合モードを探求する時間をかけることで、この認証のトピックに関連する概念や実践を習得することができるようになります。
この記事について質問がある場合や、コミュニティの他のメンバーと共有したい提案がある場合は、下のコメントフォームを使用してお気軽にお知らせください。








