Exchange Server Active Manager

適用対象: yes-img-162016 yes-img-192019 yes-img-seサブスクリプション エディション

Microsoft Exchange Server には、データベース可用性グループ (DAG) とメールボックス データベース コピーを含む高可用性プラットフォームを管理する Active Manager と呼ばれるコンポーネントが含まれています。 Active Manager は、すべてのメールボックス サーバー上の Microsoft Exchange レプリケーション サービス (MSExchangeRepl.exe) 内で実行されます。 DAG のメンバーではないメールボックス サーバーには、単一の Active Manager 役割 (スタン ドアロン Active Manager) があります。

DAG のメンバーであるサーバーには、 プライマリ Active Manager (PAM) と スタンバイ Active Manager (SAM) の 2 つの Active Manager 役割があります。 PAM は、DAG 内のアクティブ マネージャーの役割で、どのコピーをアクティブまたはパッシブにするのかを決定します。 PAM は、トポロジの変更通知を取得し、サーバーの障害に対応します。 PAM 役割を持つ DAG メンバーは、必ずクラスターのクォーラム リソース (既定のクラスター グループ) を現在所有しているメンバーです。 クラスターのクォーラム リソースを所有するサーバーに障害が発生すると、PAM 役割は、自動的に存続しているサーバーに移動し、存続しているサーバーがクラスターのクォーラム リソースの所有権を取得します。 また、保守やアップグレードのために、クラスターのクォーラム リソースをホストするサーバーをオフラインにする必要がある場合は、まず、PAM を DAG の別のサーバーに移動する必要があります。 PAM は、データベース コピー間でのアクティブの指定の移動をすべて制御します (特定のタイミングでは、1 つのコピーのみアクティブにすることが可能で、そのコピーはマウントまたはマウント解除が可能です)。 PAM は、ローカル データベースの障害およびローカル インフォメーション ストアの障害の検出といった、ローカル システム上の SAM 役割の機能も実行します。

SAM は、メールボックス データベースのアクティブなコピーをホストしているサーバーに関する情報を、Active Manager クライアント コンポーネント (クライアント アクセスやトランスポート サービスなど) を実行している Exchange の他のコンポーネントに提供します。 SAM は、ローカル データベースとローカル インフォメーション ストアの障害を検出します。 PAM は、データベースがレプリケートされている場合にフェールオーバーを開始するように要求することで、障害に対応します。 SAM はフェールオーバーのターゲットを決定せず、PAM 内のデータベースの場所の状態を更新しません。 アクティブなデータベース コピーの場所の状態にアクセスして、受信したデータベースのアクティブなコピーに関するクエリに応答します。

注:

Exchange Server はクラスター化されたアプリケーションではありません。 代わりに、クラスター、グループ、クラスター ネットワーク (ハートビート)、ノード管理、クラスター レジストリ、およびいくつかの制御コード関数のために、clusapi.dll に実装されたクラスター ライブラリ関数を使用します。 さらに、アクティブ マネージャーは、アクティブ データとパッシブ データ、およびマウントされたデータなど、クラスター データベース内 (別名、クラスター レジストリ) の現在のメールボックス データベース情報を格納します。 情報は直接クラスター データベースに格納されますが、その他のコンポーネントによって直接アクセスされることはありません。

Exchange Server では、Microsoft Exchange レプリケーション サービスにより、マウントされているすべてのデータベースの正常性が定期的に監視されます。 また、I/O エラーや障害がないか、Extensible Storage Engine (ESE) も監視します。 このサービスで障害を検出すると、アクティブ マネージャーに通知されます。 その後、アクティブ マネージャーは、マウントする必要があるデータベース コピーと、アクティブ マネージャーがそのデータベースのマウントに必要とする機能を決定します。 さらに、最後にマウントされたデータベースのコピーに基づいて、メールボックス データベースのアクティブ コピーを追跡し、追跡結果の情報をクライアントの接続先のメールボックス サーバー上のクライアント アクセス サービスに提供します。

最適なコピー選択

