フェールオーバとフェールバック

フェールオーバは、データ DSA が利用不能になったときでも、ルータ DSA がクエリのサービスを続行する機能です。DSA の失敗をルータが検出すると、ルータは未解決のリクエストを同じパーティションに対して動作する別の DSA に再送し、クライアントから失敗が見えないようにします。
cad140jp
フェールオーバ
は、データ DSA が利用不能になったときでも、ルータ DSA がクエリのサービスを続行する機能です。DSA の失敗をルータが検出すると、ルータは未解決のリクエストを同じパーティションに対して動作する別の DSA に再送し、クライアントから失敗が見えないようにします。
正常動作中、スタンバイ DSA は必要になった場合に備えて、プライマリ データ DSA と同期した状態に保たれます。
フェールオーバは、高可用性と高信頼性を必要とするシステムにとって重要です。
この記事では、以下のトピックについて説明します。
ホスト間のフェールオーバ
CA Directory は、同じネームスペース パーティションに対して動作する同じサイト内の DSA 間で、フェールオーバを自動的にセットアップします。また、これらの DSA は自動的にレプリケートされます。
例: バックアップ DSA へのフェールオーバ
以下の図は、通常、自身のホストおよび NY21 ホスト上の顧客 DSA にリクエストを送信する単一のルータ DSA を示しています。
これらのデータ DSA が両方とも失敗した場合、ルータ DSA はすべてのリクエストを NY23 上の顧客 DSA に送信します。この変更はクライアントには見えません。
この例で、NY23 上の顧客 DSA はバックアップです。他のデータ DSA が失敗した場合にのみ使用されます。
Example of Failover to a Backup DSA
サイト間のフェールオーバ
パフォーマンスを改善するため、各領域にローカル データ DSA へクエリを転送するルータを置くことをお勧めします。ローカル データ DSA は相互に同期する必要があります。
ローカル データ DSA が失敗した場合、各ルータはリモート データ DSA にクエリを転送します。これによって、ディレクトリの可用性および信頼性が保たれます。
例: 2 つのサイト間のフェールオーバ
以下の図は、ニューヨークとモントリオールの 2 つのサイトにわたって分散したディレクトリ バックボーンの例を示しています。
Example of Failover between Two Sites
ニューヨークのルータはモントリオールの顧客 DSA に負荷分散できません。顧客 DSA はルータとは別のサイトにあるからです。
ただし、ニューヨーク顧客 DSA の両方が利用不可能な場合、ルータはモントリオールの顧客 DSA にフェールオーバできます。ニューヨーク DSA が再度実行されるまでは、パフォーマンスが低いとはいえ、サービスは続けて利用可能です。
注:
フェールオーバ整合性は、領域間ではなく領域内で保証されます。
ルータ DSA の間のクライアント フェールオーバ
ルータ DSA が失敗した場合、データ DSA へのアクセスはすべて停止します。これを防ぐため、以下に従って、ルータ DSA 間でクライアント アプリケーションがフェールオーバするようにセットアップできます。
  1. 複数のコンピュータ上で複数のルータ DSA を実行します。
  2. 1 つのルータ DSA から別のルータ DSA にフェールオーバするように、クライアント アプリケーションを設定します。
