مجازی سازی دامین کنترلر ها

مجازی سازی (Virtualization) دامین کنترلر ها (Domain Controllers – DC)، در سال های اخیر بیش از پیش مورد توجه قرار گرفته است. در ویندوز سرور ۲۰۱۲ پشتیبانی بهتری از مجازی سازی دامین کنترلر ها به عمل آمده است و قابلیت های جدیدی طراحی شده اند. این قابلیت های جدید باعث شده است تا پشتیبانی بهتری برای Public/Private Cloud و محیط های Hybrid صورت گیرد.

مجازی سازی بی خطر دامین کنترلر ها

Replication از یک عدد صعودی به نام USN با Update Sequence Number برای تعیین تراکنش های روی هر DC استفاده می کند. هر نمونه از Database های DC دارای یک ID به نام InvocationID است. بنابراین InvocationID برای هر DC و USN یک معرف یکتا برای هر تراکنش نوشتن (Write) روی هر دامین کنترلر خواهد بود. اگر یک دامین کنترلر بدون اطلاع سایر دامین کنترلر ها، به زمان عقب تری بازگردانده شود، از USN های تکراری برای ثبت انجام تراکنش ها استفاده می گردد که عملیات Replication همگرا نخواهد شد زیرا، سایر دامین کنترلر ها تصور می کنند که آن به روز رسانی را پیش تر دریافت کرده اند.

به عنوان مثال تصویر زیر، دنباله ای از وقایع را نشان می دهد که در آن دامین کنترلر مجازی VDC دچار failure می شود و به دلیل ریکاوری مسئله USN Rollback رخ می دهد. استفاده از زیرساخت Virtual Machine -VM سبب می شود مسئله USN Rollback موضوع قابل توجهی گردد زیرا ساده تر و متداول تر از پیش این مسئله حاصل می شود. در Windows Server 2012 یک مولفه به نام VM-Generation به منظور حفاظت از محیط Active Directory به کار گرفته شده است که در صورت Rollback شدن VM با استفاده از Snap-Shot عملیاتی حاصل گردد تا مشکل مطرح شد رخ ندهد. لازم به ذکر است که این ویژگی، مستقل از سیستم مجازی سازی است و در صورتی که سیستم مجازی سازی از VM-GenerationID پشتیبانی کند، از این قابلیت پشتیبانی به عمل می آید. (تصویر بیانگر عملیات برای نسخ قبل از Windows Server 2012)

1

Safeguards

در زمان نصب AD DS، سرویس به صورت خودکار مقدار VM-GenerationID را درمقدار ویژگی msDS-GenerationID شیئ Domain Controller در DIT قرار می دهد. VM-GenerationID به صورت مستقل توسط یک Windows Driver روی ماشین مجازی ردگیری می شود. زمانی که یک Snapshot توسط مدیر سیستم، Restore می شود، مقدار msDS-GenerationID با VM-GenerationID مقایسه می گردد. اگر دو مقدار یکسان نباشد، مقدار invocationID باز تنظیم خواهد شد و RID pool نیز Discard می شود، بنابراین از استفاده USN های تکراری جلوگیری می شود. اگر مقادیر یکسان باشد، تراکنش ها به صورت نرمال دنبال می شود. همچنین SYSVOL نیز به صورت non-authoritative نیز Replicate می گردد. هر زمانی که دامین کنترلر reboot می شود، مقادیر ذکر شده، با یکدیگر مقایسه می گردند. این ویژگی سبب می گردد تا مدیران Active Directory روی Windows Server 2012 از قابلیت های منحصر بفردی برخوردار باشند.

تصویر زیر، نشان می دهد که چگونه virtualization safeguards عمل می کند. (تصویر بیانگر عملیات برای نسخ Windows Server 2012 به بعد)

2

تذکر: علارقم وجود این ویژگی، مایکروسافت اکیدا توصیه می کند از این مکانیزم به عنوان نسخه پشتیبان استفاده نگردد و از Windows Server Backup و یا سایر راهکار های VSS-Writer جهت تهیه backup از Domain Controller ها استفاده گردد.

Virtual Domain Controller Cloning

در Windows Server 2012 مدیران می توانند به روش های آسان تری Replica Domain Controllers را deploy کنند و دیگر لازم نیست در یک زیرساخت مجازی، به صورت تکراری، sysperp.exe را اجرا و سپس عملیات Domain Controller Promotion را انجام دهند. اکنون به سادگی می توانند از عملیات کپی کردن دامین کنترلر ها استفاده کنند. در موارد زیر استفاده از Virtual Domain Controller Cloning می تواند مفید باشد:

۱) ایجاد سریع Additional Domain Controller

۲) بازگرداندن (Restore) سریع در زمان Disaster Recovery

۳) ایجاد سریع و به روز محیط آزمایشی

۴) بهینه سازی Deployment ها در Private Cloud

