Текст:
Репликация виртуальных машин это одна из самых удачных и востребованных возможностей HyperV. Сервера из удаленного датацентра могут поддерживать актуальные копии ВМ хоть на домашнем компьютере. Скорость канала и наличие сетевых экранов практически не имеет значения. Кроме простого реплицирования изменений, имеется возможность настроить также хранение заданного количества снимков для реплицируемой ВМ. Благодаря этому можно организовать отказоустойчивую систему с географически распределенным резервированием данных.
И все это бесплатно.
Так как мы говорим о бесплатной версии HyperV то обходиться нам прийдется только средствами командной строки и Powershell.
В Server 2008 настройка репликации была сравнительно простым делом. Но в Server 2012 Микрософт подложила пару подводных камней.
Это обязательное наличие DNS суффикса (например adminland.ru) и проверка CRL для самоподписанных сертификатов.
Итак начнем.
Пусть имеется основной сервер NODEA, расположенный в удаленном датацентре и домашний сервер-реплика NODEB.
Предполагается что оба сервера имеют маршрутизируемые в Интернет IP адреса и открытый на firewall порт 443. Также обеспечено разрешение имен nodea.adminland.ru и nodeb.adminland.ru,
Чтобы не возникло путаницы, в квадратных скобках перед командой буду указывать компьютер на котором она должна быть выполнена.
1. Добавим DNS суффикс и установим его основным:
[NODEA] netdom computername nodea /Add:nodea.adminland.ru
[NODEA] netdom computername nodea /MakePrimary:nodea.adminland.ru
[NODEB] netdom computername nodeb /Add:nodeb.adminland.ru
[NODEB] netdom computername nodeb /MakePrimary:nodeb.adminland.ru
Теперь нам понадобяться сертификаты, их можно купить, а можно сделать свои самоподписанные. Так как все у нас микрософтовское - будем использовать утилиту makecert.exe из Microsoft SDK. Если у вас до сих пор его нет - будет повод скачать.
2. Создаем корневые сертификаты на обоих серверах и сохраняем их на диск:
[NODEA] makecert -pe -n "CN=RCA" -ss Root -sr LocalMachine -sky signature -r c:\temp\RCA.cer
[NODEB] makecert -pe -n "CN=RCB" -ss Root -sr LocalMachine -sky signature -r c:\temp\RCB.cer
В результате сертификаты появятся в хранилище сертификатов LocalMachine\Root и сохранятся на диск в виде файлов. Сертификат RCA.cer необходимо перенести на сервер NODEB, а RCB.cer на NODEA.
3. На основе корневых сертификатов генерируем сертификаты используемые для репликации:
[NODEA] makecert -pe -n "CN=nodea.adminland.ru" -ss My -sr LocalMachine -sky exchange -eku 1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2 -in RCA -is Root -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
[NODEB] makecert -pe -n "CN=nodeb.adminland.ru" -ss My -sr LocalMachine -sky exchange -eku 1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2 -in RCB -is Root -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
В данном случае сертификаты появятся в хранилище LocalMachine\My. В файловом виде их можно не сохранять, так как нет необходимости переносить их между серверами.
4. Установим корневые сертификаты в хранилище LocalMachine\Root, RCA.cer на NODEB, RCB.cer на NODEA:
[NODEA] certutil -addstore -f Root c:\temp\RCB.cer
[NODEB] certutil -addstore -f Root c:\temp\RCA.cer
Теперь оба сервера будут доверять сертификатам подписанным RCA и RCB.
5. Отключаем второй подводный камень - обязательную проверку CRL для самоподписанных сертификатов:
[NODEA] reg add “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication” /v DisableCertRevocationCheck /d 1 /t REG_DWORD /f
[NODEB] reg add “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication” /v DisableCertRevocationCheck /d 1 /t REG_DWORD /f
Подготовительные работы закончены.
6. Настраиваем репликацию на сервере-реплике с помощью powershell:
[NODEB] Set-VMReplicationServer -ReplicationEnabled $true -AllowedAuthenticationType Certificate -CertificateThumbprint "328a8c5a386bcddee629d9d5b156d23d94294a6e" -CertificateAuthenticationPort 443 -AllowAnyServer $false
Все понятно без объяснений, кроме CertificateThumbprint. Нужно указать серверу какой именно из сертификатов в хранилище будет использоваться для репликации. На шаге 3 был сгенерирован и помещен в хранилище LocalMachine\My сертификат nodeb.adminland.ru. Просмотреть хранилище сертификатов можно при помощи powershell:
[NODEB] cd cert:
[NODEB] cd LocalMachine\My
[NODEB] dir
7. Добавляем NODEA в список серверов с которых разрешена репликация:
[NODEB] New-VMReplicationAuthorizationEntry -AllowedPrimaryServer nodea.adminland.ru -ReplicaStorageLocation d:\ -TrustGroup nodea.adminland.ru
Все реплицируемые ВМ будут сохраняться на диск D:\ структуру подкаталогов HyperV создаст сам.
8. На основном сервере настраиваем репликацию для ВМ VMA1:
[NODEA] Enable-VMReplication -VMName VMA1 -ReplicaServerName nodeb.adminland.ru -ReplicaServerPort 443 -AuthenticationType Certificate -CertificateThumbprint "e7b84f1ecfcb316ea7c21eda13ae38adaf9f84fa" -CompressionEnabled $true
Как находить CertificateThumbprint мы уже знаем из шага 6.
Если у нас несколько ВМ - повторяем процедуру для каждой.
9. Стартуем репликацию на основном сервере:
[NODEA] Start-VMInitialReplication -VMName VMA1
Комментарии
Опечатки:
Опубликовано пользователем Andrey (не проверено)
Опечатки:
Пункт 3:
[NODEB] makecert -pe -n "CN=nodea.adminland.ru" - вероятно nodeb.adminland.ru
Пункт 6:
[NODEB] cd LocalMacine\My - не хватает буквы h, правильно LocalMachine
исправлено
Опубликовано пользователем manager
исправлено
Статейка зачотная! Спасибо
Опубликовано пользователем pigorevich (не проверено)
Статейка зачотная! Спасибо большое, очень пригодилось!
А если есть желание пустить
Опубликовано пользователем Денис (не проверено)
А если есть желание пустить репликацию по другому (дополнительному) сетевому интерфейсу? Как тогда быть?
Спасибо за статью
Опубликовано пользователем Wizard (не проверено)
Спасибо за статью
netdom computername nodea /Add:nodea.adminland.ru -в HVS 2019 надо удалить двоеточие, иначе выдает ошибку.
Без двоеточия - netdom computername nodea /Add nodea.adminland.ru
Добавить комментарий.