IP ネットワークマルチパスの管理

第 1 章 IP ネットワークマルチパスの概要

同じ IP リンク (たとえば、Ethernet) に複数のネットワークインタフェースカードを接続していれば、IP ネットワークマルチパスによって負荷分散と障害経路の迂回がサポートされます。

概要

IP ネットワークマルチパスには次の機能があります。

ネットワークアダプタに障害が発生した場合、同じ IP リンクに別のアダプタが接続されていれば、すべてのネットワークアクセスは、障害の発生したアダプタからこのアダプタに自動的に切り替えられます。この処理により、ネットワークへのアクセスは中断することなく継続されます。さらに、同じ IP リンクに複数のネットワークアダプタが接続されていると、データの流れが複数のネットワークアダプタに分散されるため、単位時間当たりのデータの流量が向上します。


注 -

RFC 2460 など、IP 関連の他の文書では、「IP リンク」の代わりに「リンク」という用語が使用されています。このマニュアルでは、IEEE 802 との混同を避けるため「IP リンク」を使用します。(IEEE 802 では、「リンク」は Ethernet NIC から Ethernet スイッチへの 1 本のワイヤを意味します。)


IP リンクの説明は、用語集または表 1-1 を参照してください。

IP ネットワークマルチパスの機能

Solaris の IP ネットワークマルチパスには、次の機能があります。

通信障害

通信の障害は次の場合に起ります。

  1. NIC の送受信パスがパケット送信を停止した。

  2. NIC からリンクへの接続が切れた。

  3. Ethernet スイッチ上のポートがパケットを送受信しない。

  4. 相手方のホストが応答しないか、パケットを転送するルーターが応答しない。

Solaris の IP ネットワークマルチパスでは、上記 1 〜 3 の通信障害に対処します。

IP ネットワークマルチパスの構成要素

表 1-1 に、IP ネットワークマルチパスの構成要素を示します。

表 1-1 IP ネットワークマルチパスの構成要素

構成要素 

説明 

IP リンク 

リンク層でノード間通信に使用される通信設備や通信媒体。リンク層とは IPv4 および IPv6 のすぐ下の層で、Ethernet (ブリッジされたものも含む) や ATM ネットワークなどがあります。IP リンクには、1 つまたは複数の IPv4 サブネット番号 (ネットワーク接頭子) が割り当てられます。同じサブネット番号 (ネットワーク接頭子) を複数の IP リンクに割り当てることはできません。ATM LANE では、IP リンクは 1 つのエミュレートされた LAN です。ARP を使用する場合、ARP プロトコルの有効範囲は単一の IP リンクです。 

ネットワークインタフェースカード (NIC) 

リンクとのインタフェースになる、内部ネットワークアダプタおよび独立したネットワークアダプタカード 

物理インタフェース 

リンクに対するノードの接続。この接続は通常、デバイスドライバとネットワークアダプタとして実装されます。ネットワークアダプタによっては、qfe のように複数の接続点をもつこともあります。このマニュアルでは、「ネットワークアダプタ」は「単一接続点」を示します。 

物理インタフェースグループ 

同じリンクに接続されている、システム上の物理インタフェース群。グループ内のすべての物理インタフェースには、識別のための空文字列でない同じ名前が割り当てられます。 

物理インタフェースグループ名 

グループを識別する、物理インタフェースに割り当てられる名前。この名前の有効範囲は 1 つのシステムです。同じグループ名を共有する複数の物理インタフェースは物理インタフェースグループを構成します。 

障害検出 

NIC や NIC から第 3 層の装置への経路が動作しなくなったことを検出する処理 

回復検出 

障害の発生後、NIC や NIC から第 3 層の装置への経路が正しく動作し始めたことを検出する処理 

障害経路の迂回 

ネットワークアクセスを、障害が検出されたインタフェースから正常な物理インタフェースに切り替える処理。ネットワークアクセスには、IPv4 のユニキャスト、マルチキャスト、およびブロードキャストと、IPv6 のユニキャストとマルチキャストが含まれます。 

回復した経路への復帰 

ネットワークアクセスを、回復が検出されたインタフェースに戻す処理 

待機インタフェース 

グループ内の他の物理インタフェースに障害が発生するまでデータの伝送には使用されない物理インタフェース 

Solaris ネットワークマルチパス

Solaris ネットワークマルチパスは、次の構成要素で実装されています。

