ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 ネットワークパフォーマンスの管理 Oracle Solaris 11.1 Information Library (日本語) |
IPMP は、トラフィックを送受信するネットワークの継続的な可用性を保証するために、IPMP グループのベースとなる IP インタフェースに対して障害検出を実行します。故障したインタフェースは、修復されるまで使用不可能なままになります。残りのアクティブインタフェースが機能し続ける一方で、既存のスタンバイインタフェースが必要に応じて配備されます。
in.mpathd デーモンは、次の種類の障害検出を処理します。
プローブベースの障害検出では、ICMP プローブを使用してインタフェースが故障しているかどうかをチェックします。この障害検出手法の実装は、検査用アドレスが使用されるかどうかによって決まります。
この障害検出手法では、検査用アドレスを使用する ICMP 検査信号メッセージを送受信します。プローブトラフィックまたはテストトラフィックとも呼ばれるこれらのメッセージは、インタフェース経由で同じローカルネットワーク上の 1 つ以上のターゲットシステムに送信されます。in.mpathd デーモンは、プローブベースの障害検出用に構成されたすべてのインタフェースを経由してすべてのターゲットを個別にプローブします。ある特定のインタフェースで、連続する 5 つのプローブに対して応答がない場合、in.mpathd はそのインタフェースに障害があるものとみなします。プローブを発信する頻度は、障害検出時間 (FDT) に依存します。障害検出時間のデフォルト値は 10 秒です。ただし、FDT は IPMP 構成ファイルで調整できます。手順については、「IPMP デーモンの動作を構成する方法」を参照してください。
プローブベースの障害検出を最適化するには、in.mpathd デーモンからのプローブを受信する複数のターゲットシステムを設定する必要があります。複数のターゲットシステムを設定することで、報告された障害の性質をより正確に判定できます。たとえば、唯一定義されたターゲットシステムから応答がない場合、そのターゲットシステムの障害を示している可能性もあれば、IPMP グループのインタフェースの 1 つの障害を示している可能性もあります。これに対し、いくつかのターゲットシステムのうちの 1 つのシステムだけがプローブに応答しない場合は、IPMP グループ自体ではなく、ターゲットシステムで障害が発生している可能性があります。
in.mpathd デーモンは、プローブするターゲットシステムを動的に決定します。まず、デーモンはルーティングテーブル内で、IPMP グループのインタフェースに関連付けられた検査用アドレスと同じサブネット上にあるターゲットシステムを検索します。そのようなターゲットが見つかった場合、デーモンはそれらをプローブのターゲットとして使用します。同じサブネット上でターゲットシステムが見つからない場合、デーモンは、リンク上の近くのホストをプローブするマルチキャストパケットを送信します。ターゲットシステムとして使用するホストを決定するために、すべてのホストのマルチキャストアドレス (IPv4 では 224.0.0.1、IPv6 では ff02::1) にマルチキャストパケットが送信されます。エコーパケットに応答する最初の 5 つのホストが、プローブのターゲットとして選択されます。マルチキャストプローブに応答したルーターまたはホストを検出できない場合、デーモンはプローブベースの障害を検出できません。この場合、ipmpstat -i コマンドはプローブの状態を unknown として報告します。
ホストルートを使用して、in.mpathd デーモンが使用するターゲットシステムのリストを明示的に構成できます。手順については、「プローブベースの障害検出の構成」を参照してください。
検査用アドレスを使用しないこの手法は、2 種類のプローブを使用して実装されています。
ICMP プローブ
ICMP プローブは、ルーティングテーブルに定義されたターゲットをプローブするために、IPMP グループ内のアクティブインタフェースによって送信されます。アクティブインタフェースとは、そのインタフェースのリンク層 (L2) アドレス宛てのインバウンド IP パケットを受信できるベースとなるインタフェースのことです。ICMP プローブは、データアドレスをそのプローブの発信元アドレスとして使用します。ICMP プローブがそのターゲットに到達し、ターゲットから応答が得られた場合、そのアクティブインタフェースは動作しています。
推移的プローブ
推移的プローブは、アクティブインタフェースをプローブするために、IPMP グループ内の代替インタフェースによって送信されます。代替インタフェースとは、インバウンド IP パケットを能動的に受信しないベースとなるインタフェースのことです。
たとえば、4 つのベースとなるインタフェースから成る IPMP グループを考えます。このグループでは、データアドレスは 1 つ構成されていますが、検査用アドレスは 1 つも構成されていません。この構成では、アウトバウンドパケットはベースとなるインタフェースをすべて使用できます。一方、インバウンドパケットは、データアドレスがバインドされたインタフェースによってのみ受信できます。インバウンドパケットを受信できない残り 3 つのベースとなるインタフェースが、「代替」インタフェースとなります。
代替インタフェースがアクティブインタフェースへのプローブの送信と応答の受信に成功した場合、そのアクティブインタフェースは機能しており、推論により、プローブを送信した代替インタフェースも機能しています。
注 - Oracle Solaris では、プローブベースの障害検出は検査用アドレスを使用して動作します。検査用アドレスなしでプローブベースの障害検出を選択するには、推移的プローブを手動で有効にする必要があります。手順については、「使用する障害検出手法を選択する方法」を参照してください。
グループ障害は、IPMP グループ内のすべてのインタフェースが同時に故障したと思われる場合に発生します。この場合、ベースとなるインタフェースは一切使用できません。また、すべてのターゲットシステムが同時に故障したときに、プローブベースの障害検出が有効になっていた場合、in.mpathd デーモンはその現在のターゲットシステムをすべてフラッシュし、新しいターゲットシステムに対してプローブします。
検査用アドレスを持たない IPMP グループでは、アクティブインタフェースをプローブできる単一のインタフェースがプローバとして指定されます。この指定されたインタフェースには、FAILED フラグと PROBER フラグが両方とも設定されます。このインタフェースにデータアドレスがバインドされるため、このインタフェースは引き続き、ターゲットをプローブして回復を検出できます。
リンクベースの障害検出は、インタフェースがその種の障害検出をサポートしている場合は、常に有効です。
サードパーティーのインタフェースがリンクベースの障害検出をサポートしているかどうかを判定するには、ipmpstat -i コマンドを使用します。ある特定のインタフェースの出力の LINK 列に unknown ステータスが含まれる場合、そのインタフェースはリンクベースの障害検出をサポートしません。デバイスに関するより具体的な情報については、製造元のドキュメントを参照してください。
リンクベースの障害検出をサポートするネットワークドライバは、インタフェースのリンク状態をモニターし、リンク状態が変わったときにネットワークサブシステムに通知します。変更を通知されると、ネットワークサブシステムは、インタフェースの RUNNING フラグを適宜設定または解除します。インタフェースの RUNNING フラグが解除されたことを検出すると、in.mpathd デーモンは即座にインタフェースに障害があるものとみなします。
IPMP は匿名グループでの障害検出をサポートしています。デフォルトでは、IPMP は IPMP グループに属するインタフェースのステータスのみをモニターします。ただし、どの IPMP グループにも属さないインタフェースのステータスも追跡するように IPMP デーモンを構成することもできます。したがって、これらのインタフェースは「匿名グループ」の一部とみなされます。ipmpstat -g コマンドを発行した場合、匿名グループは二重ダッシュ (--) として表示されます。匿名グループ内のインタフェースでは、データアドレスが検査用アドレスとしても機能します。これらのインタフェースは名前付きの IPMP グループに属していないため、これらのアドレスはアプリケーションから可視となります。IPMP グループの一部でないインタフェースの追跡を有効にする方法については、「IPMP デーモンの動作を構成する方法」を参照してください。