SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Windows Server 8 Beta の仮想環境のクローニングによる AD 展開

leave a comment

Windows Server 8 Beta (Windows Server 2012) では仮想環境のクローニングによる AD の展開シナリオがサポートされています。

一通り動作を確認できたのでまとめてみたいと思います。

■仮想環境のクローニングによる AD 展開の前提条件


仮想環境のクローニングよる AD 展開ですが、Windows Server 8 の AD を使用していれば使用できるかというとそういうわけでもなく、いくつか前提条件があります。

  1. Windows Server 8 で PDC エミュレーターを実行している
  2. 仮想マシンの GenerationID に対応したハイパーバイザー (HyperV の役割を持つ Windows Server "8" Beta など) で仮想ドメイン コントローラーを実行する

この条件を満たしている必要があります。

最初の条件に関しては日本語のドキュメントが見つからなかったのですが、Active Directory Domain Services (AD DS) Virtualization に以下のように記載されています。

The PDC emulator must be running Windows Server “8” Beta.

クローニングで使用する AD 以外にも事前に Windows Server 8 Beta の AD を追加し、FSMO の PDC エミュレーターを移行しておく必要があります。
PDC エミュレーターを実行する AD に関しては物理 / 仮想のどちらでもよいようです。

The PDC emulator must be running Windows Server “8” Beta, but does not have to be running on a hypervisor.

PDC エミュレーターを仮想環境で実行する場合、次の前提条件となる実行するハイパーバイザーの制限は無いようです。

 

実行するハイパーバイザーの制限に関しては、Active Directory に関するテクニカル プレビュー に記載されています。

ドメイン コントローラーの仮想化がより安全に


AD DS の仮想化は数年前から行われてきました。しかし、ほとんどのハイパーバイザーに存在する機能によって、Active Directory のレプリケーション アルゴリズムの重要な前提条件が損なわれることがあります。そもそも、ドメイン コントローラーで相対的な収束レベルを判断する際に使用される論理クロックが逆戻りすることはありません。Windows Server "8" Beta では、ハイパーバイザーによって公開される一意の識別子が仮想ドメイン コントローラーによって使用されます。これは、仮想マシンの GenerationID と呼ばれています。仮想マシンの時間的ステータスに影響するイベントが発生するたびに、仮想マシンの GenerationID が変化します。仮想マシンの GenerationID は、仮想マシンの BIOS 内のアドレス空間で公開され、Windows Server "8" Beta 内のドライバーを介してオペレーティング システムやアプリケーションに公開されます。

Windows Server "8" Beta を実行している仮想ドメイン コントローラーは、ブート中およびトランザクション完了前に、仮想マシンの最新の GenerationID の値と、ディレクトリに保存しておいた値とを比較します。不一致は "ロールバック" イベントと解釈され、Windows Server "8" Beta で新たに導入された AD DS 保護機構が働きます。この保護機構が、仮想ドメイン コントローラーに他のドメイン コントローラーへの収束を可能にし、セキュリティ プリンシパルが二重に作成されるのを防ぎます。Windows Server "8" Beta の仮想ドメイン コントローラーでこの新しい保護機構を利用するには、仮想マシンの GenerationID に対応したハイパーバイザー (HyperV の役割を持つ Windows Server "8" Beta など) で仮想ドメイン コントローラーがホストされている必要があります。

Windows Server 8 Beta のクローニングによる AD 展開は [GenerationID] (VM 生成 ID) に対応したハイパーバイザーでの実行が必要になるようです。 
展開時に AD 上の [msds-GenerationID] と比較をしているようです。
この ID ですが、インポート時に新しい一意の ID 生成と関連があるようで、既存の ID を引き継いで使用すると以下の情報が出力され、クローニングによる展開ができないようです。
image

対応していないハイパーバイザー (今回は Hyper-V 2.0) でクローニングによる展開をしようとすると以下のエラーとなり実行することができません。
# イベントビューアーの [ディレクトリ サービス] に [イベント ID : 2175] が出力されます。
image

 

これらの前提を満たしている環境を使用することで Windows Server 8 Beta の仮想環境上に構築されている AD をクローニングして展開することができます。

 

■仮想環境のクローニングによる AD 展開


まずは、Windows Server 8 Beta を仮想環境上に AD として追加します。

今回は、

  • Hyper-v 2.0 上に構築した Windows Server 8 Beta の AD DS (すべての FSMO を保持) : WIN8-ADDS-01
  • Hyper-V 3.0 上に構築した Windows Server 8 Beta の AD DS (クローニングで使用する AD) : WIN8-VDC-01

を準備しいています。

クローニングによる AD の展開はクローニング対象を AD として構築した状態から始めます。
# 仮想化した AD をクローニングして展開する機能ですので。

手順に関しては Active Directory Domain Services (AD DS) Virtualization に記載されています。
基本手順に関しては以下の流れになるようです。

  1. [Cloneable Domain Controllers] グループのメンバーにクローニングで使用する AD DS を追加
  2. [DCCloneConfig.xml] を配置
  3. [CustomDCCloneAllowList.xml] を配置
  4. 仮想マシンをエクスポートしてインポート
  5. 複製を実行

それでは、それぞれの作業について見ていきたいと思います。

■[Cloneable Domain Controllers] グループのメンバーにクローニングで使用する AD DS を追加


Windows Server 8 Beta の AD DS では [Users] コンテナに [Cloneable Domain Controllers] というグループが追加されています。
image
このグループにクローニングの元になる AD DS のコンピューターアカウントを追加します。
image

 