in.mpathd デーモンは障害を検出し、障害経路の迂回や回復した経路への復帰に対するさまざまな方針を実装します。in.mpathd は障害や回復を検出すると、ioctl を発行して障害経路の迂回や回復した経路への復帰を指示します。IP はこの ioctl に従い、ネットワークアクセスの障害経路の迂回を透過的かつ自動的に行います。


注意 - 注意 -

ある NIC グループに対して IP ネットワークマルチパスを使用している場合は、同じ NIC グループに対して Alternate Pathing (代替パス) を使用しないでください。同様に、代替パスを使用している場合は、IP ネットワークマルチパスを使用しないでください。NIC グループが異なる場合は、代替パスと IP ネットワークマルチパスを同時に使用できます。


物理インタフェース障害の検出

in.mpathd デーモンは、リンクに接続されている標識 (他のシステムやルータなど) に対し、グループに属するすべてのインタフェースを通して ICMP エコー検査信号を送信し、障害や回復を検出します。デーモンは、マルチパスグループにインタフェースが追加され、検査用 IP アドレスが割り当てられていると、マルチパスグループのすべてのインタフェースを通して検査信号を送信し、障害を検出します。検査用 IP アドレスやグループの構成を行う手順については、「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照してください。

検査信号を送信する標識は in.mpathd が動的に決定するため、ユーザーは標識を指定できません。リンクに接続されているルーターは、検査信号の宛先となる標識として選択されます。リンクにルーターが接続されていない場合は、リンク上の任意のホストが選択されます。ホスト選択にあたっては、すべてのホストを意味するマルチキャストアドレス (IPv4 では 224.0.0.1、IPv6 では ff02::1) にマルチキャストパケットが送信され、エコーパケットに最初に応答したいくつかのホストが検査信号の宛先 (標識) に選択されます。ICMP エコーパケットに応答するルーターやホストを発見できない場合には、in.mpathd は障害を検出できません。

グループの各 NIC が正常に機能するかどうかを確認するために、in.mpathd は、マルチパスグループのすべてのインタフェースを通してすべての標識に個別に検査信号を送信します。連続する 5 つの検査信号に対し応答がない場合、in.mpathd はそのインタフェースに障害があるものとみなします。検査信号を発信する頻度は、障害検出時間に依存します。障害検出時間のデフォルト値は 10 秒です。障害検出時間の変更方法については、in.mpathd(1M) のマニュアルページを参照してください。障害検出時間が 10 秒の場合、検査信号を発信する頻度はおよそ 2 秒に 1 度になります。

連続する 5 つの検査信号に対し応答がない場合、in.mpathd はそのインタフェースに障害が発生したとみなします。in.mpathd は障害を検出すると、障害経路の迂回が行われ、すべてのネットワークアクセスが障害のあるインタフェースから同じグループの別の正常なインタフェースに移されます。待機インタフェースが構成されている場合、in.mpathd は、IP アドレス、ブロードキャスト、マルチキャストメンバーシップの移動先に待機インタフェースを選択します。待機インタフェースが構成されていない場合は、最小の IP アドレスをもつインタフェースを選択します。

物理インタフェースの回復検出

物理インタフェースが回復したかどうかを検出するために、in.mpathd は障害の発生した NIC を通して検査信号を送信します。あるインタフェースが正常でない場合、そのインタフェースのすべてのアドレスがグループ内の別の正常なインタフェースに移されます。in.mpathd は回復を検出するための検査信号の送出にアドレスを必要とするので、障害経路の迂回の際に移されない検査用 IP アドレスを構成する必要があります。この検査用 IP アドレスに関してはネットワークアクセスの障害経路の迂回は行われないため、この検査用 IP アドレスを通常のアプリケーションで使用しないようにしてください。設定手順については、「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照してください。in.mpathd は、連続する 10 個の検査パケットに対し応答を受信すると、インタフェースが回復したものとみなします。in.mpathd は、これ以後に障害を検出すると、すべてのネットワークアクセスを回復したインタフェースに回復した経路への復帰を行います。

リンク障害

すべての NIC で同時に障害が発生した場合、in.mpathd はリンク障害が発生したものとみなし、障害経路の迂回を行いません。これは、すべての標識で同時に障害が発生した場合も同様です。この場合 in.mpathd は、現在のすべての標識選択を取り消し、新しく標識を見つけます (「物理インタフェース障害の検出」を参照)。

複数の物理インタフェースで構成されたマルチパスグループの管理

