同じ IP リンク (たとえば Ethernet) に複数のネットワークインタフェースカードを接続していれば、IP ネットワークマルチパスによって負荷分散と障害経路の迂回がサポートされます。
この章では、以下の内容について説明します。
IP ネットワークマルチパスには次の機能があります。
ネットワークアダプタの単一点障害の回避
単位時間当たりのデータの流量の向上
ネットワークアダプタに障害が発生した場合、同じ IP リンクに別のアダプタが接続されていれば、すべてのネットワークアクセスは、障害の発生したアダプタからこのアダプタに自動的に切り替えられます。このプロセスにより、ネットワークへのアクセスは中断することなく継続されます。また、同じ IP リンクに複数のネットワークアダプタが接続されている場合、トラフィックを複数のネットワークアダプタに分散させることにより、トラフィックのスループットが向上します。
RFC 2460 など、IP 関連の他の文書では、「IP リンク」の代わりに「リンク」という用語が使用されています。このマニュアルでは、IEEE 802 との混同を避けるため「IP リンク」を使用します。IEEE 802 では、「リンク」は Ethernet NIC から Ethernet スイッチへの 1 本のワイヤを意味します。
IP リンクの説明は、用語集または表 27–1 を参照してください。
Solaris の IP ネットワークマルチパスには、次の機能があります。
障害検出 – ネットワークアダプタの障害を自動的に検出し、ネットワークアクセスを別のネットワークアダプタに自動的に切り替えます (障害経路の迂回)。ただし、別のネットワークアダプタが事前に構成されていなければなりません。詳細については、物理インタフェース障害の検出を参照してください。
回復検出 – 障害の発生したネットワークアダプタが回復したことを検出し、別のネットワークアダプタで行われていたネットワークアクセスを、自動的に元に戻します (回復した経路への復帰)。ただし、回復した経路への復帰が事前に有効になっていなければなりません。詳細については、物理インタフェースの回復検出を参照してください。
送信負荷分散 – 送信ネットワークパケットをパケットの順序を変えずに複数のネットワークアダプタに分散し、単位時間当たりのデータの流量を向上させます。ただし、負荷分散が行われるのは、データが複数の接続を経由して複数の標識に送信される場合だけです。
通信の障害は次の場合に起こります。
NIC の送受信パスがパケット送信を停止した。
NIC からリンクへの接続が切れた
Ethernet スイッチ上のポートがパケットを送受信しない。
グループ内の物理インタフェースがシステムの起動時に存在しない。
相手方のホストが応答しないか、パケットを転送するルーターが応答しない
Solaris の IP ネットワークマルチパスでは、上記 1 〜 4 の通信障害に対処します。
表 27–1 に、IP ネットワークマルチパスの構成要素を示します。
表 27–1 IP ネットワークマルチパスの構成要素
Solaris ネットワークマルチパスは、次の構成要素で実装されています。
マルチパスデーモン – in.mpathd(1M)
ip(7P)
in.mpathd デーモンは障害を検出し、障害経路の迂回や回復した経路への復帰に対するさまざまな方針を実装します。in.mpathd は障害や回復を検出すると、ioctl を発行して障害経路の迂回や回復した経路への復帰を指示します。IP はこの 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 度になります。
障害検出時間が適用されるのは、障害を検出する ICMP エコー検査信号方法だけです。リンク障害の結果、インタフェースの RUNNING フラグを消去すると、in.mpathd デーモンはフラグ状態の変更に対してただちに応答します。
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 アドレスだけが、同じマルチパスグループの異なる物理インタフェースに移動します。
このような障害は、回復復帰によって自動的に回復することはできません。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 などは有効な名前です。名前は通常、グループがどこに接続されているかを表しています。マルチパスグループのいずれか 1 つのネットワークアダプタに障害が発生すると、障害が発生したアダプタのすべてのネットワークアクセスが、同じグループの正常なアダプタに迂回されます。ネットワークアクセスの障害経路の迂回の対象には、IPv4 のユニキャスト、ブロードキャスト、およびマルチキャストと、IPv6 のユニキャストおよびマルチキャストが含まれます。IP ネットワークマルチパスが正常に動作するには、同じマルチパスグループに属するネットワークアダプタで次の条件が満たされている必要があります。
マルチパスグループのすべてのネットワークアダプタに対し、同じ STREAMS モジュール群をプッシュおよび構成する必要があります。
1 つのネットワークアダプタで IPv4 を結合するのであれば、マルチパスグループのすべてのネットワークアダプタで IPv4 を結合する必要があります。
1 つのネットワークアダプタで IPv6 を結合するのであれば、マルチパスグループのすべてのネットワークアダプタで IPv6 を結合する必要があります。
Ethernet の場合は、システムにあるすべての Ethernet ネットワークアダプタに固有の MAC アドレスが必要です。SPARC プラットフォームの場合は、openboot PROM の local-mac-address? を true に設定します。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 パラメータでグループ名を指定し、インタフェースの IPv4 と IPv6 に両方をそのグループに追加します。group オプションは次のように使用します。
ifconfig interface-namegroup group-name |
グループ名には空白文字を使用しないでください。ifconfig ステータスディスプレイは、スペースを表示しません。そのため、一方にスペースを含む 2 つの似たグループ名を作成した場合、ステータスディスプレイでは同じように見えてしまうことになります。実際には、別のグループ名です。このため、混乱を招くことがあります。
特定のグループに IPv4 インタフェースを追加すると、同じグループに IPv6 インタフェースが自動的に追加されます。さらに、同じコマンドを使って、同じサブネットに接続された 2 つ目のインタフェースを同じグループに入れることができます。2 つのインタフェースでマルチパスインタフェースグループを構成するにはを参照してください。
マルチパスグループからインタフェースを削除するには、group オプションで空文字列を指定します。グループからインタフェースを削除するにはを参照してください。
別のマルチパスグループに属するインタフェースを新しいグループに入れる場合、既存のグループからそのインタフェースを削除する必要はありません。インタフェースを新しいグループに追加すると、そのインタフェースは現在のグループから自動的に削除されます。インタフェースを既存のグループから別のグループに移動するにはを参照してください。
1 つのマルチパスグループに構成できるネットワークアダプタの数に制限はありません。group オプションを論理インタフェースに指定することはできません。たとえば、hme0 は使用できますが、hme0:1 は使用できません。
マルチパスグループのすべてのインタフェースは、同じ IP リンクに接続されていなければなりません。これは、インタフェースに障害が発生すると、障害経路の迂回処理によって、すべての IP アドレスが障害の発生したインタフェースからグループ内の正常なインタフェースに移されるからです。正常なインタフェースに切り替えられたアドレスにルーターがパケットのルーティングを引き続き行うためには、その正常なインタフェースが同じ IP リンクに接続されていなければなりません。
マルチパスグループのすべての物理インタフェースを構成する際には、検査用 IP アドレスを指定する必要があります。検査用 IP アドレスは、障害や回復の検出に必要です。検査用 IP アドレスが指定されていないと、その物理インタフェースは障害経路の迂回には使用されません。in.mpathd だけが検査用 IP アドレスを使用します。通常のアプリケーションでは、このアドレスを使用しないようにしてください。インタフェースに障害が発生しても、このアドレスに関しては障害経路の迂回は行われません。IPv4 では、検査用 IP アドレスを構成する際には、通常のアプリケーションが検査用 IP アドレスを使用しないように設定してください。2 つのインタフェースでマルチパスインタフェースグループを構成するにはを参照してください。
ここでは、次のインターネットプロトコルに対する検査用 IP アドレス構成の概念について説明します。
IPv4
IPv6
in.mpathd マルチパスデーモンは、障害や回復を検出するための検査用 IP アドレスを必要とします。この IP アドレスは、ルーティング可能なアドレスでなければなりません。つまり、このアドレスのネットワークアドレス (ネットワーク接頭子) がリンク内のすべてのルーターから認識可能でなければなりません。検査用 IP アドレスの構成には、ifconfig コマンドの -failover オプションを使用します。検査用 IP アドレスを設定する構文は次の通りです。
# ifconfig interface-name addif ip-address <other-parameters> -failover up |
<other-parameters> には、実際の構成に応じたパラメータを指定します。詳細は、ifconfig(1M) のマニュアルページを参照してください。IPv4 検査用アドレスの設定手順については、2 つのインタフェースでマルチパスインタフェースグループを構成するにはを参照してください。
たとえば、アドレスが 19.16.85.21、ネットマスクおよびブロードキャストアドレスがデフォルト値で、かつ検査用に使用できる論理インタフェースを新規に作成するには、次のように指定します。
# ifconfig hme0 addif 19.16.85.21 netmask + broadcast + -failover up |
この検査用 IP アドレスをアプリケーションから使用されないようにするため IPv4 検査用アドレスを deprecated と指定する必要があります。2 つのインタフェースでマルチパスインタフェースグループを構成するにはを参照してください。
アドレスの障害経路の迂回属性を有効にするには、failover (ダッシュ (-) をつけない) を指定します。
マルチパスグループのすべての検査用 IP アドレスには、同じネットワークアドレスを使用してください。つまり、すべての検査用 IP アドレスは 1 つの IP サブネットに属していなければなりません。
リンクローカルアドレスが物理インタフェースに結び付けられているので、IPv6 検査用 IP アドレスを構成するには、リンクローカルアドレス自体を使用します。したがって、IPv6 では、別個の IP アドレスは必要ありません。IPv6 の場合、-failover オプションの構文は次の通りです。
# ifconfig interface-name inet6 -failover |
IPv6 検査用 IP アドレスの設定手順については、2 つのインタフェースでマルチパスインタフェースグループを構成するにはを参照してください。
マルチパスグループですべてのグループのインタフェースに IPv4 と IPv6 の両方が使用される場合には、別個の IPv4 検査用アドレスは必要ありません。in.mpathd デーモンは、IPv6 リンクローカルアドレスを使ってインタフェースを調べることができます。IPv6 リンクローカルアドレスは、IPv6 を結合すると自動的に作成されます。
アドレスの障害経路の迂回属性を有効にするには、failover (ダッシュ (-) をつけない) を指定します。
有効な IPv6 検査用 IP アドレスは、リンクローカルアドレスだけです。
検査用 IP アドレスを構成したら、このアドレスが通常のアプリケーションで使用されないようにする必要があります。検査用 IP アドレスに対して障害経路の迂回処理が行われないため、アプリケーションから検査用 IP アドレスを使用できるようにすると、検査用 IP アドレスを使用したアプリケーションは障害迂回の処理時に異常終了します。検査用 IP アドレスが通常のアプリケーションに使用されるのを防ぐには、ifconfig コマンドを使って検査用 IP アドレスをdeprecated と指定します。このオプションは次の構文により指定します。
ifconfig interface-name deprecated |
アドレスを deprecated と指定すると、このアドレスをアプリケーションが明示的に指定しない限り、IP はこのアドレスを通信のソースアドレスとして選択しません。このようなアドレスに明示的に指定するのは、in.mpathd だけです。2 つのインタフェースでマルチパスインタフェースグループを構成するにはを参照してください。
ネームサービス (DNS、NIS、NIS+) にはリンクローカルアドレスは登録されませんので、アプリケーションはリンクローカルアドレスを通信に使用しません。したがって、IPv6 検査用 IP アドレスを deprecated と指定する必要はありません。
IPv6 リンクローカルアドレスは deprecated と指定しないでください。
アドレスの deprecated 属性を無効にするには、-deprecated オプションを使用します。
IPv4 検査用アドレスは、ネームサービスデータベース (DNS、NIS、または NIS+) に入れないでください。IPv6 では、検査用 IP アドレスとしてリンクローカルアドレスが使用されますが、このアドレスは通常、ネームサービスデータベースに入れられません。
自動的に構成された IPv6 アドレスは、システムをリブートすると保持されません。リブートするときに IP アドレスを保持する必要がある場合には、アプリケーションで静的 IP アドレスを使用します。
/etc/hostname. interface ファイルをマルチパスグループと検査用 IP アドレスの構成に使用できます。/etc/hostname. interface ファイルを使ってマルチパスグループを構成するには、次の構文に従ってファイルに 1 行追加します。
interface-address <parameters> group group-name up \ addif logical-interface-address <parameters> 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 <other-parameters> deprecated -failover standby up |
<other-parameters> には、実際の構成に応じたパラメータを指定します。詳細は、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 の障害を検出するようにネットワークアダプタを構成することができます。
グループに NIC が 1 つしかなければ障害経路の迂回は行われないため、グループの物理インタフェースごとに別個の検査用 IP アドレスを設定する必要はありません。検査用のアドレスを障害経路の迂回が行われないアドレスとして (IFF_NOFAILOVER) 設定すれば、デーモンはそのインタフェースを使って検査信号を送信します。複数の物理インタフェースがある場合とは異なり、1 つの物理インタフェースを deprecated と指定する必要はありません。
インタフェースの IPv4 アドレスに対して障害経路の迂回が行われないように (NOFAILOVER) 設定するには、次の構文を使用します。
# ifconfig interface-name -failover group group-name |
IPv6 の場合は、次の構文を使用します。
# ifconfig interface-name inet6 -failover group group-name |
デーモンが障害を検出すると、インタフェースの状態がそれに応じて変更され、コンソールにログが出力されます。
障害が検査信号の標識に発生したのか、NIC に発生したのかを検証する方法はありません。これは、検査に使用できる物理インタフェースが標識に 1 つしかないためです。サブネットのデフォルトルーターが 1 つしかない場合に、グループの物理インタフェースが 1 つだけであれば、マルチパスを無効にしてください。IPv4 と IPv6 のデフォルトルーターが別個に存在する場合 (または、複数のデフォルトルーターが存在する場合) は、検査信号の対象は 2 つ以上あります。 したがって、マルチパスを有効にしても問題ありません。
ifconfig コマンドの group オプションに空文字列を指定すると、インタフェースが既存のグループから削除されます 。グループからインタフェースを削除するにはを参照してください。 グループからインタフェースを削除する場合は、慎重に行う必要があります。マルチパスグループの他のインタフェースに障害が発生している場合、障害経路の迂回が行われていることがあります。たとえば、hme0 に障害が発生し、すべてのアドレスが、同じグループに属する hme1 に移されたとします。このグループから hme1 を削除すると、in.mpathd はこれらの障害経路の迂回が行われたアドレスをグループ内の他のインタフェースに戻します。正常に動作しているインタフェースがグループ内になければ障害経路の迂回が行われず、すべてのネットワークアクセスは維持できません。
同様に、インタフェースがグループに属しており、結合解除する必要がある場合は、まずグループからインタフェースを削除する必要があります。その後、インタフェースに構成されたすべての IP アドレスを確実に維持します。これは、グループから削除されるインタフェースの構成を in.mpathd デーモンが再現しようとするからです。インタフェースの使用を中止する場合は、その前に構成が再現されていなければなりません。障害経路の迂回の前後でインタフェースの構成がどのように変化するかについては、マルチパスデーモンを参照してください。
動的再構成 (DR: Dynamic Reconfiguration) では、IP ネットワークマルチパスを使用して、IP を使用中のユーザーに影響を及ぼすことなく特定のネットワークデバイスを切り離すことができます。NIC が動的再構成によって切り離される (オフラインになる) 前に、その NIC のすべての障害迂回 IP アドレスは、同じ IP ネットワークマルチパスグループ内の他の NIC へ自動的に経路迂回処理されます。検査用 IP アドレスは無効にされ、NIC は結合解除されます。
また、IP マルチパスのリブート対応機能により、存在しないカードに対応する /etc/hostname.* ファイル内の IP アドレスは、自動的に同じ IP ネットワークマルチパスグループ内の代替インタフェースに移されます。ただし、元のインタフェースが後でそのシステムに戻されたとしても、これらの IP アドレスは自動的にそのインタフェースへは戻りません。
in.mpathd マルチパスデーモンは、グループに属するすべてのインタフェースから検査信号を送信することによって障害や回復を検出します。in.mpathd マルチパスデーモンも、グループに属する各インタフェースで RUNNING フラグを監視することによって障害や回復を検出します。 グループに属するインタフェースに検査用 IP アドレスがあれば、デーモンは検査信号の送信を開始し、そのインタフェースに障害がないかどうかを判断します。連続する 5 つの検査信号に応答がない、または RUNNING フラグが設定されていないと、そのデーモンはそのインタフェースに障害が発生したと見なします。検査頻度は、障害検出時間によって異なります。デフォルトの障害検出時間は 10 秒です。つまり、検査頻度は 2 秒に 1 回の割合です。ネットワークで同期が発生するのを防ぐため、検査は定期的には実行されません。連続する 5 つの検査信号に応答がないと、in.mpathd は、そのインタフェースに障害が発生したとみなし、障害経路の迂回が行われ、ネットワークアクセスを障害のあるインタフェースからグループの別の正常なインタフェースへ移します。待機インタフェースが構成されている場合は、IP アドレスと、ブロードキャストやマルチキャストメンバーシップの障害経路の迂回用に待機インタフェースが選択されます。待機インタフェースが構成されていない場合は、最小の IP アドレスをもつインタフェースが選択されます。関連情報については、in.mpathd(1M) のマニュアルページを参照してください。
次の 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 アドレスが固有のものでなければなりません。