■[DCCloneConfig.xml] を配置


クローニングの基本設定となる情報を記載した [DCCloneConfig.xml] を作成します。

[%windir%system32SampleDCCloneConfig.xml] にサンプルがありますのでこのファイルを使用すると良いかと思います。
今回は以下の内容のファイルを使用しています。

<?xml version="1.0"?>
<d3c:DCCloneConfig xmlns:d3c="uri:microsoft.com:schemas:DCCloneConfig">
    <ComputerName>WIN8-VDC-02</ComputerName>
    <SiteName>Default-First-Site-Name</SiteName>
    <IPSettings>
        <IPv4Settings>
            <StaticSettings>
                <Address>10.150.0.3</Address>
                <SubnetMask>255.0.0.0</SubnetMask>
                <DefaultGateway>10.255.255.254</DefaultGateway>
                <DNSResolver>10.150.0.1</DNSResolver>
                <PreferredWINSServer></PreferredWINSServer>
                <AlternateWINSServer></AlternateWINSServer>
            </StaticSettings>
        </IPv4Settings>
        <IPv6Settings>
            <StaticSettings>
                <DNSResolver></DNSResolver>
            </StaticSettings>
        </IPv6Settings>
    </IPSettings>
</d3c:DCCloneConfig>

ファイルが作成出来たら、DIT (directory information tree ) が格納されているフォルダに [DCCloneConfig.xml] としてファイルを保存します。
デフォルトでは [%windir%NTDS] が DIT を格納しているフォルダになります。
# ファイル名は[DCCloneConfig.xml] で固定となります。

 

■[CustomDCCloneAllowList.xml] を配置


[Windows PowerShell 用の Active Directory モジュール] で [Get-ADDCCloningExcludedApplicationList] を実行します。
image

このコマンドを実行して出力結果があった場合は [CustomDCCloneAllowList.xml] を作成する必要があります。
既定のリストに関しては [%windir%system32DefaultDCCloneAllowList.XML] に設定されているのですが、ここで足りていないものに関しては、[CustomDCCloneAllowList.xml] を作成する必要があるようです。

今回は以下のファイルを作成しています。

<?xml version="1.0"?>
<AllowList>
  <Allow>
    <Name>PrintNotify</Name>
    <Type>Service</Type>
  </Allow>
</AllowList>

作成したファイルは [%windir%NTDS] (DIT)  に [CustomDCCloneAllowList.xml] として保存します。
ファイルを配置した後に、[Get-ADDCCloningExcludedApplicationList] を再度実行すると出力結果がなくなっていると思います。

ここまでの作業が完了したら、クローニングする仮想マシンをシャットダウンします。

 

■仮想マシンをエクスポートしてインポート


クローニングの準備が終わりましたので仮想マシンをインポートしてクローニングを行います。

エクスポートと書いていますが、Hyper-V 3.0 では明示的にエクスポートをせずに仮想マシンのインポートができるようになっていますので、フォルダのコピーで仮想マシンをエクスポートすることができるようになっています。
# Hyper-V 2.0 まではエクスポート機能によってエクスポートした仮想マシンのみインポートが可能だったかと。

エクスポート機能またはフォルダのコピーが終わったら、[新しい一意な ID を作成する] を使用して、仮想マシンのインポートを行います。
# [仮想マシンをコピーする] とあるように元のファイル (VHD) は残したままコピーで VHD をコピーして新規の仮想マシンを作成する形になりますのでインポートをするためにはエクスポートした VHD のコピーを保存できるディスクサイズが必要となります。
imageimageimageimage

インポート後は元になった仮想マシンと同じ名前になっているので変更をしておきます。
image

以上でクローニングは終了です。

 

■クローニング後の起動


クローニングが終わったらインポートをした仮想マシンを起動します。

起動中に [ドメイン コントローラーの複製が xx % 完了しました…。] が表示され、進捗が進んだらクローニングによる AD 展開が正常に行われています。
image

複製が完了すると再起動されます。

[ドメイン コントローラーの複製が 0 % 完了しました…。] でメッセージが終わり、再起動してしまった場合は構成が正しくない可能性があります。
# [Get-ADDCCloningExcludedApplicationList] の出力結果がある状態で [CustomDCCloneAllowList.xml] を設定しないでいたらこの現象になりました。
複製が正常に行われない場合

  • イベントビューアーのディレクトリ サービス
  • [%windir%debug] の dcpromo.log

のログを確認するとエラーの原因を識別できると思います。

また、複製が正常に行われなかった場合は再起動後のブートは [Active Directory 修復のセーフモード] で行われていますので [msconfig] を起動して、ブートオプションからセーフモードを解除する必要があります。
image

また、複製処理が成功 / 失敗に関わらず一度でも実行されると [DCCloneConfig.xml] がリネームされていますので、再実行したい場合にはファイル名を戻す必要があります。

成功すると構成ファイルに指定した情報を元にドメインコントローラーが新規に追加された状態となります。
image

[Cloneable Domain Controllers] にも自動的に追加されるようですね。
# さらに複製ということを考えての追加だと思いますが。
image

Windows Server 8 Beta (Windows Server 2012) のドメイン環境を整えるところから始める必要があるので、既存の AD ですぐに使用できるという機能ではありませんが、環境が整った場合は AD の追加をする際にクローニングによる展開をすると工数を抑えることができるかもしれないですね。

Written by masayuki.ozawa

5月 6th, 2012 at 5:18 pm

Leave a Reply

*