Настройка аварийного восстановления для PersistentVolumeClaim
Для обеспечения межкластерного аварийного восстановления для PVC приложения используйте Alauda Build of VolSync.
Содержание
ОбзорТерминологияПредварительные требованияРазвертывание Alauda Build of VolSyncНастройка запланированной синхронизацииНастройка однократной синхронизацииВключение аварийного восстановления для PVC приложенияПлановая миграцияПроцедурыFailoverПроцедурыFailback (post-disaster recovery)ПроцедурыОбзор
Alauda Build of VolSync — это Operator, который выполняет асинхронную репликацию persistent volumes внутри кластера или между кластерами. Репликация, предоставляемая VolSync, не зависит от системы хранения. Это позволяет выполнять репликацию в хранилища и из хранилищ, которые обычно не поддерживают удаленную репликацию. Кроме того, она может работать между разными типами (и поставщиками) хранилищ.
Терминология
Предварительные требования
- Скачайте установочный пакет Alauda Build of VolSync, соответствующий архитектуре вашей платформы.
- Загрузите установочный пакет Alauda Build of VolSync с помощью механизма Upload Packages на оба кластера: Primary и Secondary.
- На обоих кластерах — Primary и Secondary — развернут Alauda Container Platform Snapshot Management.
- Хранилище, используемое PVC, должно быть предоставлено через CSI и поддерживать функциональность snapshot.
Развертывание Alauda Build of VolSync
-
Войдите в систему и перейдите на страницу Administrator.
-
Нажмите Marketplace > OperatorHub, чтобы открыть страницу OperatorHub.
-
Найдите Alauda Build of VolSync, нажмите Install и перейдите на страницу Install Alauda Build of VolSync.
Параметры конфигурации:
Настройка запланированной синхронизации
После настройки Scheduled Synchronization для PVC VolSync будет автоматически синхронизировать данные из ReplicationSource в ReplicationDestination с заданным интервалом.
В этом разделе описаны шаги настройки синхронизации данных из primary-кластера в secondary-кластер. Для синхронизации из secondary в primary адаптируйте приведенный ниже пример, поменяв местами роли кластеров (primary и secondary)
Создание Secret для Data Mover rsync-tls
Создайте Secret на обоих кластерах — Primary и Secondary; пропустите этот шаг, если Secret уже существует.
Параметры:
Создание ресурса ReplicationDestination
Создайте ReplicationDestination на кластере Secondary
Параметры:
О типе Service
Если указан ClusterIP, Service получит IP-адрес, выделенный из пула адресов “cluster network”. По умолчанию этот набор адресов недоступен извне кластера, поэтому он плохо подходит для межкластерной репликации. Однако различные сетевые дополнения, такие как Submariner, объединяют cluster network, что делает этот вариант подходящим.
Если указан LoadBalancer, будет выделен внешний IP-адрес. Для этого требуется поддержка load balancer'ов на уровне кластера, например, реализованная различными облачными провайдерами, либо MetalLB в случае физических кластеров. Хотя это самый простой способ выделить доступный адрес в облачных средах, load balancer'ы обычно влекут за собой дополнительные расходы и имеют ограниченное количество.
Создание ресурса ReplicationSource
Создайте ReplicationSource на кластере Primary
Параметры:
Проверка статуса синхронизации
Проверьте синхронизацию из ReplicationSource
Последняя синхронизация была завершена в .status.lastSyncTime и заняла .status.lastSyncDuration секунд.
Следующая запланированная синхронизация будет в .status.nextSyncTime.
Настройка однократной синхронизации
One-Time Synchronization запускается вручную. Это управляется путем задания уникальной строки для поля manual в спецификации trigger ресурса ReplicationSource. Задача синхронизации выполняется один раз сразу после применения конфигурации.
Создание ресурса ReplicationSource для однократной синхронизации
Единственное отличие от Запланированной синхронизации состоит в том, что .spec.trigger следует установить в manual.
Проверка статуса синхронизации
Если вывод совпадает с <manual-id>, синхронизация завершена.
Включение аварийного восстановления для PVC приложения
Развертывание stateful-приложения
- Разверните stateful-приложения на кластере Primary
Нажмите, чтобы просмотреть
-
Создайте PVC приложения на кластере Secondary
Настройка аварийного восстановления PVC
Настройте синхронизацию Primary-to-Secondary
Плановая миграция
Сценарий использования:
Перенос бизнес-сервисов с кластера Primary на кластер Secondary, пока оба кластера работают в штатном режиме.
Процедуры
-
Снизьте количество pod'ов приложения
Снизьте количество всех pod'ов приложения, которые используют dr PVC, на кластере Primary.
-
Удалите ресурс ReplicationSource
Удалите
ReplicationSourceна кластере Primary -
Создайте однократную синхронизацию
Запустите задачу синхронизации с кластера Primary, чтобы гарантировать, что данные на кластере Secondary находятся в состоянии
up-to-date.Создайте
ReplicationSourceна кластере Primary -
Удалите однократную синхронизацию
После завершения однократной синхронизации удалите ресурс One-Time
ReplicationSource -
Удалите ресурс ReplicationDestination
Удалите
ReplicationDestinationна кластере Secondary -
Увеличьте количество pod'ов приложения
Увеличьте количество всех pod'ов приложения, которые используют dr PVC, на кластере Secondary.
-
Настройте синхронизацию secondary-to-primary
Настройте синхронизацию PVC для аварийного восстановления
Secondary-to-Primary, создавReplicationDestinationна кластере Primary иReplicationSourceна кластере Secondary.
Failover
Сценарий использования:
Переключение сервисов на кластер Secondary после внезапного отключения кластера Primary.
Процедуры
Чтобы обеспечить целостность данных (если в primary-кластере произойдет сбой во время синхронизации), выполните локальную синхронизацию на кластере Secondary. Используйте PVC, восстановленный из последнего snapshot PVC приложения, в качестве источника, а текущий PVC приложения — в качестве назначения для выполнения синхронизации данных.
-
Восстановите PVC
Восстановите PVC из
ReplicationDestinationна кластере Secondary -
Создайте локальный ресурс ReplicationSource
Создайте ресурс
ReplicationSourceна кластере SecondaryПараметры см. в Настройке однократной синхронизации
-
Дождитесь завершения синхронизации
Если вывод совпадает с
<manual-id>, синхронизация завершена. -
Удалите локальный ReplicationSource
Удалите локальный
ReplicationSourceна кластере Secondary -
Удалите ReplicationDestination
Удалите
ReplicationDestinationна кластере Secondary -
Увеличьте количество pod'ов приложения
Увеличьте количество всех pod'ов приложения на кластере Secondary.
Failback (post-disaster recovery)
Сценарий использования:
Кластер Primary теперь восстановлен и работает, поэтому требуется возврат сервисов на него.
Процедуры
-
Снизьте количество pod'ов приложения на кластере Primary
Когда кластер primary снова станет доступен, pod'ы приложения восстановятся автоматически. Однако сначала необходимо снизить количество экземпляров сервиса, чтобы остановить трафик. После синхронизации последних данных с кластера secondary на кластер primary приложение можно будет снова масштабировать вверх и возобновить нормальную работу.
-
Удалите ReplicationSource на кластере Primary
Сначала нужно удалить
ReplicationSource, созданный до отказа кластера Primary. -
Синхронизация последних данных с кластера Secondary
Настройте
Secondary-to-PrimaryOne-Time Synchronization.Создайте
ReplicationDestinationна кластере Primary, а затем создайте однократныйReplicationSourceна кластере Secondary -
Удалите ReplicationDestination и ReplicationSource
После синхронизации данных удалите однократные ресурсы
Удалите
ReplicationSourceна кластере SecondaryУдалите
ReplicationDestinationна кластере Primary -
Миграция приложения
Снизьте количество pod'ов приложения на кластере Secondary
Увеличьте количество pod'ов приложения на кластере Primary
-
Настройте синхронизацию Primary-to-Secondary