2016年6月8日水曜日

ActiveDirectory が壊れた時にどうするか | ライタス株式会社


つい先日、Hyper-V上に構築しているActiveDirectoryが壊れました。

「Hyper-V上に構築したActiveDirectoryは、動作保証しないよ」とマイクロソフト様がおっしゃるのに、それを無視したバチが当たったのでしょうか・・・
テスト用の環境だったので、まだ平静でいられますが、本番環境だったら目も当てられません。


その時の記録をつけようと思います。

1. 何が起きたのか


今回の環境について整理しておきます。
Hyper-V上に構築しているActiveDirectoryが2台、Exchange Server 2007が1台(以下Exchange機という)という構成です。
ActiveDirectoryのサーバーは、1台がServer-Core 2008 Server(以下1番機という)で、もう1台が2008 R2(以下2番機という) でした。

最初の現象は、Exchange の Infomation Server サービスが起動しなくなりました。
何らかの理由でサービスが停止したものと思われるのですが、最初は、なんなのかサッパリ分かりませんでした。

2つ目の現象として、ActiveDirectoryにエラーが発生し始めました。 NetlogonとかTerminalServiceとか、たくさんです。

3つ目の現象として、DNSサービスが起動しなくなりました。 正確には起動しているのですが、ActiveDirectoryが認識できないのか、ゾーンを読み込めないというものです。

2. 何をやったのか

異常動作に陥る前に、なにかやったのかと言われると、何もやっていないと思います。
Exchangeの方では、上記記載通り、Infomation Serverが飛んだので、再起動したぐらいでしょうか。

3. 復旧するためになにをやったのか

まずは、状況調査から。
各ドメインサーバーで、以下コマンドを実行します。

repadmin /showrepl 
このコマンドは、ActiveDirectory間の同期状況を確認してくれるコマンドです。
実行したら、いくつか同期に失敗しているようでした。

また、1番機へのPingが通っていないことに気が付きました。

4. セカンダリのプライマリ強制昇格

この時点で、1番機に何か問題がありそうだと推測。とりあえず1番機は停止させました。
残った2番機を強制的にプライマリに昇格させることを思いつきます。

強制的に昇格させる方法は、以下のHPが詳しいです。

Active DirectoryのFSMO役割をほかのDCへ強制的に割り当てる
http://www.atmarkit.co.jp/fwin2k/win2ktips/1174fsmoseize/fsmoseize.html

上記記事で気になったのは、
fsmo maintenance: seize domain naming master
はうまく行きません。
どうもWindows Server 2008では、
fsmo maintenance: seize naming master
とするのが正しいようです。

transferは当然失敗するので、FSMOの強制転送を行います。
強制転送された後、再起動を1回行い様子を見ます。
再起動には時間がかかるので、気長に待ちます。
ログインしたら、イベントビューアを確認して、問題が起きていないことを確認します。

5. DNSサーバーの様子がおかしい

ActiveDirectory的には、FSMOが転送されれば、ほぼ作業としては終わりのはずですが、
DNSがうまく動いてくれていません。
DNSサーバーがActiveDirectoryをうまく見つけられていないようです。

DNSサーバーは再インストールしても問題ないはずなので、これを実施。
しかしながら、再インストールだけではうまく行きませんでした。

調べてみたところ、再インストール前に、旧情報を削除しておく必要があるという話を見つけたので、
これを実施してみました。

  • HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\DNS Server\Zones以下のゾーン情報の削除
  • C:\Windows\System32\dns フォルダの削除(実際にはリネームしました)
その後、DNSサーバーを再インストールしたら、うまく稼働してくれました。

6. まだ終わらないExchange連携

ActiveDirectoryは、何とか復旧したようなのですが、Exchange側が思うように動いてくれません。
原因としては、ActiveDirectoryをうまく認識してくれていないようです。
Exchange ADAccessというサービスがActiveDirectoryを参照しているようなのですが、ActiveDirectory側が拒否しているようです。
しょうがないので、Exchangeを一度ADからおろして、再度参加させたところ、あっさり動いてくれました。


7. まとめ


今回はたまたまうまく行ったのと、時間がとれたということもあり、何とか復旧までたどり着きました。
ActiveDirectoryの障害は、非常に知識と経験が必要な作業ですので、その場に応じた対応をしないと、最悪全インストールという恐ろしい事態になりかねないことを実感しました。

特に、Exchangeが絡んでいる場合は、業務影響が深刻になりやすいので、対応については、しっかりと理解しておくことが重要です。




本記事は、弊社代表のブログ記事なんでもIT屋の宿命からの記事を加筆修正したものです。

0 件のコメント:

コメントを投稿