2012年1月29日日曜日

回線が細すぎてADレプリケーションに失敗する場合の対処法

先日、遠隔地の拠点に新たにADサーバを立てた時に、回線が細すぎてADレプリケーションに失敗するという、「こんなの初めて!」な現象に出くわした。(結構レアだと思う)

発生したエラー
遠隔地のサーバでDCPROMOを実行し、無事終了したので、SYSVOLおよびntds.ditのレプリケーションが完了するまで見守ることにしたのだが、どうもntds.ditのレプリケーションが途中で止まってしまったようで、あるファイルサイズから一向に増えなくなってしまった。

状況を確認するためrepadmin /showrepl を叩くと、下記のようなエラーが表示された。
C:\>repadmin /showrepl
(snip)
==== 入力方向の近隣サーバー======================================
DC=****,DC=****,DC=**,DC=**
    *****\******** (RPC 経由)
        DSA オブジェクト GUID: ********-****-****-****-************
        2012-01-21 19:16:08 の最後の試行は、失敗しました。結果は 1818(0x71a):
            リモート プロシージャ コールが取り消されました。
        7 回連続で失敗しました。
        最後に成功したのは (never) です。
(snip)

「結果は 1818(0x71a)」とはこれいかに。

対処法:RPCタイムアウト値を変更
どうもWindows Server 2003以降は、ADのレプリケーション処理におけるRPCのタイムアウト値は5分になっているらしい。で、5分以内にレプリケーション元サーバからRPC応答が完了しないと、タイムアウトしてしまう。2000の頃は45分だったそうなので、ずいぶん短くされてしまったものだが、裏を返せば2000年から2003年にかけて世の中の通信事情がずいぶん良くなって、マイクロソフトとしては「5分でイケる」と判断したのであろう。
マイクロソフトの判断の是非はさておき、RPCのタイムアウト値を長くすることでこの問題は解決する。
レジストリエディタで
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
にDWORD値 "RPC Replication Timeout (mins)" を追加し、
値を45に設定し、再起動すればOK。
see also:Active Directory Replication Tools and Settings

0 コメント:

コメントを投稿