同じ 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 〜 3 の通信障害に対処します。
表 1-1 に、IP ネットワークマルチパスの構成要素を示します。
表 1-1 IP ネットワークマルチパスの構成要素
Solaris ネットワークマルチパスは、次の構成要素で実装されています。
マルチパスデーモン - in.mpathd
IP
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 ネットワークマルチパスが正常に動作するには、同じマルチパスグループに属するネットワークアダプタで次の条件が満たされている必要があります。
マルチパスグループのすべてのネットワークアダプタに対し、同じ STREAMS モジュール群をプッシュおよび構成する必要があります。
1 つのネットワークアダプタで IPv4 を結合するのであれば、マルチパスグループのすべてのネットワークアダプタで IPv4 を結合する必要があります。
1 つのネットワークアダプタで IPv6 を結合するのであれば、マルチパスグループのすべてのネットワークアダプタで IPv6 を結合する必要があります。
Ethernet の場合は、システムにあるすべての Ethernet ネットワークアダプタに固有の MAC アドレスが必要です。SPARC プラットフォームの場合は、openboot PROM の local-mac-address? を true に設定します。IA (x86) プラットフォームでは、何もする必要はありません。
マルチパスグループのすべてのネットワークアダプタは、同じ IP リンクに接続されていなければなりません。
マルチパスグループに異なる種類のインタフェースが含まれていてはなりません。グループ化するインタフェースは、/usr/include/net/if_types.h に定義されているのと同じタイプのインタフェースでなければなりません。たとえば、Ethernet とトークンリングを一緒にしたり、トークンバスと ATM (非同期転送モード) を一緒にしたりすることはできません。
ATM で IP ネットワークマルチパスを使用する場合は、ATM を LAN エミュレーションで構成する必要があります (従来の IP インスタンス間のマルチパスの使用は、現在はサポートされていません)。
4 つ目の条件は、マルチパスグループに属するインタフェースだけでなく、システムのすべてのインタフェースに適用されます。
グループの構成には、ifconfig コマンドを使用します。このコマンドの group オプションでグループ名を指定し、インタフェースを IPv4 と IPv6 をともにそのグループに追加します。group オプションは次のように使用します。
ifconfig interface-name group 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 アドレスとしてリンクローカルアドレスが使用されますが、このアドレスは通常、ネームサービスデータベースに入れられません。
マルチパスグループと検査用 IP アドレスの構成には、/etc/hostname.interface ファイルを使用できます。/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 行追加します。
<parameter> group group-name up |
たとえば、IPv6 検査用 IP アドレスを使って hme0 に対し test グループを作成するには、/etc/hostname6.hme0 ファイルに次の行を追加します。
-failover group test up |
IPv6 hostname6 ファイルの構成手順については、「2 つのインタフェースでマルチパスインタフェースグループを構成するには」を参照してくだい。
マルチパスグループには、待機インタフェースを構成できます。名前が示すように、このインタフェースは待機中とみなされ、グループの他のインタフェースに障害が発生しない限り使用されません。
待機インタフェースは、通常のデータパケットの送信には使用されません。したがって、待機インタフェースでのデータの流量は限られています。待機インタフェースが正常であるかどうかを判定するための検査信号の送信に使用するため、待機インタフェースには検査用 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 アドレスを設定する必要はありません。通常のアドレスを障害経路の迂回が行われないアドレスとして設定すれば、デーモンはそのインタフェースを使って検査信号を送信します。複数の物理インタフェースがある場合とは異なり、このアドレスを 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 はこれらの障害経路の迂回が行われたアドレスをグループ内の他のインタフェースに戻します。正常に動作しているインタフェースがグループ内になければ障害経路の迂回が行われず、すべてのネットワークアクセスは維持できません。
同様に、インタフェースがグループに属しており、結合解除する必要がある場合は、まずグループからインタフェースを削除し、その際そのインタフェースのすべての IP アドレスを維持する必要があります。これは、グループから削除されるインタフェースの構成を in.mpathd デーモンが再現しようとするからです。インタフェースを結合解除する場合は、その前に構成が再現されていなければなりません。障害経路の迂回の前後でインタフェースの構成がどのように変化するかについては、「マルチパスデーモン」を参照してください。
動的再構成 (DR: Dynamic Reconfiguration) では、IP ネットワークマルチパスを使用して、IP を使用中のユーザーに影響を及ぼすことなく特定のネットワークデバイスを切り離すことができます。NIC が動的再構成によって切り離される (オフラインになる) 前に、その NIC のすべての障害迂回 IP アドレスは、同じ IP ネットワークマルチパスグループ内の他の NIC へ自動的に経路迂回処理されます。検査用 IP アドレスは無効にされ、NIC は結合解除されます。しかし、この種のシステム構成の変更は /etc/hostname.* ファイル、およびその他どこにも反映されません。その結果、除去された NIC が担っていた IP アドレスは、システムのリブート後は失われ、回復することはありません。たとえば、hme0 が動的再構成によって切り離され、システムから除去されたとします。hme0 を除去した状態でシステムをリブートすると、ブートスクリプトが /etc/hostname.hme0 ファイルの存在を検知し、hme0 を結合しようとします。この結合は失敗し、その除去された NIC が担っていた IP アドレスは失われます。
リブート後もこれらの IP アドレスを維持するには、適切な /etc/hostname.* ファイルを変更する必要があります。たとえば、hme0 と hme1 が同じ IP ネットワークマルチパスのグループにあるとすると、addif 行を /etc/hostname.hme0 ファイルから /etc/hostname.hme1 ファイルへ移動する必要があります。除去された NIC を差し換えた場合は、IP アドレスを手作業で元に戻すことになります。/etc/hostname.* ファイルの変更の例については、「hostname ファイルによるグループと検査用 IP アドレスの構成」および 「2 つのインタフェースでマルチパスインタフェースグループを構成するには」 の手順 4 を参照してください。
NIC の接続と再接続には、手作業が必要です。
in.mpathd マルチパスデーモンは、グループに属するすべてのインタフェースから検査信号を送信することによって障害や回復を検出します。グループに属するインタフェースに検査用 IP アドレスがあれば、デーモンは検査信号の送信を開始し、そのインタフェースに障害がないかどうかを判断します。連続する 5 つの検査信号に対し応答がない場合は、そのインタフェースに障害が発生しているものとみなします。検査頻度は、障害検出時間によって異なります。デフォルトの障害検出時間は 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 は、メッセージをコンソールに出力します。また、現在の達成可能な時間もコンソールに出力します。応答が正しく戻ってくる場合は、このファイルの障害検出時間に従って検出が行われます。
NIC 障害を検出するために mpathd が用いる時間を 1 ミリ秒 (0.001 秒) 単位で指定します。指定可能な最短時間は 100 ミリ秒 (0.1 秒) です。
障害経路の迂回が行われた後に障害の発生したインタフェースが回復すると、回復した経路への復帰が行われます。ただし、FAILBACK が no に設定されていると、インタフェースの回復した経路への復帰は行われません。
デフォルトでは、回復した経路への復帰は有効 (yes) になっています。
TRACK_INTERFACES_ONLY_WITH_GROUPS オプションが無効になっていると、in.mpathd はシステムのすべてのインタフェースを追跡します。障害を検出すると、適切なメッセージをコンソールに出力します。このオプションが正しく機能するには、すべてのインタフェース上の Ethernet アドレスが固有のものでなければなりません。
デフォルトでは、マルチパスグループの一部として構成されているインタフェースのみを追跡します。