Exchange Server Active Manager
Microsoft Exchange Serverには、データベース可用性グループ (DAG) とメールボックス データベースのコピーを含む高可用性プラットフォームを管理する Active Manager というコンポーネントが含まれています。 Active Manager は、すべてのメールボックス サーバー上の Microsoft Exchange レプリケーション サービス (MSExchangeRepl.exe) 内で実行されます。 DAG のメンバーではないメールボックス サーバーには、1 つの 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) と呼ばれます。 この通常のプロセスは、次の順序で発生します。
管理可用性またはアクティブ マネージャーが障害を検出するか、または管理者がターゲットレス スイッチオーバーを開始します。
PAM がBCSS の内部アルゴリズムを実行します。
最後のログのコピー試行 (ACLL) と呼ばれるプロセスが発生します。これにより、障害または切り替えの前に、アクティブなデータベース コピーをホストしていたサーバーから欠落しているログ ファイルのコピーが試行されます。
ACLL プロセスが完了すると、データベースのコピーをホストしているメールボックス サーバーの AutoDatabaseMountDial の値が、アクティブ化されるデータベースのコピー キューの長さと比較されます。 この時点で、以下のいずれかの状態となります。
不足しているログ ファイルの数は 、AutoDatabaseMountDial の値以下です。この場合、手順 5 が発生します。
不足しているログ ファイルの数が AutoDatabaseMountDial の値を超えています。この場合、Active Manager は次に最適な使用可能なコピーがある場合にアクティブ化しようとします。
PAM は、リモート プロシージャ コール (RPC) を使用して Microsoft Exchange Information Store にマウント要求を発行します。 この時点で、以下のいずれかの状態となります。
データベースがマウントされ、クライアントが利用できる状態になります。
データベースがマウントされず、PAM が次に最適なコピーがあれば、それに対してステップ 3 および 4 を実行します。
以前のバージョンの Exchange では、BCS プロセスが各データベース コピーの複数の側面を評価して、アクティブ化する最適なコピーを判別しました。 これらには次のようなものがあります。
キューの長さをコピー
再生キューの長さ
データベースの状態
コンテンツ インデックスの状態
Exchange Serverでは、Active Manager は同じ BCS チェックとフェーズをすべて実行しますが、正常性状態の順序を減らす制約の使用も含まれるようになりました。 具体的には、BCSS には、Exchange Serverの組み込みのマネージド 可用性監視コンポーネントの一部であるいくつかの新しい正常性チェックが含まれています。 アクティブ マネージャーによって追加で実行されるチェックが 4 つあります (実行される順に以下に示します)。
すべての正常: すべての監視コンポーネントが正常な状態にある影響を受けるデータベースのコピーをホストしているサーバーを確認します。
正常な状態まで: 影響を受けるデータベースのコピーをホストしているサーバーが、正常な状態で標準優先度のすべての監視コンポーネントを持っていることを確認します。
ソースよりすべて: 影響を受けるコピーをホストしている現在のサーバーよりも優れた状態の監視コンポーネントを持つ、影響を受けるデータベースのコピーをホストしているサーバーをチェックします。
ソースと同じ: 影響を受けるコピーをホストしている現在のサーバーと同じ状態の監視コンポーネントを持つ、影響を受けるデータベースのコピーをホストしているサーバーを確認します。
モニタリング コンポーネント (たとえば、フェールオーバー レスポンダー) によってトリガーされたフェールオーバーの結果として BCSS が起動されると、ターゲット サーバーのコンポーネントの正常性がフェールオーバーが発生したサーバーよりも高くなければならないという追加の必須制約が適用されます。 たとえば、Outlook on the web の障害によりフェールオーバー レスポンダーを介してフェールオーバーがトリガーされると、BCSS は Outlook on the web が正常で、影響を受けたデータベースのコピーをホストしているサーバーを選択しなければなりません。
最適なコピー選択プロセス
データベースの障害 (プロトコルの障害ではなく) に関しては、アクティブ マネージャーは、アクティブ化の候補となる可能性のあるデータベース コピーの一覧を作成して、最適なコピー選択プロセスを開始します。 到達不能なデータベース コピー、または管理上アクティブ化がブロックされているデータベース コピーは、選択プロセスでは無視され使用されません。 リストの順序は 、AutoDatabaseMountDial の値によって異なります。
データベースのコピーをホストするすべてのサーバー以外
Lossless
の値で AutoDatabaseMountDial が構成されている場合、Active Manager はコピー キューの長さを主キーとして使用して結果のリストを並べ替えます。 計算は (コピーから見た) LastLogInspected に基づくため、コピーの一覧は LastLogInspected の最大値 (コピー キューの長さが最短のコピー) から降順で並べ替えられます。 必要に応じて、Active Manager は、2 つ以上のパッシブ コピーのコピー キューの長さが同一の場合にタイ ブレーク条件となる二次キーとしてアクティブ化の優先順位を使用し、2 回目の並べ替えを実行します。 アクティブ化の優先順位の値が最も小さいコピーが、一覧でより上位の優先順位となります。AutoDatabaseMountDial が、データベースのコピーをホストするすべてのサーバーで の
Lossless
値で構成されている場合、アクティブ化優先の値を主キーとして使用して、結果のリストが昇順で並べ替えられます。 さらに、管理者が対象を指定せずにロスレス サーバーまたはデータベースのスイッチオーバーを実行した場合も、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 が次に最適なコピーが利用可能な場合はそれを検索します。