IP ネットワークマルチパスは、同一の IP リンク (たとえば、Ethernet) に複数のネットワークインタフェースカードを接続しているとき、障害経路の迂回をサポートします。また、負荷分散もサポートします。
この章では、以下の内容について説明します。
IP ネットワークマルチパスには次の機能があります。
ネットワークアダプタの単一点障害の回避
単位時間当たりのデータのスループットの向上
IP ネットワークマルチパスを使用する場合は、同一の IP リンクに代替アダプタを接続しておく必要があります。 接続しておくと、ネットワークアダプタに障害が発生した場合、自動的に代替アダプタに切り替わり、すべてのネットワークアクセスがこのアダプタを経由して行われるようになります。 このプロセスにより、ネットワークへのアクセスは中断することなく継続されます。同一の IP リンクに複数のネットワークアダプタを接続しておくと、トラフィックのスループットも向上します。これは、トラフィックが複数のネットワークアダプタによってやり取りされるからです。
RFC 2460 など、IP 関連の他の文書では、「IP リンク」の代わりに「リンク」という用語が使用されています。このマニュアルでは、IEEE 802 との混同を避けるため「IP リンク」を使用します。IEEE 802 では、「リンク」は Ethernet NIC から Ethernet スイッチへの 1 本のワイヤを意味します。
「用語集」の IP リンクの定義を参照してください。 表 1–1 も参考になります。
Solaris の IP ネットワークマルチパスには、次の機能があります。
障害検出 – ネットワークアダプタの障害を自動的に検出し、ネットワークアクセスを別のネットワークアダプタに自動的に切り替えます (「障害経路の迂回」)。障害検出が行われるのは、代替ネットワークアダプタを構成している場合のみです。詳細については、物理インタフェース障害の検出を参照してください。
回復検出 – 以前に障害が発生したネットワークアダプタの回復を検出します。ネットワークアクセスは、自動的に回復したネットワークアダプタに切り替わります (「回復した経路への復帰」)。 回復検出が行われるのは、回復した経路への復帰が有効になっている場合のみです。 詳細については、物理インタフェースの回復検出 を参照してください。
送信負荷分散 – 送信ネットワークパケットをパケットの順序を変えずに複数のネットワークアダプタに分散し、単位時間当たりのデータのスループットを向上させます。ただし、負荷分散が行われるのは、データが複数の接続を経由して複数のターゲットに送信される場合だけです。
通信の障害は次の場合に起こります。
NIC の送信パスまたは受信パスがパケット送信を停止した
NIC からリンクへの接続が切れた
Ethernet スイッチ上のポートがパケットを送受信しない
グループ内の物理インタフェースがシステムの起動時に存在しない
相手方のホストが応答しないか、パケットを転送するルーターが応答しない
Solaris の IP ネットワークマルチパスでは、上記 1 〜 4 の通信障害に対処できます。
次の表に、IP ネットワークマルチパスの構成要素を示します。
表 1–1 IP ネットワークマルチパスの構成要素
Solaris ネットワークマルチパスは、次の構成要素で実装されています。
マルチパスデーモン – in.mpathd(1M)
ip(7P)
in.mpathd デーモンは障害を検出します。 また、障害の迂回と回復した経路への復帰のため、さまざまなポリシーを実装します。in.mpathd は障害や回復を検出すると、ioctl により障害経路の迂回や回復した経路への復帰を指示します。障害経路の迂回処理は、自動的かつ透過的に行われます。
ある NIC グループに対して IP ネットワークマルチパスを使用している場合は、同じ NIC グループに対して Alternate Pathing (代替パス) を使用しないでください。同様に、代替パスを使用している場合は、IP ネットワークマルチパスを使用しないでください。NIC グループが異なる場合は、代替パスと IP ネットワークマルチパスを同時に使用できます。
in.mpathd デーモンは、2 つの方法でインタフェース障害および回復を検出します。 最初の方法では、インタフェースを通して ICMP エコー検査信号を送受信します。2 番目の方法では、インタフェースで RUNNING フラグを監視します。ネットワークインタフェースカードのいくつかのモデルのリンク状態は、RUNNING フラグによって反映されます。その結果、リンク障害が発生すると、すぐに検出されます。上記のいずれかの方法で障害が検出された場合、インタフェースで障害が発生したものと見なされます。また、上記の両方の方法で回復が検出された場合に限り、インタフェースは回復したものと見なされます。
in.mpathd デーモンは、すべてのインタフェース上で、リンクに接続されているターゲット (検査信号の宛先となる標識) に対して ICMP エコー検査信号を送信します。障害と回復を検出するためには、インタフェースをグループに追加しておく必要があります。インタフェースをマルチパスグループに追加したあと、検査用 IP アドレスを割り当てます。デーモンは、マルチパスグループに所属するすべてのインタフェースに対して検査信号を送信し、障害を検出します。検査用 IP アドレスやグループの構成手順については、2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。
検査信号を送信するターゲットは in.mpathd が動的に決定するため、ユーザーはターゲットを指定できません。リンクに接続されているルーターは、検査信号の宛先となるターゲットとして選択されます。リンクにルーターが接続されていない場合は、リンク上の任意のホストが選択されます。ホスト選択にあたっては、「すべてのホスト」を意味するマルチキャストアドレス (IPv4 では 224.0.0.1、IPv6 では ff02::1) にマルチキャストパケットが送信されます。検査信号は、ICMP エコーパケットに応答する最初のいくつかのホストに送信されます。ICMP エコーパケットに応答するルーターやホストを発見できない場合、in.mpathd は障害を検出できません。
グループの各 NIC が正常に機能するかどうかを確認するために、in.mpathd は、マルチパスグループのすべてのインタフェースを通してすべてのターゲットに個別に検査信号を送信します。連続する 5 つの検査信号に対して応答がない場合、in.mpathd はそのインタフェースに障害があるものとみなします。検査信号を発信する頻度は、障害検出時間に依存します。障害検出時間のデフォルト値は 10 秒です。障害検出時間の変更方法については、in.mpathd(1M) のマニュアルページを参照してください。障害検出時間が 10 秒の場合、検査信号を発信する頻度はおよそ 2 秒に 1 度になります。回復した経路への復帰処理は、回復の検出後に行われます。インタフェースの障害が検出されるまでの時間は、およそ 20 秒から数分です。ただし、使用しているシステムとネットワーク負荷によって多少の増減があります。
障害検出時間は、障害検出用 ICMP エコー検査信号のみにあてはまります。リンク障害の結果、インタフェースの RUNNING フラグの設定がクリアされた場合、in.mpathd デーモンはフラグ状態の変更に対してすぐに応答します。
障害が検出されると、障害経路の迂回処理が行われます。こうして、すべてのネットワークアクセスが、障害のあるインタフェースから同じグループ内の正常な別のインタフェースに移されます。待機インタフェースが構成されている場合、in.mpathd は、IP アドレス、ブロードキャスト、マルチキャストメンバーシップの移動先に待機インタフェースを選択します。待機インタフェースが構成されていない場合は、最小の IP アドレスを持つインタフェースを選択します。
同じグループ内の物理インタフェースがシステムの起動時に存在しない場合、特別な方法で障害検出が行われます。こうした障害は、起動スクリプトの /etc/init.d/network で検出されます。次のようなエラーメッセージが表示されます。
moving addresses from failed IPv4 interfaces: hme0 (moved to hme1) moving addresses from failed IPv6 interfaces: hme0 (moved to hme1) |
この障害検出方法では、静的な IP アドレスだけが別の物理インタフェースに移されます。これらのアドレスは、hostname ファイルに指定されたアドレスです。 物理インタフェースは、同じマルチパスグループ内のインタフェースです。
このような障害は、回復復帰で自動的に回復することはできません。IP ネットワークマルチパスの RCM DR ポスト接続機能は、NIC の DR 接続を自動化します。 NIC のDR を接続すると、インタフェースが結合および構成されます。リブートする前にインタフェースを削除した場合、IP マルチパスのリブート安全機能により、IP アドレスが回復されます。 その IP アドレスは、交換した NIC に転送されます。 その後、交換した NIC は元の IP マルチパスインタフェースグループに追加されます。詳細については、システムの起動時に存在しない物理インタフェースを回復する方法を参照してください。
in.mpathd デーモンが検査信号パケットを 10 個連続して受け取り、インタフェースの RUNNING フラグが設定された時点で、そのインタフェースは回復したと見なされます。
あるインタフェースが正常でない場合、そのインタフェースのすべてのアドレスがグループ内の別の正常なインタフェースに移されます。in.mpathd で回復を検出するためには、検査用 IP アドレスを指定する必要があります。 障害の迂回処理中に変更されない IP アドレスを指定してください。 この検査用 IP アドレスに関しては、ネットワークアクセスの障害経路の迂回は行われません。したがって、通常のアプリケーションでこのアドレスを使用することは避けてください。設定手順については、2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。in.mpathd が回復を検出すると、すべてのネットワークアクセスが回復した経路に復帰します。
物理インタフェース障害の検出で説明するように、自動回復復帰は、システムの起動時に存在しない物理インタフェースに対してはサポートされていません。システムの起動時に存在しない物理インタフェースを回復する方法を参照してください。
グループ障害とは、すべてのネットワークインタフェースカードで同時に障害が発生することです。in.mpathd はグループ障害が発生すると、障害経路の迂回を行いません。これは、すべてのターゲットで同時に障害が発生した場合も同様です。この場合 in.mpathd は、現在のすべてのターゲット選択を取り消し、新しいターゲットを見つけます。物理インタフェース障害の検出を参照してください。
グループ障害は、以前のマニュアルではリンク障害と表記しています。
この節では、IP ネットワークマルチパスを有効にする方法について説明します。IP ネットワークマルチパス機能を使用するには、同じ IP リンクに複数の物理インタフェースで接続する必要があります。たとえば、同じマルチパスグループの下に同じ Ethernet スイッチや同じ IP サブネットを構成できます。物理インタフェースが 1 つだけの場合は、1 つの物理インタフェースで構成されたマルチパスグループの管理を参照してください。
マルチパスグループは、空文字列でない名前で識別されます。たとえば、math-link、bio-link、chem-link などは有効な名前です。名前は通常、グループが接続されている場所を表します。障害が検出されると、障害が発生したアダプタからマルチパスグループ内の正常なアダプタにネットワークアドレスが切り替わります。 ネットワークアクセスの迂回先には、IPv4 のユニキャスト、ブロードキャスト、およびマルチキャストと、IPv6 のユニキャストおよびマルチキャストが含まれます。IP ネットワークマルチパスが正常に動作するには、同じマルチパスグループに属するネットワークアダプタで次の条件が満たされている必要があります。
マルチパスグループのすべてのネットワークアダプタに対し、同じ STREAMS モジュール群をプッシュおよび構成する必要があります。
1 つのネットワークアダプタで IPv4 を結合する場合は、マルチパスグループのすべてのネットワークアダプタで IPv4 を結合する必要があります。
1 つのネットワークアダプタで IPv6 を結合する場合は、マルチパスグループのすべてのネットワークアダプタで IPv6 を結合する必要があります。
システム内のすべての Ethernet ネットワークに一意の MAC アドレスを割り当てる必要があります。SPARC プラットフォームでは、一意の MAC アドレスを取得するため、openboot PROM で local-mac-address を TRUE に設定します。IA (x86) プラットフォームでは、何も設定する必要はありません。
マルチパスグループのすべてのネットワークアダプタを、同じ IP リンクに接続する必要があります。
マルチパスグループに異なる種類のインタフェースを含めないようにします。グループ化するインタフェースは、/usr/include/net/if_types.h に定義されているのと同じタイプのインタフェースである必要があります。たとえば、Ethernet とトークンリングを一緒にしたり、トークンバスと ATM (非同期転送モード) を一緒にしたりすることはできません。
ATM で IP ネットワークマルチパスを使用する場合は、その ATM を LAN エミュレーション向けに構成する必要があります。従来の IP インスタンスでのマルチパスは現在サポートされていません。
4 つ目の条件は、マルチパスグループに属するインタフェースだけでなく、システムのすべてのインタフェースに適用されます。
出荷時設定で一意な MAC アドレスになっていないアダプタは、各アダプタの MAC アドレスを手動で構成して対処することができます。たとえば、起動スクリプトファイル中に ifconfig ether コマンドを使用して構成します。
手動で構成された MAC アドレスは、システムをリブートすると無効になります。MAC アドレスは、一意なものを選択する必要があります。アダプタの MAC アドレスが一意でない場合、IP ネットワークマルチパスは予測できない動作をする可能性があります。
グループの構成には、ifconfig コマンドを使用します。このコマンドは、グループ名を必要とする新しい group パラメータを使用します。 ifconfig コマンドは、指定のグループ内にインタフェースの IPv4 インスタンスと IPv6 インスタンスを追加できます。group パラメータは次のように使用します。
ifconfig interface-name group group-name |
グループ名には空白文字を使用しないでください。また、よく似たグループ名の使用も避けてください。ifconfig 状態表示では空白文字が表示されません。このため、空白文字が含まれているグループ名と含まれていないグループ名の区別がつかず、混乱を招くことがあります。
特定のグループに IPv4 インタフェースを追加すると、同じグループに IPv6 インタフェースが自動的に追加されます。さらに、同じコマンドを使って、同じサブネットに接続された 2 つ目のインタフェースを同じグループに追加することができます。2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。
マルチパスグループからインタフェースを削除するには、group オプションで空文字列を指定します。グループからインタフェースを削除する方法を参照してください。
すでにマルチパスグループに追加されているインタフェースを新しいグループに追加できます。この場合、既存のグループからインタフェースを削除する必要はありません。新しいグループに追加されたインタフェースは、既存のグループから自動的に削除されます。インタフェースを既存のグループから別のグループに移動する方法を参照してください。
1 つのマルチパスグループに構成できるネットワークアダプタの数に制限はありません。group オプションを論理インタフェースに指定することはできません。たとえば、hme0 は使用できますが、hme0:1 は使用できません。
マルチパスグループ内のすべてのインタフェースを同じ IP リンクに接続する必要があります。インタフェースに障害が発生すると、障害経路の迂回処理が行われ、すべての IP アドレスが障害のあるインタフェースから同じグループ内の正常な別のインタフェースに移されます。IP アドレスの移動先のインタフェースは、同じ IP リンクに接続された正常なインタフェースです。ルーターは、正常なインタフェースに移動したアドレス宛てに引き続きパケットを送信できます。
マルチパスグループのすべての物理インタフェースを構成する際には、検査用 IP アドレスを指定する必要があります。検査用 IP アドレスは、障害や回復の検出に必要です。未構成の検査用 IP アドレスは、障害経路の迂回処理の対象から除外されます。検査用 IP アドレスは in.mpathd 専用です。通常のアプリケーションでは、このアドレスを使用しないようにしてください。このアドレスは、インタフェースに障害が発生したとき、障害経路の迂回処理の対象から除外されます。IPv4 では、検査用 IP アドレスを構成する際には、通常のアプリケーションが検査用 IP アドレスを使用しないように設定してください。2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。
この節では、次のインターネットプロトコルの検査用 IP アドレスの構成について説明します。
IPv4
IPv6
in.mpathd マルチパスデーモンは、障害や回復を検出するための検査用 IP アドレスを必要とします。この IP アドレスは、ルーティング可能なアドレスでなければなりません。つまり、このアドレスのネットワークアドレスがリンク内のすべてのルーターから認識可能である必要があります。検査用 IP アドレスの構成には、ifconfig コマンドの -failover オプションを使用します。検査用 IP アドレスを設定する構文は次の通りです。
# ifconfig interface-name addif ip-address <その他のパラメータ> -failover up |
<その他のパラメータ> には、実際の構成に応じたパラメータを指定します。詳細については、ifconfig(1M) のマニュアルページを参照してください。IPv4 検査用 IP アドレスの設定手順については、2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。
たとえば、次のように構成するとします。
アドレスが 19.16.85.21 の新しい論理インタフェースを追加
ネットマスクおよびブロードキャストアドレスをデフォルト値に設定
インタフェースの検査用 IP アドレスに構成
この場合、次のコマンドを入力します。
# ifconfig hme0 addif 19.16.85.21 netmask + broadcast + -failover up |
この検査用 IP アドレスをアプリケーションから使用されないようにするため IPv4 検査用 IP アドレスを deprecated と指定する必要があります。2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。
アドレスの障害経路の迂回属性を有効にするには、failover (ダッシュ (-) をつけない) を指定します。
マルチパスグループのすべての検査用 IP アドレスには、同じネットワークアドレスを使用してください。検査用 IP アドレスは単一の IP サブネットに属している必要があります。
リンクローカルアドレスが物理インタフェースに結び付けられているので、IPv6 検査用 IP アドレスを構成するには、リンクローカルアドレス自体を使用します。したがって、IPv6 では、別個の IP アドレスは必要ありません。IPv6 の場合、-failover オプションの構文は次の通りです。
# ifconfig interface-name inet6 -failover |
IPv6 検査用 IP アドレスの設定手順については、2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。
マルチパスグループですべてのグループのインタフェースに IPv4 と IPv6 の両方が結合される場合には、別個の IPv4 検査用 IP アドレスは必要ありません。in.mpathd デーモンは、IPv6 リンクローカルアドレスを使ってインタフェースを調べることができます。IPv6 リンクローカルアドレスは、IPv6 を結合すると自動的に作成されます。
アドレスの障害経路の迂回属性を有効にするには、failover (ダッシュ (-) をつけない) を指定します。
有効な IPv6 検査用 IP アドレスは、リンクローカルアドレスだけです。
検査用 IP アドレスを構成したあと、このアドレスが通常のアプリケーションで使用されないようにする必要があります。検査用 IP アドレスに対して障害経路の迂回処理が行われないため、アプリケーションから検査用 IP アドレスを使用できるようにすると、検査用 IP アドレスを使用したアプリケーションは障害迂回の処理時に異常終了します。検査用 IP アドレスが通常のアプリケーションに使用されるのを防ぐには、ifconfig コマンドを使って検査用 IP アドレスを deprecated と指定します。このオプションは次の構文により指定します。
ifconfig interface-name deprecated |
deprecated (推奨されない) と指定したアドレスは、アプリケーションで明示的に指定されていない限り、通信のソースアドレスとしては選択されません。このようなアドレスを明示的に指定するのは in.mpathd だけです。2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。
リンクローカルアドレスはネームサービス (DNS、NIS、NIS+) に登録されないため、アプリケーションがこれを通信に使用することはありません。したがって、IPv6 検査用 IP アドレスを deprecated と指定する必要はありません。
IPv6 リンクローカルアドレスは deprecated と指定しないでください。
アドレスの deprecated 属性を無効にするには、-deprecated オプションを使用します。
IPv4 検査用 IP アドレスは、ネームサービスデータベース (DNS、NIS、NIS+) に追加しないでください。IPv6 では、リンクローカルアドレスが検査用 IP アドレスとして使用されます。通常はネームサービステーブルには追加されません。
自動的に構成された IPv6 アドレスは、システムをリブートすると保持されません。リブートするときに IP アドレスを保持する必要がある場合には、アプリケーションで静的 IP アドレスを使用します。
マルチパスグループと検査用 IP アドレスの構成には、/etc/hostname.interface ファイルを使用できます。/etc/hostname.interface ファイルを使ってマルチパスグループを構成するには、次の構文に従ってファイルに 1 行追加します。
interface-address <パラメータ> group group-name up \ addif logical-interface-address <パラメータ> up |
たとえば、次の構成で test グループを作成するとします。
物理インタフェース hme0 のアドレスが 19.16.85.19
論理インタフェースのアドレスが 19.16.85.21
deprecated と -failover を指定
ネットマスクおよびブロードキャストアドレスをデフォルト値に設定
この場合、/etc/hostname.hme0 ファイルに次の行を追加します。
19.16.85.19 netmask + broadcast + group test up \ addif 19.16.85.21 deprecated -failover netmask + broadcast + up |
IPv4 hostname ファイルの構成手順については、2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。
IPv6 の設定では、次の構文に従って /etc/hostname6.interface ファイルに 1 行追加します。
<パラメータ> group group-name up |
たとえば、IPv6 検査用 IP アドレスを使って hme0 に対し test グループを作成するには、/etc/hostname6.hme0 ファイルに次の行を追加します。
-failover group test up addif 1080::56:a00:20ff:feb9:19fa up |
IPv6 hostname6 ファイルの構成手順については、2 つのインタフェースでマルチパスインタフェースグループを構成する方法を参照してください。
マルチパスグループには、待機インタフェースを構成できます。名前が示すとおり、そのインタフェースは待機インタフェースと見なされます。待機インタフェースは、グループ内のその他のインタフェースに障害が発生したときだけ使用されます。待機インタフェースが障害迂回 IP アドレスとして機能していない場合には、IFF_INACTIVE フラグが設定されます。その結果、アクティブなインタフェースに障害が発生すると、障害経路の迂回に待機インタフェースが必ず選択されます。待機インタフェースが選択されたあと、IFF_INACTIVE フラグがそのインタフェースで消去されます。その後、アクティブとなった待機インタフェースは他のアクティブなインタフェースと同様に処理されます。一部の障害では、待機インタフェースが選択されないことがあります。この場合、待機インタフェースではなく、いくつかの IP アドレスにアクティブなインタフェースが選択されます。
待機インタフェースは、通常のデータパケットの送信には使用されません。したがって、待機インタフェースでのデータの流量は限られています。待機インタフェースが正常であるかどうかを判定するための検査信号の送信に使用するため、待機インタフェースには検査用 IP アドレスが必要です。待機インタフェースに検査用 IP アドレスが指定されていないと、グループの別のインタフェースに障害が発生しても、この待機インタフェースは障害経路の迂回先にはなりません。次の場合には、待機インタフェースにデータが流れることがあります。
ネットワーク上の別ホストが待機インタフェースのアドレスを使ってこのホストと通信すると、着信パケットにはその待機インタフェースが使用されます。
bind または IP_ADD_MEMBERSHIP を使って、アプリケーションはアドレスを指定できます。待機インタフェース上にアドレスを指定するアプリケーションは、待機インタフェースを使って引き続きトラフィックを生成できます。
このように、待機インタフェースは、アプリケーションによって明示的に選択されていない限り、検査目的以外には使用されません。グループのインタフェースに障害が発生すると、すべてのネットワークアクセスは待機インタフェースに切り替わります。待機インタフェースを構成するには、次のように ifconfig コマンドの standby オプションを使用します。
# ifconfig interface-name standby group group-name |
この手順については、インタフェースの 1 つが待機インタフェースであるマルチパスグループを構成する方法を参照してください。
待機インタフェースに検査用 IP アドレスが設定されていると、in.mpathd デーモンは、待機インタフェースを通して検査信号を送信します。待機インタフェースには、検査用 IP アドレスだけを設定してください。待機インタフェースに他のアドレスを追加しても、追加は失敗します。待機インタフェースに検査用 IP アドレス以外のアドレスが割り当てられている場合、自動的に障害経路の迂回処理が行われ、割り当て済みのアドレスは同じグループ内の別のインタフェースに移されます。 検査用 IP アドレスが存在する場合、その検査用 IP アドレスはそのままです。待機インタフェース上に検査用 IP アドレス以外のアドレスを構成することは避けてください。
待機インタフェース上に検査用 IP アドレスを指定するには、ifconfig コマンドの standby や up オプションの前に deprecated と -failover オプションを指定します。
待機インタフェースに検査用 IP アドレスを設定するには、次の構文を使用します。
# ifconfig interface-name plumb ip-address <その他のパラメータ> deprecated -failover standby up |
<その他のパラメータ> には、実際の構成に応じたパラメータを指定します。詳細については、ifconfig(1M) のマニュアルページを参照してください。
待機インタフェースに検査用 IP アドレスが設定されていないと、待機インタフェースは障害経路の迂回には使用されません。
たとえば、次の構成で待機インタフェースに検査用 IP アドレスを作成するとします。
物理インタフェース hme2 を待機インタフェースにする
アドレスは 19.16.85.22
deprecated と -failover を指定
ネットマスクおよびブロードキャストアドレスをデフォルト値に設定
この場合、コマンド行に次のように入力します。
# ifconfig hme2 plumb 19.16.85.22 netmask + broadcast + deprecated -failover standby up |
インタフェースは、アドレスに対して障害経路の迂回が行われないように設定されたあとにだけ、待機インタフェースとして設定されます。
この手順については、インタフェースの 1 つが待機インタフェースであるマルチパスグループを構成する方法を参照してください。
待機状態を解除するには、次の構文を使用します。
# ifconfig interface-name -standby |
マルチパスグループ内にネットワークアダプタが 1 個しかない場合、障害経路の迂回処理は行われません。ただし、その NIC 上で障害検出を行うマルチパスグループは使用できます。
マルチパスグループ内にアダプタが 1 個しかない場合は、検査用 IP アドレスを構成する必要はありません。単一の IP アドレスを、データの送信と障害検出の両方に使用できます。マルチパスグループ内の単一のアダプタに IFF_NOFAILOVER アドレスを構成する場合、in.mpathd はこのアドレスを使って検査用パケットを送信します。それ以外の場合、in.mpathd は検査用パケットを送信するためのデータアドレスを選択します。複数の物理インタフェースがある場合とは異なり、1 つの物理インタフェースを deprecated と指定する必要はありません。
単一のアダプタからなるグループの場合、次の構文を使って IPv4 アドレスを構成します。
# ifconfig interface-name -failover group group-name |
次の構文も使用できます。
# ifconfig interface-name group group-name |
IPv6 の場合は、次の構文を使用します。
# ifconfig interface-name inet6 -failover group group-name |
次の構文も使用できます。
# ifconfig interface-name inet6 group group-name |
デーモンが障害を検出すると、インタフェースの状態がそれに応じて変更され、コンソールにログが出力されます。
障害の発生元が検査信号の受信先そのものであるのか NIC であるのかについては、確認できません。検査信号の受信先は、単一の物理インタフェースを介して検査されます。サブネットのデフォルトルーターが 1 つしかない場合、グループの物理インタフェースが 1 つだけであれば、マルチパスを無効にしてください。IPv4 と IPv6 のデフォルトルーターが別個に存在する場合 (または、複数のデフォルトルーターが存在する場合) は、検査信号の受信先は 2 つ以上あります。 したがって、マルチパスを有効にしても問題ありません。
ifconfig コマンドの group オプションに空文字列を指定すると、インタフェースが既存のグループから削除されます。グループからインタフェースを削除する方法を参照してください。 グループからインタフェースを削除する場合は、慎重に行う必要があります。マルチパスグループの他のインタフェースに障害が発生している場合、障害経路の迂回が行われていることがあります。たとえば、hme0 に障害が発生し、すべてのアドレスが同じグループに属する hme1 に移されたとします。このグループから hme1 を削除すると、in.mpathd はこれらの障害経路の迂回が行われたアドレスをグループ内の他のインタフェースに戻します。正常に動作しているインタフェースがグループ内になければ障害経路の迂回が行われず、すべてのネットワークアクセスは維持できません。
同様に、インタフェースがグループに属しており、結合解除する必要がある場合は、まずグループからインタフェースを削除する必要があります。その後、そのインタフェース上に元の IP アドレス全部が構成されていることを確認します。これは、グループから削除されるインタフェースの構成を in.mpathd デーモンが再現しようとするからです。インタフェースを結合解除する場合は、その前に構成が再現されていなければなりません。障害経路の迂回の前後でインタフェースの構成がどのように変化するかについては、マルチパスデーモンを参照してください。
動的再構成 (DR: Dynamic Reconfiguration) では、IP ネットワークマルチパスを使用して、IP を使用中のユーザーに影響を及ぼすことなく特定のネットワークデバイスを切り離すことができます。NIC が DR から切り離され、オフラインになる前に、すべての障害経路迂回 IP アドレスは障害経路を迂回します。これらのアドレスは NIC 上で機能しており、障害迂回処理によって、同じ IP ネットワークマルチパスグループ内の別の NIC に自動的に移されます。まず、検査用 IP アドレスが無効になります。次に、NIC の結合が解除されます。
IP ネットワークマルチパスのリブート安全機能により、静的な IP アドレスは自動的に代替インタフェース上で機能します。代替インタフェースは、同じ IP ネットワークマルチパスグループ内のインタフェースです。静的 IP アドレスは、検出されないカードに関連付けられた /etc/hostname.* ファイル内のアドレスです。なお、あとで元のインタフェースをそのシステムに戻しても、これらの IP アドレスが自動的にそのインタフェースに戻るわけではありません。
in.mpathd マルチパスデーモンは、グループに属するすべてのインタフェースから検査信号を送信することによって障害や回復を検出します。in.mpathd マルチパスデーモンも、グループに属する各インタフェースで RUNNING フラグを監視することによって障害や回復を検出します。 グループに属するインタフェースに検査用 IP アドレスがあれば、デーモンは検査信号の送信を開始し、そのインタフェースに障害がないかどうかを判断します。デーモンは、連続する検査信号 5 個に対して何も応答がない場合、インタフェースに障害が発生していると見なします。RUNNING フラグが設定されていない場合も、インタフェースに障害が発生していることになります。検査頻度は、障害検出時間によって異なります。 デフォルトの障害検出時間は 10 秒です。つまり、検査頻度は 2 秒に 1 回の割合です。ネットワークで同期が発生するのを防ぐため、検査は定期的には実行されません。検査信号 5 個に連続して応答がない場合、in.mpathd はインタフェースに障害が発生していると見なします。このデーモンは、障害経路の迂回処理を行います。これにより、障害のあるインタフェースから同じグループ内の正常な別のインタフェースにネットワークアクセスが移されます。待機インタフェースが構成されている場合は、IP アドレスと、ブロードキャストやマルチキャストメンバーシップの障害経路の迂回用に待機インタフェースが選択されます。待機インタフェースが構成されていない場合は、最小の IP アドレスをもつインタフェースが選択されます。関連情報については、in.mpathd(1M) のマニュアルページを参照してください。
次に、一般的な構成例を 2 つ紹介します。この 2 つの例から、インタフェースに障害が発生したとき構成内容がどのように変化するかについても確認できます。hme0 インタフェースに障害が発生すると、すべてのアドレスが hme0 から hme1 に移されます。
hme0: flags=9000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 19.16.85.19 netmask ffffff00 broadcast 19.16.85.255 groupname test hme0:1: flags=9000843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 2 inet 19.16.85.21 netmask ffffff00 broadcast 129.146.85.255 hme1: flags=9000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 19.16.85.20 netmask ffffff00 broadcast 19.16.85.255 groupname test hme1:1: flags=9000843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 2 inet 19.16.85.22 netmask ffffff00 broadcast 129.146.85.255 hme0: flags=a000841<UP,RUNNING,MULTICAST,IPv6,NOFAILOVER> mtu 1500 index 2 inet6 fe80::a00:20ff:feb9:19fa/10 groupname test hme1: flags=a000841<UP,RUNNING,MULTICAST,IPv6,NOFAILOVER> mtu 1500 index 2 inet6 fe80::a00:20ff:feb9:1bfc/10 groupname test |
hme0: flags=19000842<BROADCAST,RUNNING,MULTICAST,IPv4,NOFAILOVER,FAILED> mtu 0 index 2 inet 0.0.0.0 netmask 0 groupname test hme0:1: flags=19040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,FAILED> mtu 1500 index 2 inet 19.16.85.21 netmask ffffff00 broadcast 129.146.85.255 hme1: flags=9000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 19.16.85.20 netmask ffffff00 broadcast 19.16.85.255 groupname test hme1:1: flags=9000843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 2 inet 19.16.85.22 netmask ffffff00 broadcast 129.146.85.255 hme1:2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 6 inet 19.16.85.19 netmask ffffff00 broadcast 19.16.18.255 hme0: flags=a000841<UP,RUNNING,MULTICAST,IPv6,NOFAILOVER,FAILED> mtu 1500 index 2 inet6 fe80::a00:20ff:feb9:19fa/10 groupname test hme1: flags=a000841<UP,RUNNING,MULTICAST,IPv6,NOFAILOVER> mtu 1500 index 2 inet6 fe80::a00:20ff:feb9:1bfc/10 groupname test |
上記の例では、障害が発生したことを示す FAILED フラグが hme0 に設定されています。また、hme1:2 が新しく作成されているのがわかります。hme0 の構成は hme1:2 に引き継がれました。これによって、アドレス 19.16.85.19 は、hme1 からアクセスできるようになります。19.16.85.19 に対応するマルチキャストメンバーシップはこのあともパケットを受信できますが、パケットは hme1 を通して受信されます。アドレス 19.16.85.19 が hme0 から hme1 に障害経路の迂回が行われるとき、hme0 にはダミーアドレス 0.0.0.0 が作成されます。ダミーアドレスは、回復した経路への復帰時に削除されます。ダミーアドレスは、hme0 を引き続きアクセスできる状態に保つために作成されます。hme0 がなければ、hme0:1 は存在できません。
同様に、IPv6 アドレスが hme0 から hme1 へ移されています。IPv6 では、マルチキャストメンバーシップはインタフェースインデックスに関連付けられています。マルチキャストメンバーシップも、障害経路の迂回処理により、hme0 から hme1 へ移されます。 in.ndpd によって構成されたすべてのアドレスも移動します。この動作は、上記の例には示されていません。
in.mpathd デーモンは引き続き、障害が発生した NIC の hme0 を通して検査を行います。デーモンは、デフォルトの障害検出時間 10 秒の間に連続して 10 回の応答を受け取った時点で、インタフェースが回復されたものとみなします。その後、回復した経路への復帰処理を行います。回復した経路への復帰が行われると、元の構成が再び確立されます。
障害や回復の検出時にコンソールに出力されるエラーメッセージについては、in.mpathd(1M) のマニュアルページを参照してください。
in.mpathd デーモンは、/etc/default/mpathd 構成ファイルの設定値を使ってマルチパスを構成します。このファイルへの変更は、in.mpathd が起動したときと SIGHUP シグナルを受信したときに有効になります。このファイルには、次のデフォルト設定値と情報が含まれています。
# # Time taken by mpathd to detect a NIC failure in ms. The minimum time # that can be specified is 100 ms. # FAILURE_DETECTION_TIME=10000 # # Failback is enabled by default. To disable failback turn off this option # FAILBACK=yes # # By default only interfaces configured as part of multipathing groups # are tracked. Turn off this option to track all network interfaces # on the system # TRACK_INTERFACES_ONLY_WITH_GROUPS=yes |
/etc/default/mpathd 構成ファイルの構成手順については、マルチパス構成ファイルを構成する方法を参照してください。
障害検出時間の設定値は小さくすることができます。ネットワークの負荷が高すぎると、障害検出時間が守られないことがあります。この場合、in.mpathd によって、コンソールに障害検出時間が十分でないことを示すメッセージが出力されます。コンソールには、現在の使用可能な時間も出力されます。応答が正しく戻ってくる場合は、このファイルの障害検出時間に従って検出が行われます。
障害経路の迂回が行われたあとに障害の発生したインタフェースが回復すると、回復した経路への復帰が行われます。ただし、FAILBACK が no に設定されていると、インタフェースの回復した経路への復帰は行われません。
物理インタフェース障害の検出で説明するように、自動回復復帰は、システムの起動時に存在しない物理インタフェースに対してはサポートされていません。システムの起動時に存在しない物理インタフェースを回復する方法を参照してください。
TRACK_INTERFACES_ONLY_WITH_GROUPS オプションが無効になっていると、in.mpathd はシステムのすべてのインタフェースを追跡します。障害を検出すると、適切なメッセージをコンソールに出力します。このオプションが正しく機能するには、すべてのインタフェース上の Ethernet アドレスが一意である必要があります。