大きなディレクトリ対応のサードパーティ アプリケーションは、ほぼすべてこれを行うように設定できます。
クライアントが 2 番目のルータへフェールオーバする例
以下の図は、2 種類のフェールオーバを持った単純なディレクトリシステムを示しています。
ホスト間のフェールオーバ」と同様、ルータ DSA は 2 番目のデータ DSA へフェールオーバすることができます。ただし、このシステムは、2 つのルータ DSA 間でクライアント アプリケーションがフェールオーバできることを示しています。
これら 2 つのルータ DSA は完全に同じ方法でデータ DSA を使用するようにセットアップされます。これはクライアント アプリケーションへのサービスが中断されないことを意味します。
Example of Client Fails Over to Second Router
DSA のフェールオーバ優先度の設定
複数のデータ DSA が失敗すると、ルータ DSA は設定ファイルのリスト順で、他の DSA へフェールオーバします。
この順番は、以下のコマンドを使って上書きできます。
set precedence = precedence-list; set write-precedence = precedence-list;
set precedence コマンドは、ルータ DSA がフェールオーバする DSA の順序を定義します。
set write-precedence コマンドは、更新を実行するために DSA が選ばれる順番を定義します。フェールオーバ コンピュータから優先されるマスタに書き込みリクエストを伝えるためにこれを使用できます。set write-precedence コマンドが存在しない場合は、更新は通常の優先順位(設定ファイルの DSA の順序で定義されるか、または set precedence コマンドで定義される)に従います。
これらのリスト内の DSA は、リストされていないものよりも優先されます。また、DSA はリストの先頭に近いものほど優先されます。
パフォーマンスを最大化するためには、一般に高速 DSA の方が低速 DSA よりも優先され、ローカル DSA の方がリモート DSA よりも優先されます。
これらのコマンドが設定ファイルで発生したら、それらをナレッジの後に強制書き込みします。
これらのコマンドは、任意の特定の DSA によってソースされた設定ファイルに 1 回のみ表示される必要があります。
例: 地理的に離れている DSA の優先度の使用
EAST、WEST、NORTH、および SOUTH の DSA には同じ情報が含まれます。以下のコマンドは、東の DSA が WEST の前に EAST へフェールオーバすることを保証します。
set precedence = EAST, WEST;
NORTH および SOUTH の DSA はリスト表示されません。したがって、EAST と WEST の両方が利用不可能な場合、DSA は設定ファイルでリストされた順序でそれらにフェールオーバします。
例: 書き込み優先度の使用
set write-precedence = home-dsa,work-dsa;
負荷分散グループでフェールオーバの DSA 優先度を設定する
負荷分散グループでフェールオーバがどのように動作するかに影響する、優先度ルールを使用することができます。優先度設定の詳細については、「DSA のフェールオーバ優先度の設定」を参照してください。
set precedence コマンドを使って負荷分散グループにも含まれている DSA をリスト表示する場合、負荷分散グループにはそのグループで最も高い DSA の優先度が与えられます。
例として次のコマンドを考えてみましょう。
set precedence = DSA1, DSA2, DSA3, DSA4;
DSA1 と DSA4 が含まれる負荷分散グループは、DSA2 と DSA3 が含まれるグループに優先します。
また、DSA4 が含まれる負荷分散グループは、DSA がリストに含まれていないグループに優先します。
ルータ フェールオーバの他の方法
他の方法も検討した結果、それぞれに以下のような長所と短所が判明しました。
  • ラウンドロビン DNS
    このソリューションは実装が簡単です。ただし、各クライアントは接続中、単一ルータ DSA とのアフィニティを維持する必要があります。また、DNS レコードに変更をプッシュする際の固有の遅延が問題を引き起こすことがあります。
  • IP フェールオーバ
    もう 1 つの良好なソリューションは、ルータ DSA を実行するコンピュータ間に即時 IP フェールオーバ メカニズムを提供するというものです。ルータ DSA を新しい IP アドレスにバインドするには、いくつか余分な設定をする必要があります。これは実行可能です。選択した方法が即時的で再起動が不要、かつフェールバックに対応していることを確認してください。
  • ネットワーク ロード バランサ
    これらは推奨しません。ネットワーク ロード バランサは、CA Directory のパフォーマンスを低下させる場合があります。
フェールバック
フェールバック
は、フェールオーバおよび回復後、正常サービスの CA Directory DSA へリストアすることです。
下位の DSA が利用不可能になると、ルータはそれに向けられたリクエストをすべて、同じプレフィックスをサービスする別の DSA にリダイレクトします(フェールオーバ)。利用不可能な DSA が再度利用可能になると、CA Directory は自動的に DSA にリクエストを送信します(フェールバック)。