۵ افزایش سریع ظرفیت در شعبه ها به دلیل افزایش نیاز ها

فرآیند Cloning شامل ایجاد یک کپی از VHD مربوط Virtual Domain Controller موجود، Authorize کردن آن جهت Cloning و ساخت Clone Configuration File است. clone domain controller از معیار های زیر جهت تشخیص آنکه آن Clone یک کپی از یک دامین کنترلر دیگر است استفاده می کند:

وجود DCCloneConfig.xml

تناقض میان مقادیر دو ویژگی ذکر شده

در صورتی که یکی از دو شرط فوق برقرار بود، فرآیند Cloning می تواند آغاز گردد. Cmdlet های زیر در عملیات clone کردن مورد استفاده قرار می گیرند:

New-ADDCCloneConfigFile: این دستور، فایل DCCloneConfig.xml را ایجاد و در محل مناسب قرار می دهد و همچنین بررسی می کند که پیش شرط های عملیات clone کردن برای آن DC وجود داشته باشد. این cmdlet در ماژول Active Directory برای PowerShell موجود است. می توان cmdlet را به صورت local روی Virtual Domain Controller که قصد دارید آن را برای Clone کردن آماده کنید اجرا کنید و یا به صورت Remote از سوییچ –offline استفاده کنید. پیش شرط های مذکور عبارت اند از:

۱) DC برای عملیات Clone کردن authorize است (عضو گروه Clonable Domain Controllers است)

۲) PDC Emulator ویندوز سرور ۲۰۱۲ است.

۳) تمام برنامه ها و سرویس هایی که در Get-ADDCCloningExcludedApplicationList لیست شده اند روی لیست فایل CustomDCCloneAllowList.xml وجود دارند.

DCCloneConfig.xml:
برای انجام عملیات Clone لازم است این فایل در DIT (%windir%\NTDS) وجود داشته باشد. دو فایل نمونه DCCloneSchema و DCCloneConfig به صورت پیش فرض در محل های زیر موجود است. توصیه می شود برای ایجاد این فایل در cmdlet مربوطه استفاده کنید هر چند می توانید مشابه نمونه آن را به صورت دستی با استفاده از نرم افزار های XML-Editor مشابه XML Notepad استفاده کنید.

Get-ADDCCloningExcludedApplicationList: این Cmdlet پیش از عملیات clone روی Source Domain Controller لازم است اجرا گردد تا لیستی از برنامه ها و سرویس هایی که به صورت پیش فرض مورد پشتیبانی نیستند آماده گردد. (بر اساس فایل DefaultDCCloneAllowList.xml). همچنین لیست دلخواهی (CustomDCCloneAllowList.xml) از آن را کاربر می تواند ایجاد کند. توجه داشته باشید پیش از افزودن برنامه یا سرویسی به آن لیست، لایسنس مورد نیاز نرم افزار را در اختیار داشته باشید. این cmdlet به دنبال برنامه ها و سرویس هایی می گردد که در دو لیست بالا وجود ندارند. اگر نرم افزاری در خروجی این دستور وجود داشته باشد عملیات cloning موفقیت آمیز نخواهد بود لذا لازم است پیش از ادامه عملیات آن نرم افزار از روی Source Domain Controller حذف گردد تا بتوان Cloning Media را آماده کرد. با استفاده از سوییچ –GenerateXml می توانید لیست CustomDCCloneAllowList.XML را ایجاد کنید به طوری که این لیست حاوی خروجی دستور باشد و با –Path مسیر ذخیره سازی آن را معین کنید. همچنین با سوییچ –Force می توانید لیست CustomDCCloneAllowList.XML را Overwrite کنید. برای افزودن برنامه یا سرویسی به لیست CustomDCCloneAllowList.XML در نظر داشته باشید مطمئن شوید که آن شیئ از مولفه های یکتای کامپیوتر استفاده نمی کند ( همانند SID، Password و…) و همچنین در عملیات Clone اختلال ایجاد نمی کند.

توجه داشته باشید پروسه Cloning برای یافتن CustomDCCloneAllowList.xml به ترتیب اولویت زیر عمل می کند و اولین موردی را که یافت تنها استفاده می کند:

۱) registry key با نام AllowListFolder (REG_SZ) موجود در     HKey_Local_Machine\System\CurrentControlSet\Services\NTDS\Parameters

۲) DSA Working Directory

۳) %systemroot%\NTDS

۴) Removable read/write media به ترتیب حروف الفبا، تنها در root آن ها

Deploy کردن Clone Virtualized Domain Controller

توصیه می گردد جهت مجازی سازی دامین کنترلرها از راهکار مناسب Hyper-v استفاده کند.

پیش نیاز ها

۱) لازم است یک اکانت عضو گروه Domain Admins

۲) و یا مجوز دسترسی های متناسب باشید.

