DAG メンバー停止時の OAB 生成について
こんにちは。Exchange サポート チームの上地です。
今回は、DAG メンバーの一部のメールボックス サーバーが停止すると、OAB が生成できなくなる事象について、ご紹介させていただきます。
以下の記事でご紹介しております通り、Exchange 2013 CU5 以降では、従来の OAB 生成とは異なり、OAB 生成用の調停メールボックスのあるサーバーで OAB が生成されます。
Title: Exchange Server 2013 で OAB を管理する
Url: https://blogs.technet.com/b/exchange_jp/archive/2013/01/31/exchange-server-2013-oab-managing-oab-in-exchange-server-2013.aspx
調停メールボックスが DAG のコピーを持つデータベース内に存在する場合は、データベースがアクティブとなっているサーバーが、OAB 生成サーバーとなります。
ここで、以下のような構成を想定します。
OAB 生成を行うサーバーが停止して、サーバーのフェールオーバーが発生すると、調停メールボックスのあるデータベースも別のサーバーでマウントされ、OAB が生成されるサーバーも切り替わります。
この時、多くの場合では、OAB の生成サーバーが 上図の Server3 に切り替わったので、Update-OfflineAddressBook コマンドの実行を行うことで、引きつづき Server3 上で OAB が生成されることが期待されます。
しかしながら、実際にこの状態で Update-OfflineAddressBook コマンドを実行しましても、OAB は生成されません。また、イベント ログなどにも OAB 生成に失敗するエラーなどは記録されません。
これは、Exchange のワークロード調整機能による動作で、DAG のメンバーの一部が停止しているときには、ワークロード調整のモニター (MdbAvailability 等) の動作により、OAB 生成コンポーネントにリソース割り当てがされなくなります。その結果、OAB の生成機能が停止した状態になり、OAB の生成がされなくなります。
もちろん、停止したメールボックス サーバーが起動すれば、OAB 生成が可能になります。
なお、調停メールボックスがコピーを持たないデータベース上にあれば、DAG メンバーの停止状態に関係なく、OAB は生成されます。
通常は、OAB の更新は 1 日に 1 回であり、サーバーの停止期間が長引かない限りは、この OAB の生成ができない事象は問題にはなりません。しかしながら、サーバーの切り替えが発生してから、一刻も早く最新の OAB を生成させたい場合や、サーバーのダウンが長期にわたり、OAB がしばらく生成できない状態では、問題となります。
対処策について
^^^^^^^^^^^^^^^^^^^^^
この事象の対処策としては、以下の 3 つがあります。
1. ワークロード管理の OAB 生成にかかわるモニターを停止する
2. 停止したサーバーを DAG メンバーから削除する。
3. DAG コピーを持たないデータベース上に OAB メールボックスを配置する
1. は、ワークロード管理の機能を変更するものであり、技術的には可能ですが、残念ながら Exchange の製品としては推奨されるものではありません。
一般的には、長期的にサーバーが停止する場合には、2 のようにそのサーバーを DAG メンバーから削除することが想定されており、これが製品としても最も推奨される対処策となります。
* 参考
Title: Remove-DatabaseAvailabilityGroupServer
Url: https://technet.microsoft.com/ja-jp/library/dd297956(v=exchg.150).aspx
---- 抜粋 ---------
MBX4 は現在オフラインで、長期間オフラインになると予想されるので、その構成を DAG から削除して、DAG にクォーラムを確立するか、DAG がクォーラムで必要とするメンバーの数を減らします。
-------------------
ただし、DAG メンバーの削除の際には、データベース コピーの削除も必要になり、また、DAG メンバーを再参加させた後にも、データベース コピーの再シードが必要になるため、慎重に判断する必要がございます。
3. は、停止したメールボックス サーバーの停止時間が短いことが見込まれており、OAB 生成のみに着目した暫定対処策となります。
調停メールボックスは、あらかじめコピーを持たない DB 上に存在している必要はなく、フェールオーバーが発生した後に調停メールボックスを移動しても問題はありません。コピーを持たない DB も、フェールオーバー後に作成しても問題ありません。
調停メールボックスの移動は、通常のメールボックスの移動と同様に New-MoveRequest コマンドを使用できます。
例)
Get-Mailbox <対象のOAB 生成用調停メールボックス> -Arbitration | New-MoveRequest -TargetDatabase <移動先データベース>
OAB 生成が有効な調停メールボックスは、以下のようなコマンドで確認することができます。
Get-Mailbox -Arbitration | where {$_.PersistedCapabilities -like "*oab*"}
また、すでにコピーを持たない DB があり、その DB 内に OAB 生成の調停メールボックスが存在する場合、Set-OfflineAddressBook コマンドで、その調停メールボックスに OAB 生成を関連付けても問題ありません。
例)
Set-OfflineAddressBook <OAB 名> -GeneratingMailbox <別の OAB 生成用調停メールボックス>
以上、ご案内しました事象は、シングル サイトの DAG 構成でも発生しますが、多くの場合、サイトをまたいだ DAG 構成で、片方のサイトがダウンしたときに、丸ごと別のサイトに切り替える、いわゆる「データセンターの切り替え」を行った際に顕著になることが多いですので、DAG の計画時にはご留意いただければと思います。