ILM 2007 における Exchange プロビジョニングの注意事項
皆さん、こんにちは、今回は Exchange プロビジョニングの注意事項についてご紹介させていただきます。
ILM 2007 で、お客様の環境要因ならびに大量データを処理した時に Exchange プロビジョニングが失敗してしまうという障害事例が報告されております。以下、弊社技術部門での障害対応の経緯やベストプラクティスも交え、ご紹介いたします。
ILM 2007 では、『配布グループ/セキュリティ グループの所属ユーザー』などの格納に利用する Multi-Valued (ReferenceDN) 属性を処理のに時間が掛かります。この Multi-Valued (ReferenceDN) 属性に大量データが含まれる場合、Exchange プロビジョニングに失敗することがあります。また、Exchange プロビジョニングが失敗した後の Import 処理に大幅な時間を必要とすることがあります。
以下に今回確認できた事象と対処方法についてご案内させていただきます。
1.事象の概要
■ 発生契機
ILM 2007 は、Multi-Valued (ReferenceDN) 属性に大量データが含まれる場合、処理に時間が掛かります。これは、参照元と参照先でデータに整合性が取れていることを処理毎にチェックするように実装しているためとなります。例えば、一つのセキュリティ グループに 1 万ユーザーが所属している場合、ILM 2007 では Import 処理や Export 処理、Synchronization 処理にて、グループと所属する 1 万ユーザー間でキチンとお互いのデータが存在しているかを検証します。このため、一つのグループに 1 万ユーザー以上が所属しているような AD 環境で、そのような大所帯のグループが数十と存在する場合には、ID 同期の処理全般に時間が掛かることがあります。
この際、大量データ処理を契機に以下の 2 つの事象が起きることがあります。
(a) Export 時に Exchange プロビジョニングが NullReferenceException で失敗
(b) 上記 (a) の直後に実行した Import 処理が大幅に遅延
■ 発生理由
上記の事象 (a) と (b) について、それぞれ解説します。
◆ 事象 (a) NullReferenceException について
-------------------------------------------------------------
NullReferenceException は、Exchange プロビジョニングを実行するスクリプトプロセス (mmsscrpt.exe) が、異常終了してしまうことで発生します。スクリプトプロセスが一度異常終了すると、以後の Exchange プロビジョニングで情報が欠落します。そのために、異常終了の以降に実施した残りの Export データは全てNullReferenceException で失敗します。なお、異常終了の原因については特定に至っていません。
◆ 事象 (b) Import 処理が大幅に遅延について
-------------------------------------------------------------
Import 処理が大幅に遅延は、NullReferenceException に影響を受けて発生します。NullReferenceException が発生すると、該当の Export データにはエラーが記録されます。ILM では、そのエラーを次回の Import 処理時に修復します。この修復処理では、Multi-Valued (ReferenceDN) 属性の整合性に対するチェックや再構築も実施されます。その結果、大所帯のグループが存在するような大量データでは、通常の Import 処理に比べて大幅な時間を必要とすることがあります。
■ エラーの内容
この事象が発生しているかの有無については、アプリケーション イベントログに以下の内容が記録されているかで確認することが出来ます。
アプリケーション イベントログに、AfterExportEntryToCd() function の System.NullReferenceException が記録されている場合、スクリプトプロセス (mmsscrpt.exe) の異常終了が発生したことが分かります。
2.対処方法
この事象について暫定対処として、以下の対処方法があります。
( 対処 ) AD-MA で、 Exchange プロビジョニングを無効にする
本事象は、Exchange プロビジョニングの実行中に、スクリプトプロセス (mmsscrpt.exe) の異常終了が発生することで起きます。そのため、Exchange プロビジョニングを無効 (“No provisioning” 設定) にすることで、(a) と (b) の現象を回避することができます。
設定方法は以下です。
なお、Exchange プロビジョニングを無効にした場合、Export したデータが Exchange Server に反映されません。追加で、Export したデータまたは、OU に対して、Exchange PowerShell の Update-Recipient を実行する必要があります。
<参照リンク> Update-Recipient
http://technet.microsoft.com/ja-jp/library/bb738148(v=exchg.80).aspx
Update-Recipient を実行することで、ILM で Exchange プロビジョニングを実行した場合と同等のデータ反映を Exchange Server に実施することができます。
3.対象製品について
本 Blog は、以下の製品での発生事象を解析した結果の内容となります。
ILM2007
以下の製品では、ILM2007 と同規模環境での事象の発生は報告されておりません。FIM2010以降では、データ処理時のパフォーマンスを改善しており、ILM2007 より、多量のデータへの対応が可能になったためです。ただし、もし上述と同様の事象がもし発生した場合には上記 2. の対処をご検討ください。
FIM 2010
FIM 2010 R2
今後も、ILM 2007 / FIM 2010 関連の情報を提供させていただきますので、今後ともよろしくお願いいたします。