この節では、IP ネットワークマルチパスを有効にする方法について説明します。IP ネットワークマルチパス機能を使用するには、同じ IP リンクに複数の物理インタフェースで接続されていなければなりません。たとえば、同じ Ethernet スイッチや同じ IP サブネットなどに、同じマルチパスグループとして構成された複数の物理インタフェースを接続します。物理インタフェースが 1 つだけの場合は、「1 つの物理インタフェースで構成されたマルチパスグループの管理」を参照してください。

マルチパスグループは、空文字列でない名前で識別されます。たとえば、math-link、bio-link、chem-link などは有効な名前です。名前は通常、グループがどこに接続されているのかを表しています。マルチパスグループのいずれか 1 つのネットワークアダプタに障害が発生すると、障害が発生したアダプタのすべてのネットワークアクセスが、同じグループの正常なアダプタに迂回されます。ネットワークアクセスの障害経路の迂回の対象には、IPv4 のユニキャスト、ブロードキャスト、およびマルチキャストと、IPv6 のユニキャストおよびマルチキャストが含まれます。IP ネットワークマルチパスが正常に動作するには、同じマルチパスグループに属するネットワークアダプタで次の条件が満たされている必要があります。

  1. マルチパスグループのすべてのネットワークアダプタに対し、同じ STREAMS モジュール群をプッシュおよび構成する必要があります。

  2. 1 つのネットワークアダプタで IPv4 を使用するのであれば、マルチパスグループのすべてのネットワークアダプタで IPv4 を使用する必要があります。

  3. 1 つのネットワークアダプタで IPv6 を使用するのであれば、マルチパスグループのすべてのネットワークアダプタで IPv6 を使用する必要があります。

  4. Ethernet の場合は、システムにあるすべての Ethernet ネットワークアダプタに固有の MAC アドレスが必要です。SPARC プラットフォームの場合は、openboot PROM の local-mac-address? を true に設定します。IA (x86) プラットフォームでは、何もする必要はありません。

  5. マルチパスグループのすべてのネットワークアダプタは、同じ IP リンクに接続されていなければなりません。

  6. マルチパスグループに異なる種類のインタフェースが含まれていてはなりません。グループ化するインタフェースは、/usr/include/net/if_types.h に定義されているのと同じタイプのインタフェースでなければなりません。たとえば、Ethernet とトークンリングを一緒にしたり、トークンバスと ATM (非同期転送モード) を一緒にしたりすることはできません。

  7. ATM で IP ネットワークマルチパスを使用する場合は、ATM を LAN エミュレーションで構成する必要があります (従来の IP インスタンス間のマルチパスの使用は、現在はサポートされていません)。


注 -

4 つ目の条件は、マルチパスグループに属するインタフェースだけでなく、システムのすべてのインタフェースに適用されます。


物理インタフェースのグループ化

グループの構成には、ifconfig コマンドを使用します。このコマンドの group オプションでグループ名を指定し、インタフェースを IPv4 と IPv6 をともにそのグループに追加します。group オプションは次のように使用します。


ifconfig interface-name group group-name

特定のグループに IPv4 インタフェースを入れると、同じグループに IPv6 インタフェースが自動的に入れられます。さらに、同じコマンドを使って、同じサブネットに接続された 2 つ目のインタフェースを同じグループに入れることができます (「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照)。

マルチパスグループからインタフェースを削除するには、group オプションで空文字列を指定します (「グループからインタフェースを削除するには」を参照)。

別のマルチパスグループに属するインタフェースを新しいグループに入れる場合、既存のグループからそのインタフェースを削除する必要はありません。インタフェースを新しいグループに入れると、そのインタフェースは既存のグループから自動的に削除されます (「インタフェースを既存のグループから別のグループに移動するには」を参照)。

1 つのマルチパスグループに構成できるネットワークアダプタの数に制限はありません。group オプションを論理インタフェースに指定することはできません。たとえば、hme0 は使用できますが、hme0:1 は使用できません。

マルチパスグループのすべてのインタフェースは、同じ IP リンクに接続されていなければなりません。これは、インタフェースに障害が発生すると、障害経路の迂回処理によって、すべての IP アドレスが障害の発生したインタフェースからグループ内の正常なインタフェースに移されるからです。正常なインタフェースに切り替えられたアドレスにルーターがパケットのルーティングを引き続き行うためには、その正常なインタフェースが同じ IP リンクに接続されていなければなりません。

検査用 IP アドレスの構成

