Рассмотрим процесс настройки репликации между серверами на базе Windows Server 2019 без доменной среды.
Имеется вот такая схема работы серверов.
Задача настроить реплицию между Server1 и Server2. Таким образом VM_1, VM_2 у нас будет на Server2, а VM_3 на Server1.
Надеюсь, всё понятно… ? В общем, чтобы было вот так.
Будем производить настройку репликации с помощи само подписанных сертификатов через PowerShell.
Содержание
Требования
Есть вещи на которые стоит обратить внимание при настройке репликации.
- Нужная стабильная и широкая сетевая полоса, если виртуальные машины «толстые», то первоначальная версия будет передаваться долго и повесит весь сервер и сеть;
- Место на сервере-реплике должно быть не меньше, чем на исходном;
- У виртуальной машины, которую мы реплицируем не должно быть контрольных точек;
Настраиваем репликацию
Добавляем DNS-суффиксы
Открываем Панель управления системой. Переходим Изменить параметры/Изменить/Дополнительно/ и добавляем DNS-суффикс.
В моём примере будет «adel.local».
После чего перезагружаем сервер.
Аналогично делаем на сервере репликации.
Отключаем проверку на отзыв сертификата
Нам необходимо через реестр отключить проверку на отзыв сертификата. На обоих серверах.
Иначе высыпается ошибка о невозможности проверить сертификат на отзыв.
Открываем командную строчку от имени администратора и прописываем:
1 |
reg add “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication” /v DisableCertRevocationCheck /d 1 /t REG_DWORD /f |
Изменяем файл hosts
Теперь нам необходимо изменить файл хостов чтобы Server1 и Server2 всегда видели друг друга по имени. Этот шаг опционален. Я его применяю для того, чтобы никакие проблемы связанные с DNS внутри нашей сети не помешала нашей репликации. Типа такой:
Поэтому открываем блокнот от имени администратора и переходим по пути C:\windows\system32\drivers\etc\hosts, добавляем две записи: ip-адрес исходного сервера и его имя с dns-суффиксом и ip-адрес сервера репликации с его имением и суффиксом.
Аналогично делаем на сервере-репликации.
Выпуск сертификатов для каждого сервера
На исходном сервере сделаем оба сертификата. Стандартная команда New-SelfSignedCertificate делает сертификат на год. Но нет желания каждый год обновлять эти сертификаты. Поэтому я нашел в интернете способ выпустить сертификат на 3 года.
И так. Сделаем сертификат для Server1. Открываем PowerShell и запускаем. (Копируем и вставляем по одной строчке);
Необходимо вместо Server1.med.local указать название сервера с dns-суффиксом, что мы задали раньше.
1 2 3 |
$todaydate = Get-Date $add3year = $todaydate.AddYears(3) New-SelfSignedCertificate -dnsname Server1.adel.local -notafter $add3year -CertStoreLocation cert:\LocalMachine\My -TestRoot |
И для нашего Server2.
1 2 3 |
$todaydate = Get-Date $add3year = $todaydate.AddYears(3) New-SelfSignedCertificate -dnsname Server2.adel.local -notafter $add3year -CertStoreLocation cert:\LocalMachine\My -TestRoot |
В итоге у нас должно получится вот такое при открытии certlm.msc (Сертификаты на локальном компьютере):
Тестовый Корневной сертификат
Для начала сделаю папку «Сертификаты для репликации» в документах, чтобы всё было в одном месте.
Наш тестовый сертификат находится вне Доверенных корненых центрах, поэтому все наши сертификаты будут считаться недействительными. Нам необходимо его экспортировать и добавить в корни. По умолчанию он находится в Промежуточные центры сертификации.
Открываем оснастку certlm.msc, находим нужный сертификат.
Нажимаем ПКМ, Экспорт и экспортируем сертификат ничего не меняя, в созданную папку и назовём его CA.
Далее его необходимо добавить в Доверенные корневые сертификаты и на Server1 и на Server2.
Должно вылезти предупреждение, с ним соглашаемся.
Экспорт сертификатов
Экспортируем наши сертификаты в папку. И копируем их на сервер-репликацию. Всё в той же оснастке certlm.msc в разделе Личные выбираем наш сертификат Server1, нажимаем ПКМ, экспорт и далее делаем по инструкции:
Вместе с закрытым ключом;
Устанавливаем нужные свойства;
Задаем ключ;
И сохраняем в нашей папке «Сертификаты для репликации».
Точно так же делаем для второго сертификата. После чего копируем всю папку на Server2 и производим импорт.
Импорт сертификатов
Не забываем, что необходимо сначала импортировать сертификат CA в корневые. Если Вы это не сделали раньше, то сделайте прямо сейчас.
С сертификатам для сервера всё просто. Кликаем два раза по нужному сертификату и импортируем его в Сертификаты на компьютеры в раздел личные с заданным ключом на моменте экспорта.
Настройка сервера-реплики
На нашем сервере репликации (в примере это Server2) открываем оснастку Hyper-V, переходим в Параметры Hyper-V, открываем Конфигурация репликации.
Указываем TCP-порт по которому будет работать репликация. Выбираем сертификат и указываем хранилище для репликации.
Открыть порт в брандмауэре
Не забываем, что нам необходимо открыть порт, который мы указываем в настройках сервера репликации. Если у Вас стоит сторонний FireWall или антивирус с этими функциями, то открываем там.
Включение репликации
Настал момент, когда можно запускать репликацию с Server1 на Server2. Открываем оснастку Hyper-V, выбираем нужную VM, кликаем включить репликацию.
Далее указываем наш сервер-репликации;
В настройках подключения выбираем сертификат;
Выбираем диски для синхронизации. Я всегда отключаю бекапные.
Выбираем частоту реплицирования;
Указываем метод первоначальной передачи ВМ и время запуска синхронизации. Если у нас толстая виртуальная машина, то можно сделать экспорт на диск, перенести. Но это как-то запарно, я всегда использую сеть.
Тыкаем готово и радумаеся. Пошло, поехало…
Маленькая особенность
По-умолчанию, если репликация сломается, то повторно она запускается в промежутке с 18:30 до 6:00, чтобы это исправить необходимо открыть свойства ВМ в Hyper-V, в разделе репликация указать Автоматический запуск. Проверенно опытом, что так стабильнее и лучше.
Важные подсказки
- При изменении конфигурации ВМ (добавили оперативной памяти, расширили диск) эти действия необходимо продублировать руками на виртуальной машине на сервере репликации;
- Чтобы спать спокойнее, необходимо настроить мониторинг репликации;
- Просмотр статуса репликации возможен прямо из оснастки Hyper-V, необходимо включить нужный столбец;
Как интересно в Hyper-v открыть панель управления системой, если там нет графической оболочки?
Вы имеете в виду hyper-v core?
Вроде стандартная утилита командной строки это все умела?
Или, как альтернатива, Set-DnsClientGlobalSetting
При вводе комманды на 3 год аругается, вот решение:
PS C:\Windows\system32> New-SelfSignedCertificate -dnsname Server1.adel.local -notafter $add3year -CertStoreLocation cert:\LocalMachine\My -TestRoot
New-SelfSignedCertificate : Не удается привязать параметр «NotAfter» к целевому объекту. Исключение при задании «NotAft
er» : «Не удается преобразовать значение NULL в тип «System.DateTime».»
строка:1 знак:65
+ … edCertificate -dnsname Server1.adel.local -notafter $add3year -CertSt …
+ ~~~~~~~~~
+ CategoryInfo : WriteError: (:) [New-SelfSignedCertificate], ParameterBindingException
+ FullyQualifiedErrorId : ParameterBindingFailed,Microsoft.CertificateServices.Commands.NewSelfSignedCertificateCo
mmand
PS C:\Windows\system32> New-SelfSignedCertificate -dnsname Server1.adel.local -notafter (Get-Date).AddYears(10) -CertStoreLocation cert:\LocalMachine\My -TestRoot
В скобках сертификат на 10 лет, можно вводить скок надо
Спасибо за коммент. Полезно!