今回はドメインコントローラーのデータベースを、他のドメインコントローラーにコピーする役割である「複製」(レプリケーション)について紹介する。
前回、ドメインコントローラー(Domain Controller:DC)はActive Directoryで重要な役割を果たすので、サーバー1台だけでなく、複数台で動かすように、という解説をした。すると今度は、2台のドメインコントローラーでどうやってデータベースの内容を同じものにしているのだろう、という疑問を持つかもしれない。今回はこの疑問に答えていくことにしよう。
ドメインコントローラーはユーザー認証など重要な役割を果たすサーバーであるため、もしドメインコントローラーにトラブルが発生して利用できなくなれば、システム全体に大きな影響を及ぼす。そのため、ドメインコントローラーは2台以上のサーバーを用意し、何かあった場合に備え、どちらのサーバーも同じ役割を果たせるようにする、というのがActive Directoryの一般的な運用になる(図1)。このとき、2台のドメインコントローラーは、同じ内容のデータベースを保持していなければならない。
そこで、Active Directoryではドメインコントローラー同士が定期的にデータベースの内容を確認し、自動的にその内容を同一にするための同期処理を行っている。これが、ドメインコントローラーの「複製」(レプリケーション)と呼ばれる処理である。
複製では、ドメインコントローラーAでユーザーを作成すると、その情報がドメインコントローラーBのデータベースにも反映されるように同期処理が行われる。また、ドメインコントローラーBでユーザー名を変更すると、その情報はドメインコントローラーAのデータベースにも反映される。
つまり、Active Directoryでは、どのドメインコントローラーからでもオブジェクトの作成、変更、削除が行え、そしてその情報を他のドメインコントローラーのデータベースへ複製するようになっている。
以降は複製の要素について、一般的に出てくる素朴な疑問に答える形で見てみよう。
Active Directoryでは2台目以降のドメインコントローラーをインストールすると、自動的に自分が複製を行う相手(ドメインコントローラー)を見つけ、必要に応じて複製を行うようになっている。つまり、2台目以降のドメインコントローラーでは、複製の設定を行わなくても自動的に複製相手が設定され、複製が開始されるのだ。このとき、直接複製を行う相手を「複製パートナー」と呼ぶ。それぞれのドメインコントローラーにおける複製パートナーは、「Active Directoryサイトとサービス」管理ツールで確認できる(画面1)。
しかし、3台以上のドメインコントローラーが存在する場合は、自動的に作成される複製パートナーの設定では複製がダイレクトに行われるとは限らないことに注意が必要だ。例えば、以下の図2のようにドメインコントローラーAでユーザーを作成した場合、その内容がドメインコントローラーBに複製されてから、ドメインコントローラーB経由でドメインコントローラーCに複製されるように複製パートナーが設定される場合もある。
そうなると、ドメインコントローラーCは変更内容を受け取るまでに(短時間だが)時間を要してしまう。もし、ドメインコントローラーAでデータベースに対する変更があったらすぐにその情報を受け取りたいということであれば、ドメインコントローラーAとドメインコントローラーCの間で直接複製を行うように「Active Directoryサイトとサービス」管理ツールから複製パートナーを手動で設定すればよい。
ドメインコントローラーの複製は「必要に応じて」行われると紹介したが、正確には次のようなタイミングで行われる。
ただし、サイト間の複製を行う場合は、ここで紹介する複製間隔とは異なる。「サイト」という概念については、別の回であらためて紹介する予定だ。
また、テストやトラブルシューティングの目的で複製をすぐに開始したい場合には、「Active Directoryサイトとサービス」管理ツールをはじめ、強制的に開始できる方法がいくつかある。以下の記事を参考にしてほしい。
サイト間の複製以外にも、複製が始まるタイミングにはもう1つ例外がある。それがパスワードの複製である。パスワードのように内容の変更が与える影響が大きいものは、15秒を待たずにすぐに複製が行われる。
ここまで、複製は複製パートナーに対して行われると説明してきたが、パスワードの複製に関しては、必ず最初に「PDCエミュレーター」という役割を持つドメインコントローラーに対して「今すぐに」複製が行われる。そして、その後の複製はこれまでに紹介したタイミング(つまり15秒後)で行われる。
もし、パスワードの変更直後に新しいパスワードでユーザーがログオンすると、ドメインコントローラーによってはパスワードがまだ変更されていない場合もある。その場合には、ドメインコントローラーはPDCエミュレーターを参照するため、新しいパスワードが全てのドメインコントローラーに複製されていなくてもログオンが失敗することはない。
パスワードの複製以外にも、Active Directoryには変更内容を他のドメインコントローラーにすぐに複製しなければならない情報がある。このような情報は「緊急レプリケーション」と呼ばれる複製方法で、15秒を待たずにすぐに複製が行われる。
緊急レプリケーションに該当する主な変更内容には、以下のようなものがある。
緊急レプリケーションはパスワードの複製とは異なり、複製パートナーとして指定された相手に対して「今すぐに」複製が行われる。
答えから先にいえば、異なるバージョンのWindows Serverを複製パートナーにすることは可能だ。
OSのバージョンが異なるドメインコントローラー同士で複製を行う場合、新しいOSバージョンのドメインコントローラーだけで利用可能な機能に関する設定を、古いOSバージョンのドメインコントローラーに保存できなくなる問題が起きる。
そこで、Active Directoryでは新しいOSバージョンのドメインコントローラー側で“わざと新しいActive Directory機能を使えないようにする”ことで、古いOSバージョンのドメインコントローラーとの間で複製ができるようにしている。
“わざと新しいActive Directory機能を使えないようにする”機能とは、Active Directoryの「ドメイン機能レベル」と「フォレスト機能レベル」のことだ。それぞれの機能レベルではOSバージョンを選択できるようになっており、選択したOSバージョン以上の機能は使えないように制限がかかる。
例えば、ドメインコントローラーがWindows Server 2008とWindows Server 2012 R2の2台で構成されるActive Directoryドメインの場合、選択可能なドメイン機能レベルとフォレスト機能レベルはそれぞれ「Windows Server 2008」となる。これにより、Windows Server 2012 R2のドメインコントローラーで利用できるActive Directoryの機能は、Windows Server 2008までで利用できる機能だけに制限され、結果的にWindows Server 2008のドメインコントローラーはWindows Server 2012 R2のドメインコントローラーとの間で複製が行えるようになる。ドメイン/フォレストの機能レベルに関しては、以下の記事を参考にしてほしい。
これまでドメインコントローラー間の複製を紹介してきたが、実はドメインコントローラー間の複製は複数に分割して行われる。
Active Directoryのデータベースは「パーティション」と呼ばれる単位に分割されており、複製はパーティション単位で行われるようになっている。一般的なドメインコントローラーでは、次の4つのパーティションを持つ。
ドメイン内に作成されるオブジェクトを格納するための領域。ドメインパーティションに格納されるデータは、「Active Directoryユーザーとコンピューター」管理ツールで確認できる。
フォレスト内の構成情報を格納するための領域。構成パーティションに格納されるデータは、「Active Directoryサイトとサービス」管理ツールや「Active Directoryドメインと信頼関係」管理ツールで確認できる。
Active Directoryデータベースに格納可能なオブジェクトの種類とプロパティの種類などに関するデータを格納するための領域。スキーマパーティションに格納されるデータは、「Active Directoryスキーマ」管理ツールで確認できる。
アプリケーションで扱うデータをActive Directoryデータベースに格納できるようにするために用意された領域。一般的には、ドメインコントローラーにインストールされたDNS(Domain Name System)サーバーのデータベースが格納される。
以上、4つのパーティションがそれぞれパーティション単位で複製パートナーとの間で複製される。各パーティションの複製状況はさまざまな方法で確認できるが、ここでは「repadmin」コマンドを利用した確認方法を紹介しよう。ドメインコントローラーのコマンドプロンプトで「repadmin /showreps」コマンドを実行する。すると、図4のような結果が確認できる。
図4はユーザーを作成したのち、ユーザーを作成したドメインコントローラー「SP14-DC」上で「repadmin」コマンドを実行した様子になる。「SP14-DC」ドメインコントローラーから「SP13-DC」ドメインコントローラーへの複製の状況が表示されており、ドメインパーティションを表す「DC=example,DC=com」では、「2014年6月7日18時55分29秒」に複製が行われたことが確認できる。
一方、「DC=Configuration」で始まる項目の構成パーティション、「DC=Schema」で始まる項目のスキーマパーティション、「DC=DomainDNSZones」と「DC=ForestDNSZones」で始まる項目のアプリケーションパーティションは、それぞれ「2014年6月7日18時45分45秒」に複製が行われたことが確認できる。
ドメインコントローラーはActive Directoryでは重要な役割を果たすため、複数台のサーバーで運用することが重要であることを紹介し、それぞれのドメインコントローラーは複製を行うことで同じActive Directoryデータベースの内容を保有していることを確認した。Active Directoryでは特別な設定をしなくても、ドメインコントローラーをインストールすれば複製は開始される。しかし、ドメインコントローラーの複製の仕組みを正しく理解しておけば、より安心してActive Directoryを運用できるようになるだろう。
クラウドの登場により、Active Directoryに求められる役割も変化しつつあります。
クラウドに対応させるためのActive Directoryの設計ポイントとはどにあるのか? iOSやAndroidは、Active Directoryにどう絡むのか? Azure Active Directoryとは何者か? 生産性を高めるためのセキュリティを実現するには、どのようなインフラが必要か?
今こそ、Active Directoryの役割を再学習し、古い知識をリセットしましょう!
国井 傑(くにい すぐる)
株式会社ソフィアネットワーク取締役。1997年よりマイクロソフト認定トレーナーとして、Active DirectoryやActive Directoryフェデレーションサービス(ADFS)など、ID管理を中心としたトレーニングを提供している。2007年よりMicrosoft MVP for Directory Servicesを連続して受賞。なお、テストで作成するユーザーアカウントには必ずサッカー選手の名前が登場するほどのサッカー好き。
Copyright © ITmedia, Inc. All Rights Reserved.