Exchange 2010 DAC モードの DAG について

Exchange 2010 の DAG (Database Availability Group) 環境にて、DAC モード (Datacenter Activation Coordination) を使用している際のご留意いただきたい動作についてご案内いたします。
該当する可能性のある DAC モードのシナリオとして、DAG がサイトをまたがって構成されていて、セカンダリ サイトに 1台のみメールボックス サーバーが配置されている場合となります。

通常運用時に使用するサイトを PrimarySite、災害対策用のサイトとして DRSite というサイトが存在しているとします。
また、”DAG01” という DAG が構成されており、DAG01 はこれらのサイトをまたぐ形で 2 台のメールボックス サーバーを PrimarySite に、そして 1 台のメールボックス サーバーを DRSite に配置しています。この  DAG01 では DAC モードが有効になっているとします。
(DAC モードが有効になっているかどうかは、Get-DatavaseAvailabilithGroup のDatacenterActivationMode が DagOnlyとなっているかどうかで判断できます。)

このような環境において、PrimarySite がダウンし、データセンター フェール オーバーを実施する場合には、以下の手順を実施することで、DRSite のメールボックス サーバーのみでクラスタが稼働し、メールボックス データベースをマウントしてサービスを再開することができます。
※ PrimarySite がダウンするとしクラスタを構成するノードのマジョリティが稼働していないため、Restore-DatabaseAvailabilityGroup を実行するまでクラスタはダウンしています。

1. Stop-DatabaseAvailabilityGroup でプライマリ サイトのサーバーを "停止" とマークします。

Stop-DatabaseAvailabilityGroup DAG01 -ActiveDirectorySite:PrimarySite –ConfigurationOnly

2. Restore-DatabaseAvailabilityGroup にて DRSite のメールボックス サーバーのみにクラスタを縮小して、サービスを開始します。

Restore-DatabaseAvailabilityGroup dag01 -ActiveDirectorySite:DRSite

ご留意いただきたい動作
-------------------------------
注意が必要なのは、上記でクラスタ ダウン後 Restore-DatabaseAvailabilityGroupを実行する間に、何らかの理由で DRSiteのメールボックス サーバーの OS を再起動した場合となります。
DRSiteのメールボックス サーバーの OS を再起動した場合、 DAG がプライマリ アクティブ マネージャを DRSite のメールボックス サーバーへアサインできない状態となります。
その結果、データベースのマウント等が実行できなくなります。

この状態となった場合、以下のように Get-DatabaseAvailabilityGroup -Statusの結果がエラーとなり、また Microsoft-Exchange-HighAvailability/Operational のイベント ログでも下記の警告とエラーが繰り返し記録されます。

- コマンドレット
[PS]C:\>Get-DatabaseAvailabilityGroup DAG01 -status | fl
サーバー側の管理操作に失敗しました。サーバー上で 'GetDagNetworkConfig' が失敗しました。エラー: NetworkManager がまだ初期化されていません。原因を特定するには、イベント ログを確認してください。

- イベント ログ
ログの名前: Microsoft-Exchange-HighAvailability/Operational
ソース: Microsoft-Exchange-HighAvailability
イベント ID: 181
タスクのカテゴリ: Role Monitoring
レベル: エラー
説明: No new cluster owner could be found.

ログの名前: Microsoft-Exchange-HighAvailability/Operational
ソース: Microsoft-Exchange-HighAvailability
イベント ID: 174
タスクのカテゴリ: Role Monitoring
レベル: 警告
説明: The cluster group is hosted on this server but the current role is Unknown. An attempt will be made to move the group.

対処方法
------------
上記の状況発生後に Start-DatabaseAvailabilityGroup を明示的に実行することで、プライマリ アクティブ マネージャが DRSite のメールボックス サーバーへアサインされ、現象を回避することができます。

例) Start-DatabaseAvailabilityGroup DAG01 -ActiveDirectorySite:DRSite

詳細
------
まず、上記のシナリオにかかわらず、DAC モードでは、Microsoft Exchange Replication (MSExchangeRepl) サービスが Datacenter Activation Coordination Protocol (DACP) というフラグ情報を用いて、メールボックス サーバーごとにデータベースのマウントの可否を判断する動作があります (1 がマウント可/0 がマウント不可)。
DACP は MSExchangeRepl サービス起動時には常に 0 であり、以下のいずれかを満たす場合に 1 になります。

・DACPが 1 である他の DAG メンバー サーバーと正常に通信ができる
・DAG の StartedMailboxServers にリストされているすべてのサーバーと通信できる

この動作は、データセンター フェール オーバー時におけるスプリット ブレイン現象を防ぐためのものであり、これにより、例えば全てのDAG サーバーを停止すると、すべてのノードを開始するまで DACP が 1 となることができず、データベースをマウントすることはできません。
(例えば 5 台で DAC モードのDAG が構成されている環境で、5 台全てを停止した状態とします。その場合、3 台を起動した時点でクラスタとしては起動しますが、上記の 2 つの条件を満たさないためデータベースをマウントすることができません。5 台全てを起動した時点でマウントが可能となります。)

ただし、DAC モードの DAG のメールボックス サーバーが 1 台になる場合には (前述の例では DRSite のメールボックス サーバー 1 台のみになる場合)、上述の DACP が 1 となる条件は常に満たされるようになるため、これらの条件だけではスプリット ブレイン現象の回避に十分ではなくなります。

そのため、DAG のメールボックス サーバーが 1 台になる場合には、最後に DACP が 1 に設定された際の、メールボックス サーバー自身および File Share Witness サーバー (FSW)  の両サーバーの OS 起動時刻をメールボックス サーバーのレジストリに保持し、この 2 台のサーバーの直近の OS 起動時刻とレジストリの情報を MSExchangeRepl サービスが 30 秒ごとに比較し、一致する場合には DACP のフラグの値を 1 にします。
そして、メールボックス サーバー自身と FSW の起動時間が、どちらもレジストリに保持している時刻と合致しない場合は、DACP を 1 にせず、データベースをマウントしません。

今回ご案内した上述のシナリオにおいては、Restore-DatabaseAvailability 実行前に DRSite のメールボックス サーバーを再起動しているため、メールボックス サーバー自身の OS 起動時刻と、レジストリに保持されている時刻は一致しません。
さらに Restore-DatabaseAvailability を実行すると、FSW は DRSite の Alternate File Witness Server に変更され、FSW OS 起動時刻を保存するレジストリにも 0がセットされるため、FSW の OS 起動時刻とレジストリに保持されている時刻も一致しません。
この結果 DACP が 1 とならないため、プライマリ アクティブ マネージャが DRSite のメールボックス サーバーへアサインされず、データベースをマウントできない状態となります。
このような場合には、明示的に Start-DatabaseAvailabilityGroup を実行することで DACP が 1 に設定されるため現象を回避できます。

詳細については以下のサイトについてもご参考ください。

Part 1: My databases do not automatically mount after I enabled Datacenter Activation Coordination
https://blogs.technet.com/b/timmcmic/archive/2012/05/21/my-databases-do-not-automatically-mount-after-i-enabled-datacenter-activation-coordination.aspx

Part 2: Datacenter Activation Coordination and the File Share Witness
https://blogs.technet.com/b/timmcmic/archive/2012/05/30/part-2-datacenter-activation-coordination-and-the-file-share-witness.aspx

DACP とスプリット ブレイン現象については以下の資料もご参照ください。

データセンターのアクティブ化調整モードについて
https://technet.microsoft.com/ja-jp/library/dd979790.aspx