![]() | |
Sun Java™ System Identity Manager 7.0 リソースリファレンス |
第 5 章
Active Directory 同期フェイルオーバーここでは、Active Directory 同期フェイルオーバーの処理方法について説明します。このカスタマイズを実行すると、新しいドメインコントローラに切り替えたときに発生する繰り返しイベントの数を制限できます。
Active Directory 同期フェイルオーバーでは、処理を継続できる設定可能な一連のドメインコントローラから HighestCommittedUSN の履歴を定期的に収集および維持するタスクを使用します。ActiveSync ドメインコントローラがダウンした場合は、もう 1 つのタスクを実行することで、フェイルオーバードメインコントローラの 1 つを指すように Active Directory リソースの設定を変更できます。Active Directory で行われた変更がすべてのドメインコントローラにレプリケートされるまで少し時間がかかることがあるため、Active Directory ActiveSync では、フェイルオーバードメインコントローラで新しい変更の処理のみを開始すればよいというわけではありません。そうではなく、ダウンする前のドメインコントローラにレプリケートされていない可能性がある、フェイルオーバードメインコントローラに加えられた古い変更も調べる必要があります。このため、レプリケーションの遅延を十分に見込んだ過去の時点にそのフェイルオーバードメインコントローラに関して保存された HighestCommittedUSN を使用します。これにより、ActiveSync がイベントを見逃すことを防止できますが、一部の変更が 2 回処理される可能性もあります。
必要なコンポーネント
この手順には、次のコンポーネントが必要です。
「On Synchronization Failure Process」リソース属性
Active Directory のアクティブな同期に関する「On Synchronization Failure Process」リソース属性は、同期失敗時に実行されるプロセスの名前を指定します。デフォルトでは、このリソース属性の値は空です。
この属性は、Identity Manager 管理者が、Active Directory 同期失敗の発生時にプロセスを実行できるようにします。
Active Directory 失敗時のプロセス
リソース属性で指定されたプロセスは、失敗時にリソースによって起動されます。同期失敗の発生を知らせる電子メールを Active Directory 管理者に送信するプロセスを起動するようにしてください。電子メールの本文に、アダプタのポーリングメソッドから返されたエラーメッセージを含むこともあります。
また、指定されたエラーが発生したときに、管理者による承認を得てから、同期フェイルオーバータスクを自動的に呼び出すビジネスプロセスを設計することもできます。
プロセスのコンテキスト
ネイティブプロセスでは次の引数を使用できます。
引数
説明
resourceName
失敗が発生したリソースを識別します
resultErrors
ポーリングメソッドから返されたエラーを示す文字列を一覧表示します
failureTimestamp
失敗が発生した時刻を示します
Active Directory Recovery Collector タスク
Identity Manager 管理者インタフェースの「タスク スケジュール」ページで、Active Directory Recovery Collector タスクをスケジュールおよび起動できます。このプロセスは、リソースオブジェクトインタフェースを使用して各ドメインコントローラの rootDSE オブジェクトと交信します。タスクのスケジュールによって、ドメインコントローラからデータが収集される頻度が決まります。
このタスクは、リソース復元情報を収集し、ADSyncRecovery_resourceName という名前の設定オブジェクトに格納します。この設定オブジェクトを拡張した GenericObject には各ドメインコントローラで収集された HighestCommittedUSN とタイムスタンプ (ミリ秒単位) のリストが格納されます。
各実行中に、このタスクは HighestCommittedUSN の古い値を復元データから除去します。daysToKeepUSNS 引数で、このデータを格納する期間を設定できます。
引数
Active Directory Failover タスク
このタスクは、失敗が発生したリソースと IAPI オブジェクトが、代替ドメインコントローラと usnChanged 開始ポイントを使用するように再設定します。タスク入力フォームに、格納されたフェイルオーバーデータから、指定されたホストで利用可能な usn-changed 時間が表示されます。
いくつかのエラーから、フェイルオーバーが適している状況を識別できます。フェイルオーバータスクの自動呼出しで発生する可能性がある問題の一例に、java.net.UnknownHostException エラーメッセージがあります。このメッセージで示されるエラーは、少なくとも次の 2 つの理由で発生することがあります。
フェイルオーバーモード
Active Directory フェイルオーバーを用いて問題を解決するには、次の 2 つの方法のどちらかを使用できます。
引数
特定のエラーに半自動フェイルオーバーの起動が適していると判断した場合は、次のタスク引数を設定します。これらの引数を設定することにより、失敗が発生したリソースと IAPI オブジェクトが、代替ドメインコントローラと usnChanged 開始ポイントを使用するように再設定されます。
処理を継続するドメインコントローラおよび開始ポイントとなる保存された HighestCommittedUSN 番号を手動で指定するには、次の引数を指定します。
リソースオブジェクトの変更
Active Directory Recovery Collector タスクでは、使用されている値に基づいて LDAPHostname リソース属性値か GlobalCatalog リソース属性値のどちらかが更新されます。サブドメイン検索リソース属性が true に設定されていて、グローバルカタログ属性の値が空でない場合は、グローバルカタログサーバー属性が変更されます。それ以外の場合は、LDAPHostname がバックアップドメインコントローラの名前に変更されます。
IAPI オブジェクトの変更
Active Directory Recovery Collector タスクでは、次回の実行時に調べる変更を Active Directory リソースアダプタに知らせるために、IAPI オブジェクトも更新されます。このタスクでは、lastUpdated 属性値と lastDeleted 属性値の両方の HighCommitedUSN 値が更新されます。
Active Directory 同期フェイルオーバーのセットアップ手順 1: Active Directory Synchronization Recovery Collector タスクを設定する
手順 2: Active Directory エラー時プロセスの Active Sync 属性を定義する
各 Active Directory Active Sync リソースでは、Identity Manager によって、リソースの同期中に失敗が発生したときに呼び出される onError プロセスが定義されます。Active Directory リソースでエラー時プロセスが定義されていると、アクティブな同期中にリソースでポーリングメソッドが呼び出されたときにエラーが発生した場合に、このプロセスが呼び出されます。このプロセスでは、IAPI オブジェクトからの結果がチェックされ、エラーが発生した場合は、定義されたプロセスが呼び出されます。
このプロセスを、エラーが発生したときに電子メールで管理者に通知するように設定します。その失敗では Identity Manager によって別のドメインコントローラに処理が継続されることが保証されているかどうかを管理者が判断できるように、電子メールの本文にエラーテキストを含めます。
そのエラーテキストにより、管理者は、長期にわたる停止の可能性があるか、すぐに解決できる一時的な問題 (次回のポーリングで解決される一時的なルーティングの問題など) による障害であるかを知らされます。
手順 3: 失敗が発生したリソースの Active Directory 同期フェイルオーバータスクを実行する
別のドメインコントローラへのフェイルオーバーが保証されているエラーがドメインコントローラから返された場合は、「タスク」ページから Active Directory 同期フェイルオーバータスクを実行します。
手動フェイルオーバーモードの場合は、フェイルオーバータスクに次の情報が必要です。
新しいドメインコントローラへの切り替えが完了したあとに ActiveSync を再起動するかどうかも選択してください。
タスクの動作
Active Directory 同期フェイルオーバータスクは、実行時に次のように動作します。
同期失敗ワークフローの例
Active Directory リソースの「On Synchronization Failure Process」リソース属性として、次のサンプルワークフローを設定できます。このワークフローでは、java.net.UnknownHostException エラーメッセージを探します。このメッセージが見つかった場合は、管理者に通知電子メールを送信します。
<TaskDefinition name='Sample AD Sync On Error Workflow'
executor='com.waveset.workflow.WorkflowExecutor'
syncControlAllowed='true' execMode='sync'
taskType='Workflow'><Extension>
<WFProcess title='Example AD Sync OnError Workflow'>
<Variable name='resultErrors' input='true'>
<Comments>Errors returned from the resource.
</Comments>
</Variable><Variable name='resourceName' input='true'>
<Comments>Name of the AD resource that returned the errors.
</Comments>
</Variable><Variable name='failureTimestamp' input='true'>
<Comments>Failure timestamp, when it occurred.
</Comments>
</Variable><Activity name='start'>
<Transition to='checkErrors'/>
</Activity>
<Activity name='checkErrors'>
<Variable name='criticalError'>
<Comments>Local variable to hold if we need to notify
</Comments>
</Variable><Action name='iterateMessage'>
<dolist name='msg'>
<ref>resultErrors</ref>
<cond>
<match>
<ref>msg</ref>
<s>java.net.UnknownHostException</s>
</match>
<set name='criticalError'>
<s>true</s>
</set>
</cond>
</dolist>
</Action><Transition to='notify'>
<notnull>
<ref>criticalError</ref>
</notnull>
</Transition>
<Transition to='end'/>
</Activity><Activity name='notify'>
<Action application='notify'>
<Argument name='template' value='#ID#EmailTemplate:ADSyncFailoverSample'/>
<Argument name='resultErrors' value='$(resultErrors)'/>
</Action>
<Transition to='end'/>
</Activity><Activity name='end'/>
</WFProcess>
</Extension>
</TaskDefinition>