Одной из стратегических целей, которую преследует Microsoft в своих последних продуктах – виртуализация всего, что только возможно, что является естественным требованиям для тотальной миграции в облака. Специально для этого, в новых версиях Hyper-V и Active Directory, которые выходят в составе новой серверной ОС Windows Server 2012, был введен ряд существенных улучшений и дополнений. Например, Microsoft сообщает о том, что теперь в виртуальной машине Hyper-V можно запускать даже высоконагруженные сервера SQL. Кроме того Microsoft наконец-то реализовало возможность создавать полноценные виртуальные контроллеры домена.
Если вы помните, в Windows Server 2008 R2 существовали следующие проблемы с виртуализацией контроллеров домена Active Directory:
- Нельзя создавать снапшот виртуального контроллера домена (если быть боле точным снапшот создать можно, но смысла это не имеет)
- Виртуальный DC нельзя клонировать
- Невозможна онлайн миграция V2V контроллера также
- Восстановление виртуального DC средствами гипервизора невозможно
- Для работы кластера Windows Server 2008 R2 требуется физический контроллер домена
Большинство из этих проблем связано с работой механизма USN (update sequence numbers). Вкратце напомним, в чем же была загвоздка. Для отслеживания обновлений между партнерами по репликации в лесу Active Directory используются идентификаторы USN. С помощью USN и ID вызова любой контроллер домена однозначно определяет, когда нужно принять и применить изменения в AD от партнеров по репликации, а когда переслать свои изменения. С помощью этого механизма обеспечивается непротиворечивость и актуальность базы AD.
В том случае если создать снапшот виртуального контроллера домена, а потом восстановить сервер из него, то мы получим контроллер домена с устаревшим USN. В результате, изменения на таком контроллере не реплицируются на другие сервера в лесу, т.к. партнеры по репликации считают, что их копия базы Active Directory актуальна. В итого это может привести к проблемам несоответствия паролей, противоречивым значениям атрибутов и т.д.
В Windows Server 2012 контролеры домена теперь можно виртуализовать и работать с ними точно также, как с любой другой виртуальной машиной (можно делать снапшоты, клонировать DC и т.д.).
Данный функционал основывается на новой функции в Windows Server 2012 под названием VM-GenerationID. На данный момент эта функция поддерживается только в гипервизоре Hyper-V, но Microsoft рекомендует и другим производителям платформ виртуализации интегрировать данную функцию (в частности VMware уже заявила о поддержке технологии в следующей версии VSphere).
VM-Generation ID является функцией гипервизора и генерируется им при клонировании и или создании снапшота контроллера домена. VM-Generation ID представляет собой уникальный 128 битный идентификатор, который доступен приложениям через драйвер Windows Server 2012. Контроллер домена хранит значение VM-Generation ID в нереплицируемом атрибуте базы Active Directory. И перед применением изменений в базу Active Directory, контроллер домена сравнивает значение VM-Generation ID в своей базе AD со значением, полученным от гипервизора через драйвер Windows Server 2012. Если значения отличаются, осуществляется сброс параметров invocation ID и аннулирование RID. Таким образом контроллер домена определяет, что применен снапшот или контроллер домена клонирован, и актуализирует свою базу в соответствии с другими контроллерами домена AD.
Как клонировать виртуальный контроллер домена
Подготовка к клонированию DC
- Требуется сервер Windows Server 2012 с ролью Hyper-V (вероятно, в будущем и другие гипервизоры будут поддерживать VM-GenerationID)
- Установленный контроллер домена на Windows Server 2012 (физический или виртуальный) с ролью PDC. Найти сервер с ролью PDC можно с помощью команды:
Get-ADComputer (Get-ADDomainController –Discover –Service “PrimaryDC”).name –Property operatingsystemversion | fl
- Виртуальный контроллер домена с ОС Windows Server 2012 (не PDC), развернутый на сервере Windows Server 2012 Hyper-V server. Это тот самый контроллер домена.. который мы будем клонировать (пусть он будет называться VirtualDC1).
Чтобы контроллер домена можно было клонировать, его нужно добавить в группу Cloneable Domain Controllers. Сделать это можно с помощью консоли Active Directory Users and Computers, панели управления Active Directory Administrative Center или же команды PowerShell.
Команда PowerShell будет выглядеть так:
Add-ADGroupMember –Identity “CN=Cloneable Domain Controllers,CN=Users, DC=winitpro,DC=ru” –Member “CN=VirtualDC1,OU=Domain Controllers,DC=winitpro,DC=ru”
На исходном контролере домена (VirtualDC1) запустим команду New-ADDCCloneConfigFile , с помощью которой настраиваются IP адрес и имя нового виртуального контролера домена (клона). Пусть это будет VirtualDC2.
New-ADDCCloneConfigFile –Static -IPv4Address “10.2.2.2” -IPv4DNSResolver “10.2.2.1” -IPv4SubnetMask “255.255.0.0” -CloneComputerName “VirtualDC2” -IPv4DefaultGateway “10.2.0.1” -SiteName “Default-First-Site-Name”
Примечание: в данном случае новый контроллер домена будет находится в этом же сайте. Более подробно о других параметрах клонирования можно прочитать на TechNet-е ).
После этого из графического GUI Hyper-V Manager запускаем импорт виртуальной машины, выбрав в качестве параметра опцию Copy the virtual machine (create a new unique ID).
После окончания импорта переименуем виртуальную машину в VirtualDC2 и запустим ее. После ее загрузка запуститься процедура клонирования и через несколько мгновений в вашей сети появится новый виртуальный контроллер домена.