• Like
仮想化した DC を PowerShell で複製する
Upcoming SlideShare
Loading in...5
×

仮想化した DC を PowerShell で複製する

  • 1,760 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,760
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
72
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ドメインコントローラーの仮想化 1
  • 2. DC 仮想化のメリット • スケーラビリティ • 物理 PC がなくても展開可能 • サーバーのロールバック(スナップショット) • 自動展開のしやすさ • パブリックウラウドへの移行 • 仮想 DC を IaaS に展開 2
  • 3. 仮想 DC の展開 • サーバーマネージャーを使用して • Windows PowerShell を使用して • VHDファイルを所定の手続きでクローン いずれの処理もリモートから行える 3
  • 4. DCクローンの動作イメージ ①クローン先情 報を埋め込む DC01 ②エクスポート VHD ③インポート DC02 Hyper-V Hyper-V 4
  • 5. 仮想 DC のクローン手順1. ソース DC で FSMO が起動していないことを確認。起動してい る場合には他の DC に移動。2. ソース DC をクローン可能な DC として認可する3. 非互換アプリを調査し CustomDCCloneAllowList.xml を生成4. 複製先情報を記載した DcCloneConfig.xml ファイルを作成5. ソース DC をシャットダウン6. ソース DC を Export7. ソースを起動8. Exportしたイメージを新しい仮想マシンとして Import9. 複製先マシンを起動( DC 間複製が開始される) 5
  • 6. $SourceDC = "ITCAMP-DC02" $DistDC = "ITCAMP-DC03" DCクローンを自動化するスクリプト例 $distPDCEmu = "ITCAMP-DC01" $SourceHyperVHost = "ITCAMP-FS" DC01 DC02 複製 DC03 $DistHyperVHost = "ITCAMP-FS" ここから $VMStore = "¥¥$DistHyperVHost¥VMStore" コマンドを実行 ITCAMP-FSstep1 $ConfirmPreference = "none" Move-ADDirectoryServerOperationMasterRole -Identity $distPDCEmu -OperationMasterRole PDCEmulatorstep2 Get-ADComputer $SourceDC | %{Add-ADGroupMember -Identity "Cloneable Domain Controllers" -Members $_.samAccountName}step3 Invoke-Command -ComputerName $SourceDC -ScriptBlock { Get-ADDCCloningExcludedApplicationList -GenerateXml -Force } Invoke-Command -ComputerName $SourceDC -ScriptBlock { ` New-ADDCCloneConfigFile -Static -IPv4Address "192.168.210.52" ` -IPv4DNSResolver "192.168.210.50" ` -IPv4SubnetMask "255.255.255.0" `step4 -IPv4DefaultGateway "192.168.210.254" ` -CloneComputerName "$Args" ` -SiteName "Default-First-Site-Name" } ` -ArgumentList $DistDCstep5 Stop-VM -ComputerName $SourceHyperVHost -Name $SourceDCstep6 Get-VM -ComputerName $SourceHyperVHost -Name $SourceDC | %{ Export-VM $_ -Path $VMStore}step7 Start-VM -ComputerName $SourceHyperVHost -Name $SourceDC $CFG = (Dir "$VMStore¥$SourceDC¥Virtual Machines¥*.xml").FullNamestep8 MD ¥¥$DistHyperVHost¥F$¥$DistDC Import-VM -ComputerName $DistHyperVHost -Path $CFG -GenerateNewId -Copy-VhdDestinationPath F:¥$DistDC Get-VM -ComputerName $DistHyperVHost -Name $SourceDC |Where-Object {$_.State -EQ "Off"} | Rename-VM -NewName $DistDCstep9 Start-VM -ComputerName $DistHyperVHost -Name $DistDC 6
  • 7. Step 1: ソースDCでPDCエミュレーターが動作していないことを確認PDCエミュレーターがインストールされているDCはクローンできない$ConfirmPreference = "none"Move-ADDirectoryServerOperationMasterRole -Identity $distPDCEmu `-OperationMasterRole PDCEmulator 7
  • 8. Step 2: ソースDCをクローン可能なDCに設定するGet-ADComputer $SourceDC | %{Add-ADGroupMember `-Identity "Cloneable Domain Controllers" -Members $_.samAccountName} 複製元となるドメインコン トローラーを Cloneable Domain Controllers のメ ンバーにする 8
  • 9. Step3.非互換アプリを調査し CustomDCCloneAllowList.xml を生成 Invoke-Command -ComputerName $SourceDC -ScriptBlock { Get- ADDCCloningExcludedApplicationList -GenerateXml -Force } コマンドレットを実行することで、 C:¥Windows¥NTDS¥CustomDCCloneAllowList.xml ファイルが作成される <AllowList> </Allow> <Allow> <Allow> <Name>Active Directory Management Pack Helper <Name>HealthService</Name> Object</Name> <Type>Service</Type> <Type>Program</Type> </Allow> </Allow> <Allow> <Allow> <Name>QWAVE</Name> <Name>System Center Operations Manager 2012 <Type>Service</Type> Agent</Name> </Allow> <Type>Program</Type> <Allow> </Allow> <Name>System Center Management APM</Name> <Allow> <Type>Service</Type> <Name>Microsoft Silverlight</Name> </Allow> <Type>WoW64Program</Type> <Allow> </Allow> <Name>wlidsvc</Name> <Allow> <Type>Service</Type> <Name>AdtAgent</Name> </Allow> <Type>Service</Type> </AllowList> 9
  • 10. Step4.複製先情報を記載した DcCloneConfig.xml ファイルを作成Invoke-Command -ComputerName $SourceDC -ScriptBlock { ` New-ADDCCloneConfigFile -Static -IPv4Address "192.168.210.52" ` -IPv4DNSResolver "192.168.210.50" ` -IPv4SubnetMask "255.255.255.0" ` -IPv4DefaultGateway "192.168.210.254" ` -CloneComputerName "$Args" ` -SiteName "Default-First-Site-Name" } ` -ArgumentList $DistDCすでに作成されていると上書きでいないので注意 10
  • 11. DcCloneConfig.xml の例<?xml version="1.0"?> <DNSResolver></DNSResolver><d3c:DCCloneConfig <DNSResolver></DNSResolver>xmlns:d3c="uri:microsoft.com:schemas:DCCloneConfig"> <DNSResolver></DNSResolver> <ComputerName>ITCAMP-DC03</ComputerName> </StaticSettings> <SiteName>Default-First-Site-Name</SiteName> </IPv6Settings> <IPSettings> </IPSettings> <IPv4Settings> </d3c:DCCloneConfig <StaticSettings> <Address>192.168.210.52</Address> <SubnetMask>255.255.255.0</SubnetMask> <DefaultGateway></DefaultGateway> <DNSResolver>192.168.210.50</DNSResolver> <DNSResolver>192.168.210.51</DNSResolver> <DNSResolver></DNSResolver> <DNSResolver></DNSResolver> <PreferredWINSServer></PreferredWINSServer> <AlternateWINSServer></AlternateWINSServer> </StaticSettings> </IPv4Settings> <IPv6Settings> <StaticSettings> <DNSResolver></DNSResolver> 11
  • 12. Step 5:ソース DC をシャットダウン Stop-VM -ComputerName $SourceHyperVHost -Name $SourceDC 12
  • 13. Step 6:ソース DC を Export Get-VM -ComputerName $SourceHyperVHost ` -Name $SourceDC | %{ Export-VM $_ -Path $VMStore} 13
  • 14. Step7. ソースDCを起動Start-VM -ComputerName $SourceHyperVHost -Name $SourceDC 複製先のDCは複製元DCと複製を開始するので、事前に起動しておく必要がある。 14
  • 15. Step 8: Exportしたイメージを新しい仮想マシンとして Import $CFG = (Dir "$VMStore¥$SourceDC¥Virtual Machines¥*.xml").FullName MD ¥¥$DistHyperVHost¥F$¥$DistDC Import-VM -ComputerName $DistHyperVHost ` -Path $CFG -GenerateNewId -Copy -VhdDestinationPath F:¥$DistDC 重要!!インプレースインポート はできない! 15
  • 16. Step9.複製先マシンを起動 16
  • 17. 仮想 DC 展開の留意点 • 単一障害点にならないこと  少なくとも2台のHyper-V サーバーに1台づつ展開 V-DC V-DC V-DC V-DC Hyper-V Hyper-V Hyper-V  1つのハードウェアの障害が複数のDCに影響を与えないようにすること  できるだけ物理的に異なるリージョンに配置すること  可能であれば、少なくとも1台は物理 DC を構築しておくこと 17
  • 18. • セキュリティ上の考慮点 • できるだけ DC のみの単一機能のサーバーとし、ホスト、ゲストともに Server Core を採用すること V-DC (Server Core) Hyper-V (Server Core) • 必要に応じて RODC を検討すること • VHDファイルの安全性に考慮すること • VHDファイルが含まれるドライブごと暗号化することをお勧め 18
  • 19. 19
  • 20. 20
  • 21. 21
  • 22. 22
  • 23. • セキュリティ上の考慮点(つづき) • ホストコンピューターは死守すること • 可能であればホストコンピューターは管理用ネットワークのみと通 信を行うように設定されていること • ホストコンピューターはゲストであるDCのドメインに所属させない Sysvol 共有に 1 V-DC V-DC 3 アタック Hyper-V (domain member) DC からスタート アップスクリプトを 送り込む 2 23
  • 24. • パフォーマンスの考慮点 • Windows Server 2008 の場合約10%の性能減 Measurement Test Physical Virtual Delta Searches/sec Search for common name in base scope (L1) 11508 10276 -10.71% Searches/sec Search for a set of attributes in base scope (L2) 10123 9005 -11.04% Searches/sec Search for all attributes in base scope (L3) 1284 1242 -3.27% Searches/sec Search for common name in subtree scope (L6) 8613 7904 -8.23% Successful binds/sec Perform fast binds (B1) 1438 1374 -4.45% Successful binds/sec Perform simple binds (B2) 611 550 -9.98% Successful binds/sec Use NTLM to perform binds (B5) 1068 1056 -1.12% Writes/sec Write multiple attributes (W2) 6467 5885 -9.00% Adtest.exe 使用 http://www.microsoft.com/en-us/download/details.aspx?id=15275 24
  • 25. • 展開に関する考慮点 • 差分ディスクは使わないこと 固定 実使用 指定領域に達す 可変 未使用領域 領域 るまで自動拡張 差 差 差 差分 元の領域 分 分 分 25
  • 26. • 展開に関する考慮点(続き) • VHDファイルを”単純複製”しないこと • SID の重複 (..かといって ドメインコントローラーでの Sysprep は未サポート) • USN(Update Sequence Number)ロールバック問題 • 起動しているドメインコントローラーを Export しないこと 詳細:http://technet.microsoft.com/en-us/library/ virtual_active_directory_domain_controller_virtualization_hyperv(v=ws.10).aspx 26
  • 27. 重要な 4 つの ID• USN(Update Sequence Number) • オブジェクトが追加、変更、削除されるたびに+1 • ドメインコントローラー個々に管理されている• RID (Relative Identifier) • DC 内オブジェクトの通番. • SID の構成要素 • RID Master の RID Pool によって集中管理されている• Invocation(発動,召喚) ID • DIT のバージョン管理に使用される • Get-ADDomainController で参照可能• GUID(Globally Unique IDentifier) • サーバー内オブジェクトのID • 恒久的 27
  • 28. USN とは• Update Sequence Number• オブジェクトを変更、作成、するごとに +1• ドメインコントローラーごとに管理されている• ドメインコントローラー間でどこまで複製が完了したかを確認するための番号• ドメインコントローラーに変更が加えられるたびに加算される My USN=200 複製 My USN=100 USN_DC2 = 100 USN_DC1 = 200 High Watermark DIT DC1からは DIT DC1 USN=200まで DC2 複製完了したと いうこと 28
  • 29. 複製の基本動作:High Watermark をベースにした差分複製 HWM My USN=200 複製リクエスト USN_DC1 = 200 複製無し DIT DIT DC1 DC2 ユーザー 追加 50人 My USN=250 複製リクエスト USN_DC1 = 200 USN=201~250 250 DIT DIT DC1 DC2 29
  • 30. USN ロールバック問題 My USN=250 USN_DC1 = 250 DIT DIT DC1 DC2 なんらかの原因でロールバック My USN=200 複製リクエスト USN_DC1 = 250 複製無し DIT DIT DC1 DC2 30
  • 31. ユーザー 追加 50人 My USN=250 複製リクエスト USN_DC1 = 250 複製無し DIT DIT DC1 DC2ユーザー 追加 10人 My USN=260 複製リクエスト USN_DC1 = 250 USN=251~260 260 DIT DIT DC1 DC2 31
  • 32. USN ロールバックの検知• 「USN がロールバック」だけが発生すると、複製は停止する • Windows Server Backup から古い DIT をリストアした場合 • 古い VHD ファイルをリストアした場合 • 古い Export ファイルをインポートした場合 Event ID 2103:Active Directory データベースがサポートされていな い方法で復元されました。Active Directory はこの状態が継続している間、 ユーザーのログオンを処理できません。 32
  • 33. Invocation ID • Invocation ID:ディレクトリデータベース(NTDS.DIT)のID • DITのバージョン識別子として扱われる DIT Invocation ID 33
  • 34. USN ロールバック問題を回避するにはInvocation ID をリセット(変更)する必要がある DC1 が把握している DC1 DC2 が把握している (自分自身)の状態 DC1 の状態 USN = 1000 DC1(A)@USN1000 InvocationID = A USNロールバック USN = 500 DC1(A)@USN1000 頭から複製 InvocationID = B DC1(B)@USN500 DIT変更(USN変更) USN = 600 DC1(A)@USN1000 差分複製 InvocationID = B DC1(B)@USN600 34
  • 35. 旧バージョンでのスナップショットによるUSNロールバック スナップショットをリストアした場合にはロールバックが検知されない Create Snapshot • +100 users rollback USN added はDC2に反映されない→50ユーザーが複製されてしまう TIME: T2 • All others are either on one or the other DC USN: 200 • 100 ユーザー(RID =600- 1000 ID: A RID Pool: 500 - 599)は SID 競合 USNs >100 DC2 receives updates: T1 Snapshot USN: 100 Applied! +150 more users created TIME: T4 DC2 receives updates: USNs >200 35
  • 36. Windows Server 2012 では Hyper-V ホストで VM-Generation ID を管理している • ユニークな 128 ビットの ID • 専用ドライバーによりゲストOSに通知できるようになっている WS 2012 仮想 DC は VM-Generation ID をトラックする • Active Directory database (DIT) に保存 • DIT への変更をコミットする前に、 • “DIT 内部の VM-Generation ID” と “ホストが認識している VM-Generation ID” を比較 • 異なれば DC の invocation ID と RID pool をリセットしてから、コミット 同じ操作を、起動時に実行する 36
  • 37. 仮想 Domain Controller DIT Invocation ID VM-Gen ID 比 較 VM-Gen ID Hyper-V ホスト 37
  • 38. Windows Server 2012 ではこうなっている DC2 DC1 Timeline of events Create USN: 100 TIME: T1 Snapshot ID: A savedVMGID: G1 VMGID: G1 +100 users added TIME: T2 USN: 200 ID: A savedVMGID: G1 VMGID: G1 DC1(A)@USN = 200 DC2 receives updates: USNs >100 T1 Snapshot USN: 100 TIME: T3 Applied! ID: A savedVMGID: G1 VMGID: G2 … missing users replicate DC2 again accepts updates: USNs >100 +150 users created: VM generation ID の差異が発生 back to DC1 USN: 101-250 TIME: T4 ID: B savedVMGID: G2 VMGID: G2 DC1(A)@USN = 200 DC1(B)@USN = 250 USN re-use avoided and USN rollback PREVENTED : all 250 users converge correctly across both DCs 38
  • 39. 結局のところ... 以下の用途には使えないので注意 「作成したユーザーを削除したい」 「変更したユーザーの属性を元に戻したい」 • Authoritative Restore を使用しましょう • または Forefront Identity Manager を使用し、メタデータで管 理しましょう 消してしまったユーザーを復元するには「ゴミ箱」を使いましょう 39