マルチパスグループのすべての物理インタフェースを構成する際には、検査用 IP アドレスを指定する必要があります。検査用 IP アドレスは、障害や回復の検出に必要です。検査用 IP アドレスが指定されていないと、その物理インタフェースは障害経路の迂回には使用されません。in.mpathd だけが検査用 IP アドレスを使用します。通常のアプリケーションでは、このアドレスを使用しないようにしてください。インタフェースに障害が発生しても、このアドレスに関しては障害経路の迂回は行われません。IPv4 では、検査用 IP アドレスを構成する際には、通常のアプリケーションが検査用 IP アドレスを使用しないように設定してください (「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照)。

ここでは、次のインターネットプロトコルに対する検査用 IP アドレス構成の概念について説明します。

IPv4 検査用アドレス

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 では、別個の 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 アドレスを使用したアプリケーションは障害迂回の処理時に異常終了します。検査用 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 アドレスとしてリンクローカルアドレスが使用されますが、このアドレスは通常、ネームサービスデータベースに入れられません。


hostname ファイルによるグループと検査用 IP アドレスの構成

マルチパスグループと検査用 IP アドレスの構成には、/etc/hostname.interface ファイルを使用できます。/etc/hostname.interface ファイルを使ってマルチパスグループを構成するには、次の構文に従ってファイルに 1 行追加します。


interface-address <parameters> group group-name up ¥
addif logical-interface-address <parameters> up

たとえば、次の構成に基づいて test グループを作成します。

/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 行追加します。


<parameter> group group-name up

たとえば、IPv6 検査用 IP アドレスを使って hme0 に対し test グループを作成するには、/etc/hostname6.hme0 ファイルに次の行を追加します。


-failover group test up

IPv6 hostname6 ファイルの構成手順については、「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照してくだい。

待機インタフェースの構成

マルチパスグループには、待機インタフェースを構成できます。名前が示すように、このインタフェースは待機中とみなされ、グループの他のインタフェースに障害が発生しない限り使用されません。

待機インタフェースは、通常のデータパケットの送信には使用されません。したがって、待機インタフェースでのデータの流量は限られています。待機インタフェースが正常であるかどうかを判定するための検査信号の送信に使用するため、待機インタフェースには検査用 IP アドレスが必要です。待機インタフェースに検査用 IP アドレスが指定されていないと、グループの別のインタフェースに障害が発生しても、この待機インタフェースは障害経路の迂回先にはなりません。次の場合には、待機インタフェースにデータが流れることがあります。

このように待機インタフェースは、アプリケーションによって明示的に選択されない限り、通常 (検査目的以外には) 選択されません。グループのインタフェースに障害が発生すると、すべてのネットワークアクセスは待機インタフェースに迂回されます。待機インタフェースを構成するには、次のように ifconfig コマンドの standby オプションを使用します。


# ifconfig interface-name standby group group-name

この手順については、「インタフェースの 1 つが待機インタフェースであるマルチパスグループを構成するには」を参照してください。

待機インタフェースに検査用 IP アドレスが設定されていると、in.mpathd デーモンは、待機インタフェースを通して検査信号を送信します。待機インタフェースには、検査用 IP アドレスだけを設定してください。待機インタフェースに他のアドレスを追加しても、追加は失敗します。検査用 IP アドレス以外のアドレスをもつインタフェースを待機インタフェースに指定すると、これらのアドレスは自動的にグループの他のインタフェースに移され、検査用 IP アドレスがある場合は待機インタフェースには検査用 IP アドレスだけが残ります。待機インタフェースに検査用 IP アドレス以外のアドレスを設定しないことを推奨します。

検査用 IP アドレスを指定するには、ifconfig コマンドの standbyup オプションの前に deprecated-failover オプションを指定します。

待機インタフェースに検査用 IP アドレスを設定するには、次の構文を使用します。


# ifconfig interface-name plumb ip-address <other-parameters> deprecated -failover standby up

<other-parameters> には、実際の構成に必要なパラメータを使用します。詳細は、ifconfig(1M) のマニュアルページを参照してください。


注 -

待機インタフェースに検査用 IP アドレスが設定されていないと、待機インタフェースは障害経路の迂回には使用されません。


たとえば、次の構成に基づいて検査用 IP アドレスを作成します。

次のようにコマンド行を入力します。


# ifconfig hme2 plumb 19.16.85.22 netmask + broadcast + deprecated -failover standby up

注 -

インタフェースは、アドレスに対して障害経路の迂回が行われないように設定された後にのみ、待機インタフェースとして設定されます。


この手順については、「インタフェースの 1 つが待機インタフェースであるマルチパスグループを構成するには」を参照してください。

待機状態を解除するには、次の構文を使用します。


# ifconfig interface-name -standby

1 つの物理インタフェースで構成されたマルチパスグループの管理