۳) لازم است Windows PowerShell با سطح دسترسی مناسب باز گردد. (Run As Administrator)

۴) برای افزایش availability توصیه می گردد از دو host مستقل برای Hyper-V استفاده گردد هر چند استفاده تنها از یک هاست کافی است.

۵) لازم است روی هر دو Host دارای دسترسی Local Administrator یا دسترسی های متناسب باشید.

۶) لازم است Virtual Network Switch ها روی هر دو Host دارای یک نام باشد.

۷) اگر دو Host دارای پردازنده های متمایزی هستند، Virtual Source Domain Controller را Shut Down نمایید. در قسمت Settings در بخش Processor گزینه Migrate to a physical computer with a different processor version را انتخاب کنید.

۸) لازم است PDC Emulator روی یک Windows Server 2012 باشد (مجازی یا فیزیکی) برای بررسی این مورد می توانید Cmdlet زیر را وارد کنید. اگر PDC Emulator روی Windows Server 2012 نیست، می توانید با عملیات انتقال (Transfer) و یا در صورت لزوم مصادره (Seize) آن را به یک Windows Server 2012 منتقل کنید.

Get-ADComputer (Get-ADDomainController –Discover –Service “PrimaryDC”).name –Property operatingsystemversion | fl

همچنین بدیهی است، به یک Virtualized Domain Controller با Windows Server 2012 به عنوان Source DC نیاز دارید که روی همان Domain باشد که PDC Emulator آن شرط ۷ را ارضا کرده است. تنها DC روی Windows Server 2012 می تواند به Source استفاده گردد. با استفاده از DCdiag می توانید صحت عملکرد DC را بررسی کنید.

۹) اگر VDF روی Source DC وجود دارد، Eject گردد.

۱۰) Safeguards ها، برای AD LDS موثر نیستند زیرا AD LDS از VM-Generation ID پشتیبانی نمی کند. (برای نسخ بعد از Windows Server 2012 این مسئله را بررسی کنید) بنابراین نباید در صورتی که DC دارای AD LDS است، عملیات را با افزودن AD LDS به CustomDCCloneAllowList.xml اجرا کرد. همچنین Server Role های DHCP و AD CS نیز از Cloning پشتیبانی نمی کنند.

گام یک: مجوز Clone شدن برای Source Domain Controller

برای این منظور، لازم است Source Domain Controller عضو گروه Cloneable Domain Controllers باشد. برای این کار می تواند از کنسول ADAC و یا دستور زیر در PowerShell استفاده کنید. اگر این گروه وجود ندارد PDC Emulator روی Windows Server 2012 نیست.

Add-ADGroupMember –Identity “CN=Cloneable Domain Controllers,CN=Users, DC=Fabrikam,DC=Com” –Member “CN=VirtualDC1,OU=Domain Controllers,DC=Fabrikam,DC=com

گام دوم: بررسی برنامه ها و سرویس ها

با توجه به توضیحات فوق، دستور Get-ADDCCloningExcludedApplicationList را روی Source Domain Controller اجرا کنید.

گام سوم: ایجاد فایل تنظیمات

با توجه به توضیحات فوق، دستور New-ADDCCloneConfigFile را اجرا کنید. توجه کنید که اگر مرحله قبل موفقیت آمیز نباشد، این دستور اجرا نخواهد شد. در اجرای این دستور، می توانید تنظیمات معینی را مشابه لیست برای Clone DC در نظر بگیرید:

New-ADDCCloneConfigFile –Static -IPv4Address “10.0.0.2” -IPv4DNSResolver “10.0.0.1” -IPv4SubnetMask “255.255.255.0” -CloneComputerName “VirtualDC2” -IPv4DefaultGateway “10.0.0.3” -SiteName “REDMOND

توجه داشته باشید که Clone DC در همان site مربوط به Source DC ایجاد می گردد مگر آنکه در اینجا و یا پس از ایجاد Clone DC آن را ویرایش کنید.

برای اجرای این دستور لازم است Global Catalog – GC در دسترس باشد و تنظیمات عضویت در Cloneable Domain Controller در آن به روز شده باشد.

گام چهارم: Export کردن و سپس Import کردن ماشین

ابتدا Source Domain Controller را Shut Down کنید و سپس Snapshot ها را در صورت وجود Delete کنید. اکنون DC را Export کنید و آن را در محل مطلوب ذخیره کنید. روی Host دیگر، DC را Import کنید و از گزینه Copy the virtual machine (create new unique ID) استفاده کنید. ابتدا Source DC و سپس Cloned DC را استارت کنید. توجه کنید که DC جدید عضو گروه Cloneable Domain Controllers خواهد بود. همچنین توجه کنید تنظیمات دیگر مشابه backup روی Source DC روی Cloned DC اعمال شده است، در صورت نیاز آن ها را بازبینی کنید.