HyperV 3: репликация без домена

Текст: 

Репликация виртуальных машин это одна из самых удачных и востребованных возможностей 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

Комментарии

Опечатки:

Опечатки:
Пункт 3:
[NODEB] makecert -pe -n "CN=nodea.adminland.ru" - вероятно nodeb.adminland.ru

Пункт 6:
[NODEB] cd LocalMacine\My - не хватает буквы h, правильно LocalMachine

Спасибо за статью

Спасибо за статью
netdom computername nodea /Add:nodea.adminland.ru -в HVS 2019 надо удалить двоеточие, иначе выдает ошибку.
Без двоеточия - netdom computername nodea /Add nodea.adminland.ru

Добавить комментарий.

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.