マルチパスグループにネットワークアダプタが 1 つしかない場合でも、この NIC の障害を検出するようにネットワークアダプタを構成することができます。

グループに NIC が 1 つしかなければ障害経路の迂回は行われないため、グループの物理インタフェースごとに別個の検査用 IP アドレスを設定する必要はありません。通常のアドレスを障害経路の迂回が行われないアドレスとして設定すれば、デーモンはそのインタフェースを使って検査信号を送信します。複数の物理インタフェースがある場合とは異なり、このアドレスを deprecated と指定する必要はありません。グループにはインタフェースが 1 つしかないため、障害の発生したインタフェースの IP アドレスが別のインタフェースに移されることはありません。このため、このアドレスを使用してもアプリケーションは異常終了することはありません。

インタフェースの IPv4 アドレスに対して障害経路の迂回が行われないように設定するには、次の構文を使用します。


# 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 はこれらの障害経路の迂回が行われたアドレスをグループ内の他のインタフェースに戻します。正常に動作しているインタフェースがグループ内になければ障害経路の迂回が行われず、すべてのネットワークアクセスは維持できません。

同様に、グループに属するインタフェースの使用を中止 (unplumb) する場合は、まずグループからインタフェースを削除し、その際そのインタフェースのすべての IP アドレスを維持する必要があります。これは、グループから削除されるインタフェースの構成を in.mpathd デーモンが再現しようとするからです。インタフェースの使用を中止する場合は、その前に構成が再現されていなければなりません。障害経路の迂回の前後でインタフェースの構成がどのように変化するかについては、「マルチパスデーモン」を参照してください。

マルチパスデーモン

in.mpathd マルチパスデーモンは、グループに属するすべてのインタフェースから検査信号を送信することによって障害や回復を検出します。グループに属するインタフェースに検査用 IP アドレスがあれば、デーモンは検査信号の送信を開始し、そのインタフェースに障害がないかどうかを判断します。連続する 5 つの検査信号に対し応答がない場合は、そのインタフェースに障害が発生しているものとみなします。検査頻度は、障害検出時間によって異なります。デフォルトの障害検出時間は 10 秒です。つまり、検査頻度は 2 秒に 1 回の割合です。ネットワークで同期が発生するのを防ぐため、検査は定期的には実行されません。連続する 5 つの検査信号に応答がないと、in.mpathd は、そのインタフェースに障害が発生したとみなし、障害経路の迂回が行われ、ネットワークアクセスを障害のあるインタフェースからグループの別の正常なインタフェースへ移します。待機インタフェースが構成されている場合は、IP アドレスと、ブロードキャストやマルチキャストメンバーシップの障害経路の迂回用に待機インタフェースが選択されます。待機インタフェースが構成されていない場合は、最小の IP アドレスをもつインタフェースが選択されます。関連情報については、in.mpathd(1M) のマニュアルページを参照してください。

次の 2 つの例は、一般的な構成と、インタフェースに障害が発生したときに構成がどのように変化するかを示しています。hme0 インタフェースに障害が発生すると、すべてのアドレスが hme0 から hme1 に移されます。


例 1-1 インタフェースに障害が発生する前のインタフェース構成


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


例 1-2 インタフェースに障害が発生した後のインタフェース構成


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.19hme0 から 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 は、メッセージをコンソールに出力します。また、現在の達成可能な時間もコンソールに出力します。応答が正しく戻ってくる場合は、このファイルの障害検出時間に従って検出が行われます。


注 -

NIC 障害を検出するために mpathd が用いる時間を 1 ミリ秒 (0.001 秒) 単位で指定します。指定可能な最短時間は 100 ミリ秒 (0.1 秒) です。


回復した経路への復帰

障害経路の迂回が行われた後に障害の発生したインタフェースが回復すると、回復した経路への復帰が行われます。ただし、FAILBACKno に設定されていると、インタフェースの回復した経路への復帰は行われません。


注 -

デフォルトでは、回復した経路への復帰は有効 (yes) になっています。


「グループに属するインタフェースのみの追跡」オプション

TRACK_INTERFACES_ONLY_WITH_GROUPS オプションが無効になっていると、in.mpathd はシステムのすべてのインタフェースを追跡します。障害を検出すると、適切なメッセージをコンソールに出力します。このオプションが正しく機能するには、すべてのインタフェース上の Ethernet アドレスが固有のものでなければなりません。


注 -

デフォルトでは、マルチパスグループの一部として構成されているインタフェースのみを追跡します。