レプリケートされたメールボックス データベースのアクティブ コピーへのアクセスを不可能にする障害が発生したとき、アクティブ マネージャーは、影響を受けたデータベースの最適なパッシブ コピーを選択してアクティブ化します。 このプロセスは、以前のバージョンの Exchange では最適なコピー選択 (BCS) と呼ばれていましたが、Exchange 2016 および Exchange 2019 では最適なコピーおよびサーバー選択 (BCSS) と呼ばれていました。 この通常のプロセスは、次の順序で発生します。

  1. 管理可用性またはアクティブ マネージャーが障害を検出するか、または管理者がターゲットレス スイッチオーバーを開始します。

  2. PAM がBCSS の内部アルゴリズムを実行します。

  3. 最後のログのコピー試行 (ACLL) と呼ばれるプロセスが発生し、エラーまたはスイッチオーバーの前にアクティブなデータベース コピーをホストしていたサーバーから、見つからないログ ファイルをコピーしようとします。

  4. ACLL プロセスが完了すると、データベースのコピーをホストしているメールボックス サーバーの AutoDatabaseMountDial の値が、アクティブ化されるデータベースのコピー キューの長さと比較されます。 この時点で、以下のいずれかの状態となります。

    • 欠落しているログ ファイルの数が AutoDatabaseMountDial の値以下であり、その場合は手順 5 が実行されます。

    • 欠落しているログ ファイルの数が AutoDatabaseMountDial の値より大きくなっています。この場合、Active Manager は次に最適な利用可能なコピーがあれば、そのコピーのライセンス認証を試みます。

  5. PAM は、リモート プロシージャ コール (RPC) を使用して Microsoft Exchange Information Store にマウント要求を発行します。 この時点で、以下のいずれかの状態となります。

    • データベースがマウントされ、クライアントが利用できる状態になります。

    • データベースがマウントされず、PAM が次に最適なコピーがあれば、それに対してステップ 3 および 4 を実行します。

以前のバージョンの Exchange では、BCS プロセスが各データベース コピーの複数の側面を評価して、アクティブ化する最適なコピーを判別しました。 これらには次のようなものがあります。

  • キューの長さをコピー

  • 再生キューの長さ

  • データベースの状態

  • コンテンツ インデックスの状態

Exchange Server では、Active Manager は同じ BCS チェックとフェーズをすべて実行しますが、正常性状態の降順の制約の使用も含まれるようになりました。 具体的には、BCSS には、Exchange Server の組み込みの管理された可用性監視コンポーネントの一部であるいくつかの新しい正常性チェックが含まれています。 アクティブ マネージャーによって追加で実行されるチェックが 4 つあります (実行される順に以下に示します)。

  1. すべて正常: 影響を受けるデータベースのコピーをホストしているサーバーで、すべての監視コンポーネントが正常な状態にあるかどうかを確認します。

  2. [最大通常正常]: 正常な状態にある正常な優先度を持つすべての監視コンポーネントがある、影響を受けるデータベースのコピーをホストしているサーバーを確認します。

  3. すべてソースより優れている: 影響を受けるデータベースのコピーをホストしているサーバーで、影響を受けるコピーをホストしている現在のサーバーよりも状態が良好な監視コンポーネントがあるかどうかをチェックします。

  4. ソースと同じ: 影響を受けるデータベースのコピーをホストしているサーバーで、影響を受けるコピーをホストしている現在のサーバーと同じ状態の監視コンポーネントがあるかどうかを確認します。

モニタリング コンポーネント (たとえば、フェールオーバー レスポンダー) によってトリガーされたフェールオーバーの結果として BCSS が起動されると、ターゲット サーバーのコンポーネントの正常性がフェールオーバーが発生したサーバーよりも高くなければならないという追加の必須制約が適用されます。 たとえば、Outlook on the web の障害によりフェールオーバー レスポンダーを介してフェールオーバーがトリガーされると、BCSS は Outlook on the web が正常で、影響を受けたデータベースのコピーをホストしているサーバーを選択しなければなりません。

最適なコピー選択プロセス

データベースの障害 (プロトコルの障害ではなく) に関しては、アクティブ マネージャーは、アクティブ化の候補となる可能性のあるデータベース コピーの一覧を作成して、最適なコピー選択プロセスを開始します。 到達不能なデータベース コピー、または管理上アクティブ化がブロックされているデータベース コピーは、選択プロセスでは無視され使用されません。 リストの順序は、 AutoDatabaseMountDial の値によって異なります。

  • データベースのコピーをホストするすべてのサーバーで AutoDatabaseMountDialLossless 以外の値で構成されている場合、Active Manager はコピー キューの長さを主キーとして結果のリストを並べ替えます。 計算は (コピーから見た) LastLogInspected に基づくため、コピーの一覧は LastLogInspected の最大値 (コピー キューの長さが最短のコピー) から降順で並べ替えられます。 必要に応じて、Active Manager は、2 つ以上のパッシブ コピーのコピー キューの長さが同一の場合にタイ ブレーク条件となる二次キーとしてアクティブ化の優先順位を使用し、2 回目の並べ替えを実行します。 アクティブ化の優先順位の値が最も小さいコピーが、一覧でより上位の優先順位となります。

  • データベースのコピーをホストするサーバーで AutoDatabaseMountDialLossless の値で構成されている場合、Active Manager はアクティブ化の基本設定の値を主キーとして使用して、結果のリストを昇順に並べ替えます。 さらに、管理者が対象を指定せずにロスレス サーバーまたはデータベースのスイッチオーバーを実行した場合も、Active Manager は、主キーとしてアクティブ化の優先順位の値を使用して結果の一覧を昇順に並べ替えます。

