Show Table of Contents
25.7.2. チャンネルボンディングの使用
Red Hat Enterprise Linux では、管理者はカーネルモジュールである
bonding
と チャンネルボンディングインターフェース と呼ばれる特殊なネットワークインターフェースを使用して、複数の NIC を単一のチャンネルにバインドすることが可能です。チャンネルボンディングにより、2 つもしくはそれ以上のネットワークインターフェースが 1 つとして機能できると同時に、帯域幅が増加し冗長性を実現します。
複数のネットワークインターフェースのチャンネルボンディングを行うには、管理者は以下の手順を実行する必要があります。
- root として
/etc/modprobe.d/
ディレクトリ内に<bonding>.conf
と呼ばれる新しいファイルを作成します。最後に.conf
の拡張子が付く限りはどのような名前でも構いません。この新しいファイルに以下の行を挿入します:alias bond<N> bonding
<N> を0
などのインターフェースの番号に置き換えます。設定済みの各チャンネルボンディングインターフェースについては、新しい/etc/modprobe.d/<bonding>.conf
ファイルに対応するエントリがなければなりません。 - 「チャンネルボンディングインターフェース」 で説明のとおりに、チャンネルボンディングインターフェースを設定します。
- パフォーマンスを強化するには、利用可能なモジュールオプションを調節して、最適な組み合わせを確認します。特に、
miimon
パラメーター、あるいはarp_interval
及びarp_ip_target
パラメーターに注意して下さい。利用可能なオプションの一覧と使用しているボンディングされたインターフェースに最適なオプションを迅速に決定する方法については、「bonding モジュールの指示文」 を参照して下さい。
25.7.2.1. bonding モジュールの指示文
使用しているボンディングインターフェース設定ファイル (例えば
ifcfg-bond0
) の BONDING_OPTS="<bonding parameters>"
指示文にチャンネルボンディングのモジュールパラメーターを追加する前に、使用しているボンディングされたインターフェースにどれが最適かを検証することは好ましい方法です。ボンディングされたインターフェースのパラメーターは、sysfs
ファイルシステム内のファイルを操作することで、bonding モジュールをアンロード (及び再ロード) することなく設定できます。
sysfs
は仮想ファイルシステムであり、カーネルオブジェクトをディレクトリ、ファイル、シンボリックリンクとして表示します。sysfs
を使用すると、カーネルオブジェクトの情報をクエリでき、通常のファイルシステムのコマンドを使用することでそうしたオブジェクトを操作することも可能です。/etc/fstab
には、sysfs
仮想ファイルシステムの行が 1 行あり、/sys/
ディレクトリ下にマウントされます。/sys/class/net/
ディレクトリ下にあるファイルをやりとり、操作することですべてのボンディングインターフェースを動的に設定することができます。
使用しているボンディングインターフェースに最適なパラメーターを決定するためには、「チャンネルボンディングインターフェース」 にある手順に従って
ifcfg-bond0
などのチャンネルボンディングインターフェースのファイルを作成します。bond0 にボンディングされている各インターフェースの設定ファイルに SLAVE=yes
及び MASTER=bond0
指示文を挿入します。これが完了すると、パラメーターの確認に進むことができます。
最初に root で
ifconfig bond<N>
up
を実行して、作成した bond を有効にします:
~]# ifconfig bond0 up
ifcfg-bond0
のボンディングインターフェースのファイルが正しく作成されたら、ifconfig
(オプションなし) を実行した出力に bond0
が表示されていることを確認できます:
~]# ifconfig
bond0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
eth0 Link encap:Ethernet HWaddr 52:54:00:26:9E:F1
inet addr:192.168.122.251 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::5054:ff:fe26:9ef1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:207 errors:0 dropped:0 overruns:0 frame:0
TX packets:205 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:70374 (68.7 KiB) TX bytes:25298 (24.7 KiB)
[出力は省略されています]
無効の bond も含めてすべての既存の bond を表示するには、以下を実行します:
~]# cat /sys/class/net/bonding_masters
bond0
それぞれの bond を個々に設定するには、
/sys/class/net/bond<N>/bonding/
ディレクトリにあるファイルを操作します。まずは、設定する bond を停止しなければなりません:
~]# ifconfig bond0 down
例として、bond0 の MII 監視を 1 秒間隔で有効にするには、(root で) 以下を実行します:
~]# echo 1000 > /sys/class/net/bond0/bonding/miimon
balance-alb
モードに bond0 を設定するには、以下のいずれかを実行します:
~]# echo 6 > /sys/class/net/bond0/bonding/mode
あるいは、モードの名前を使用します:
~]# echo balance-alb > /sys/class/net/bond0/bonding/mode
bond にオプションを設定後、
ifconfig bond<N> up
を実行することで、bond を有効にしてテストします。オプションを変更する場合は、インターフェースを停止して、sysfs
を使用してそのパラメーターを修正後、有効に戻して再確認します。
使用している bond に最適なパラメーターのセットを決定したら、設定しているボンディングインターフェースの
/etc/sysconfig/network-scripts/ifcfg-bond<N>
ファイルの BONDING_OPTS=
指示文に空白で区切った一覧としてそれらのパラメーターを追加します。bond が有効な場合 (例えば、ONBOOT=yes
指示文が設定された場合にブートシーケンス中にシステムにより bond が有効な場合) はいつでも、BONDING_OPTS
で指定されるボンディングオプションはその bond に対して有効となります。ボンディングインターフェース (及び BONDING_OPTS
) の設定についての詳細は、「チャンネルボンディングインターフェース」 を参照して下さい。
以下の一覧には、一般的な多くのチャンネルボンディングパラメーターの名前が、それらの機能の詳細と併せて記載されています。詳細については、
modinfo bonding
出力の各 parm
の簡単な説明、または kernel-doc パッケージの bonding.txt
ファイルにある包括的な説明を参照して下さい (「その他のリソース」 を参照)。
ボンディングインターフェースパラメーター
arp_interval=<time_in_milliseconds>
- ARP 監視が発生する頻度を指定します (ミリ秒単位)。
重要
arp_interval
及びarp_ip_target
の両パラメーター、あるいはmiimon
パラメーターを指定する必要があります。そうしないと、リンクが失敗した場合にネットワークパフォーマンスが低下する恐れがあります。mode=0
またはmode=1
(2 つの負荷分散モード) でこの設定を使用する場合、ネットワークスイッチは NIC 全体に均等にパケットを分散するよう設定する必要があります。この方法の詳細については、/usr/share/doc/kernel-doc-<kernel_version>/Documentation/networking/bonding.txt
を参照して下さい。デフォルトでは値は0
に設定されており、ARP 監視を無効にします。 arp_ip_target=<ip_address>[,<ip_address_2>,…<ip_address_16>]
arp_interval
パラメーターが有効な場合の ARP 要求のターゲット IP アドレスを指定します。カンマで区切られた一覧で最大 16 個の IP アドレスを指定できます。arp_validate=<value>
- ARP プローブのソース/ディストリビューションを検証します。デフォルトは
none
です。他の有効な値は、active
、backup
、all
です。 debug=<number>
- デバッグメッセージを有効にします。指定可能な値は、以下のとおりです。
0
— デバッグメッセージは無効です。これがデフォルトです。1
— デバッグメッセージは有効です。
downdelay=<time_in_milliseconds>
- リンクを無効にする前に、リンクの失敗後に待機する時間を指定します (ミリ秒単位)。値は、
miimon
パラメーターで指定される値の倍数でなければなりません。デフォルトでは0
に設定されており、待機時間を無効にします。 - lacp_rate=<value>
- リンクパートナーが 802.3ad モードで LACPDU パケットを送信するレートを指定します。指定可能な値は、以下のとおりです。
slow
または0
— デフォルト設定です。パートナーが 30 秒ごとに LACPDU を送信するよう指定します。fast
または1
— パートナーが 1 秒ごとに LACPDU を送信するよう指定します。
miimon=<time_in_milliseconds>
- MII リンク監視が発生する頻度を指定します (ミリ秒単位)。MII は NIC がアクティブであることを検証するために使用されるため、これは高可用性が必要な場合に役立ちます。root で以下のコマンドを入力して、特定の NIC のドライバーが MII ツールに対応していることを確認します:
~]#
ethtool <interface_name> | grep "Link detected:"
このコマンドで、bond インターフェースではなくeth0
のように <interface_name> をデバイスインターフェースの名前に置換します。MII が対応している場合は、コマンドは以下を返します:Link detected: yes
高可用性のためにボンディングされたインターフェースを使用する場合、各 NIC のモジュールは MII に対応していなければなりません。値を0
(デフォルト) に設定すると、この機能はオフになります。この設定を行う場合、このパラメーターの適切な開始ポイントは100
です。重要
arp_interval
及びarp_ip_target
の両パラメーター、あるいはmiimon
パラメーターを指定する必要があります。そうしないと、リンクが失敗した場合にネットワークパフォーマンスが低下する恐れがあります。 mode=<value>
- ボンディングポリシーを指定できます。<value> は以下のいずれかになります。
balance-rr
または0
— 耐障害性とロードバランシングのためラウンドロビンポリシーを設定します。利用可能な第 1 のインターフェースからそれぞれのボンディングされたスレーブインターフェースで送受信が順次行われます。active-backup
または1
— 耐障害性のためアクティブなバックアップポリシーを設定します。利用可能な第 1 のボンディングされたスレーブインターフェースにより送受信が行われます。別のボンディングされたスレーブインターフェースは、アクティブなボンディングされたスレーブインターフェースが失敗した場合にのみ使用されます。balance-xor
または2
— 耐障害性とロードバランシングのため XOR (排他的論理和) ポリシーを設定します。この方法を使用すると、インターフェースによって受信要求の MAC アドレスとスレーブ NIC の 1 つの MAC アドレスが一致します。このリンクが確立すると、利用可能な第 1 のインターフェースから送信が順次行われます。broadcast
または3
— 耐障害性のためブロードキャストポリシーを設定します。すべての送信は、すべてのスレーブインターフェースで行われます。802.3ad
または4
— IEEE 802.3ad 動的リンクアグリゲーションのポリシーを設定します。同一の速度とデュプレックス設定を共有するアグリゲーショングループを作成します。アクティブなアグリゲーターのすべてのスレーブで送受信を行います。802.3ad に対応するスイッチが必要です。balance-tlb
または5
— 耐障害性とロードバランシングのため送信ロードバランシング (TLB) ポリシーを設定します。発信トラフィックは、各スレーブインターフェースの現在の負荷に従って分散されます。受信トラフィックは、現在のスレーブにより受信されます。受信しているスレーブが失敗すると、別のスレーブが失敗したスレーブの MAC アドレスを引き継ぎます。balance-alb
または6
— 耐障害性とロードバランシングのためアクティブロードバランシング (ALB) ポリシーを設定します。IPV4 トラフィック用の送受信ロードバランシングが含まれます。ARP ネゴシエーションにより、受信ロードバランシングが可能です。
num_unsol_na=<number>
- フェイルオーバーイベント後に発行される未承諾の IPv6 近隣通知の数を指定します。1 つの未承諾 NA がフェイルオーバーの直後に発行されます。有効な範囲は
0 - 255
です。デフォルト値は1
です。このパラメーターは、アクティブなバックアップモードのみに適用します。 primary=<interface_name>
eth0
のようなプライマリデバイスのインターフェース名を指定します。primary
デバイスは、使用される最初のボンディングインターフェースであり、失敗しない限りは破棄されません。この設定が特に役立つのは、ボンディングインターフェースの NIC の 1 つが高速なため、大規模な負荷に対応できる場合です。この設定は、ボンディングインターフェースがactive-backup
モードの場合にのみ有効です。詳細については、/usr/share/doc/kernel-doc-<kernel-version>/Documentation/networking/bonding.txt
を参照して下さい。primary_reselect=<value>
- プライマリスレーブに対して再選択ポリシーを指定します。これは、アクティブなスレーブの失敗やプライマリスレーブの回復が発生した場合に、どのようにプライマリスレーブが選択されてアクティブなスレーブになるかという点に影響します。このパラメーターは、プライマリスレーブと他のスレーブ間でのフリップフロップを防ぐように設計されています。指定可能な値は、以下のとおりです。
always
または0
(デフォルト) — プライマリスレーブは有効になるといつでもアクティブなスレーブになります。better
または1
— プライマリスレーブの速度とデュプレックスが、現在のアクティブなスレーブの速度とデュプレックスと比べて良い場合は、プライマリスレーブは有効になるとアクティブなスレーブになります。failure
または2
— 現在のアクティブなスレーブが失敗してプライマリスレーブが有効になる場合のみ、プライマリスレーブはアクティブなスレーブになります。
primary_reselect
の設定は、以下の 2 つの場合では無視されます。- アクティブなスレーブがない場合は、回復する最初のスレーブがアクティブなスレーブになります。
- 初めにプライマリスレーブがスレーブにされた場合は、それは常にアクティブなスレーブになります。
sysfs
によりprimary_reselect
ポリシーを変更すると、新しいポリシーに従って直ちに最良のアクティブなスレーブを選択するようになります。これにより、状況によってはアクティブなスレーブに変更が生じる場合があります。 updelay=<time_in_milliseconds>
- リンクを有効にする前の待機時間を指定します (ミリ秒単位)。値は、
miimon
パラメーターで指定される値の倍数でなければなりません。デフォルトでは、値は0
に設定されており、待機時間を無効にします。 use_carrier=<number>
- リンク状態を決定するために
miimon
が MII/ETHTOOL ioctls またはnetif_carrier_ok()
を使用するかどうか指定します。netif_carrier_ok()
機能は、デバイスドライバーを使用してnetif_carrier_on/off
によりその状態を維持します。大半のデバイスドライバーはこの機能に対応しています。MII/ETHROOL ioctls ツールは、カーネル内の非推奨の呼び出しシーケンスを活用します。ただし、これは使用しているデバイスドライバーがnetif_carrier_on/off
に対応しない場合でも設定可能です。有効な値は次のとおりです。1
— デフォルト設定です。netif_carrier_ok()
の使用を有効にします。0
— MII/ETHTOOL ioctls の使用を有効にします。
注記
リンクが有効であるべきではない時に有効であるとボンディングインターフェースが主張した場合、使用しているネットワークデバイスドライバーはnetif_carrier_on/off
に対応しない可能性があります。 xmit_hash_policy=<value>
balance-xor
及び802.3ad
モードで、スレーブを選択する時に使用する送信ハッシュポリシーを選択します。指定可能な値は、以下のとおりです。0
またはlayer2
— デフォルト設定です。このパラメーターは、ハードウェア MAC アドレスの XOR を使用してハッシュを生成します。使用する公式は以下のとおりです:(<source_MAC_address> XOR <destination_MAC>) MODULO <slave_count>
このアルゴリズムは、すべてのトラフィックを同じスレーブの特定のネットワークピアに割り振り、802.3ad に対応します。1
またはlayer3+4
— 上位レイヤープロトコルの情報を (利用可能な場合は) 使用して、ハッシュを生成します。これにより、特定のネットワークピアへのトラフィックが複数のスレーブに及ぶようにできますが、単一の接続では複数のスレーブに及びません。断片化された TCP 及び UDP パケットに使用される公式は、以下のとおりです:((<source_port> XOR <dest_port>) XOR ((<source_IP> XOR <dest_IP>) AND
0xffff
) MODULO <slave_count>断片化された TCP または UDP パケットと他の全 IP プロトコルトラフィックについては、送信元及び宛先ポート情報が省略されます。非 IP トラフィックに関しては、公式はlayer2
送信ハッシュポリシーと同じです。このポリシーの目的は、特に PFC2 付きの Cisco スイッチや Foundry 及び IBM 製品など一部のスイッチの動作を真似ることです。このポリシーで使用されるアルゴリズムは、802.3ad に対応していません。2
またはlayer2+3
— layer2 及び layer3 プロトコル情報の組み合わせを使用して、ハッシュを生成します。ハードウェア MAC アドレス及び IP アドレスの XOR を使用して、ハッシュを生成します。公式は以下のとおりです:(((<source_IP> XOR <dest_IP>) AND
0xffff
) XOR ( <source_MAC> XOR <destination_MAC> )) MODULO <slave_count>このアルゴリズムは、すべてのトラフィックを同じスレーブの特定のネットワークピアに割り振ります。非 IP トラフィックの場合、公式は layer2 送信ハッシュポリシーと同一です。このポリシーの目的は、特に layer3 ゲートウェイデバイスが大半の宛先に到達する必要がある環境において、layer2 単独の場合より分散されたトラフィックを提供することです。このアルゴリズムは、802.3ad に対応しています。
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.