次に、アクティブ マネージャーは、状態が Healthy、DisconnectedAndHealthy、DisconnectedAndResynchronizing、または SeedingSource のメールボックス データベース コピーを一覧から探し、順序に関する 10 個の条件セットを使用して、一覧上の各コピーがアクティブ化できるかどうかを評価します。 アクティブ マネージャーは、アクティブ化の候補が次の 1 番目の条件セットに合うどうかを判断します。

  • Healthy 状態のコンテンツのインデックスを持っている。

  • コピー キューの長さが 10 ログ ファイル未満。

  • 再生キューの長さが 50 ログ ファイル未満。

この 1 番目の条件セットに合うデータベース コピーがない場合は、アクティブ マネージャーは次の 2 番目の条件セットに合うデータベース コピーを探します。

  • クロール状態のコンテンツのインデックスを持っている。

  • コピー キューの長さが 10 ログ ファイル未満。

  • 再生キューの長さが 50 ログ ファイル未満。

この 2 番目の条件セットに合うデータベース コピーがない場合は、アクティブ マネージャーは次の 3 番目の条件セットに合うデータベース コピーを探します。

  • Healthy 状態のコンテンツのインデックスを持っている。

  • 再生キューの長さが 50 ログ ファイル未満。

この 3 番目の条件セットに合うデータベース コピーがない場合は、アクティブ マネージャーは次の 4 番目の条件セットに合うデータベース コピーを探します。

  • クロール状態のコンテンツのインデックスを持っている。

  • 再生キューの長さが 50 ログ ファイル未満。

この 4 番目の条件セットに合うデータベース コピーがない場合は、アクティブ マネージャーは次の 5 番目の条件セットに合うデータベース コピーを探します。

  • 再生キューの長さが 50 ログ ファイル未満。

この 5 番目の条件セットに合うデータベース コピーがない場合は、アクティブ マネージャーは次の 6 番目の条件セットに合うデータベース コピーを探します。

  • Healthy 状態のコンテンツのインデックスを持っている。

  • コピー キューの長さが 10 ログ ファイル未満。

この 6 番目の条件セットに合うデータベース コピーがない場合は、アクティブ マネージャーは次の 7 番目の条件セットに合うデータベース コピーを探します。

  • クロール状態のコンテンツのインデックスを持っている。

  • コピー キューの長さが 10 ログ ファイル未満。

この 7 番目の条件セットに合うデータベース コピーがない場合は、アクティブ マネージャーは次の 8 番目の条件セットに合うデータベース コピーを探します。

  • Healthy 状態のコンテンツのインデックスを持っている。

この 8 番目の条件セットに合うデータベース コピーがない場合は、アクティブ マネージャーは次の 9 番目の条件セットに合うデータベース コピーを探します。

  • クロール状態のコンテンツのインデックスを持っている。

この 9 番目の条件セットに合うデータベース コピーがない場合は、アクティブ マネージャーは、Healthy、DisconnectedAndHealthy、DisconnectedAndResynchronizing、SeedingSource のいずれかの状態を持つデータベース コピーのアクティブ化を試みます (10 番目の条件セット)。 この 10 番目の条件セットに合うデータベース コピーが見つからない場合は、データベース コピーを自動的にアクティブ化することはできません。

1 つ以上の条件セットに合う 1 つ以上のコピーが見つかれば、ACLL プロセスが、新規の可能性のあるアクティブ コピーに、元のソースからすべてのログ ファイルをコピーします。 ACLL プロセスの完了後、PAM がマウント要求を発行し、データベースがマウントされクライアントが利用できる状態になるか、データベースがマウントされず PAM が次に最適なコピーが利用可能な場合はそれを検索します。