Повышение роли вторичного кластера DR до первичного
|
Данный функционал недоступен в StarVault, поставляемого в составе Nova Container Platform. |
На данном этапе перевод вторичного кластера в первичный выполняется в случае сбоя, который делает основной кластер неработоспособным.
Для повышения роли нужен токен операций Disaster Recovery (DR).
Токен можно подготовить заранее на основном кластере: это пакетный токен. Порядок приведен в статье Токен операций DR. Если пакетного токена нет, выпустите токен на вторичном кластере по частям ключа распечатывания (unseal key). Этот порядок описан ниже.
|
Нельзя реплицировать данные с более новой версии StarVault на более старую. При обновлении сначала обновляйте вышестоящие кластеры, затем нижестоящие. |
1. Генерация токена операций DR
Этот раздел нужен, если пакетный токен операций DR на кластере A не выпускали.
Пакетный токен готовят заранее на основном кластере, пока он работает. Порядок приведен в статье Токен операций DR. Такой токен реплицируется на кластер B, и им можно повысить роль, даже если кластер A уже недоступен. Если пакетный токен есть и срок его жизни не истек, пропустите этот раздел и переходите к повышению роли.
Если пакетного токена нет, выпустите токен операций DR на вторичном кластере B в момент переключения. Для выпуска нужен порог частей ключа распечатывания, которые появились при инициализации кластера A. При автоматическом распечатывании используйте ключи восстановления. Каждую часть передает держатель соответствующего ключа. Процедура похожа на выпуск корневого токена. У этого токена нет срока жизни: после операции его удаляют.
С помощью веб-интерфейса
-
Запустите пользовательский интерфейс кластера B.
-
Перейдите в раздел Репликация и нажмите на панель Аварийное восстановление
-
В нижней части интерфейса нажмите Создать DR operation token.
-
В появившемся окне обратите внимание на возможность шифрования токена с помощью ключа PGP. Выберите Инициализировать.
-
Далее отобразится OTP. Он потребуется для декодирования сгенерированного токена. Скопируйте его в буфер обмена.
-
Для создания нового токена используйте части ключа распечатывания.
-
Далее отобразится закодированный токен операции аварийного восстановления. Если одноразовый пароль (OTP) еще доступен, он будет в выходных данных. Если OTP недоступен, возьмите значение из предыдущего шага. Нажмите значок
, чтобы скопировать команду токена.
-
Выполните скопированную команду в терминале. Подставьте OTP из предыдущего шага.
starvault operator generate-root -dr-token -otp="d9YRLdGt6xmGmAxGW2sMD4Ny" -decode="J1UxNw9dLgFmIFU+JjY3EQZKPzQBeQku"Пример вывода:hvs.5Jw2qwxzwnYrgswSoNLoYqQCСохраните полученный токен. Он понадобится для повышения роли.
С помощью CLI
Выполните действия, указанные ниже, на вторичном кластере аварийного восстановления (кластер B).
-
На кластере B запустите генерацию токена операций DR.
starvault operator generate-root -dr-token -initПример вывода:A One-Time-Password has been generated for you and is shown in the OTP field. You will need this value to decode the resulting root token, so keep it safe. Nonce b4738404-0a11-63aa-2cb6-e77dfd96946f Started true Progress 0/3 Complete false OTP EYHAkPQYvvz93e8iI3pg1maQ OTP Length 24Сохраните OTP. Сохраните
nonce. -
Подставьте
nonceиз предыдущего шага и часть ключа распечатывания исходного основного кластера.starvault operator generate-root -dr-token \ -nonce=b4738404-0a11-63aa-2cb6-e77dfd96946f \ <unseal-key>Пример вывода после первой части:Nonce b4738404-0a11-63aa-2cb6-e77dfd96946f Started true Progress 1/3 Complete false -
Когда передан порог частей, в выводе появляется закодированный токен.
Пример вывода:Nonce b4738404-0a11-63aa-2cb6-e77dfd96946f Started true Progress 3/3 Complete true Encoded Token djw4BR1iaDUFIBxaAwpiCC1YGhQHHDMf -
Расшифруйте токен. Подставьте закодированный токен и OTP из первого шага.
starvault operator generate-root -dr-token \ -decode="djw4BR1iaDUFIBxaAwpiCC1YGhQHHDMf" \ -otp="EYHAkPQYvvz93e8iI3pg1maQ"Пример вывода:hvs.5xsAyncmt1OPEHhMFPMKcYAGСохраните полученный токен. Он понадобится для повышения роли.
С помощью API
Вызовы выполняются на кластере B из корневого пространства имен. Одновременно может идти только одна попытка генерации.
-
Запустите генерацию токена, вызвав конечную точку
/sys/replication/dr/secondary/generate-operation-token/attempt.curl \ --header "X-Vault-Token: ..." \ --request POST \ http://127.0.0.1:8200/v1/sys/replication/dr/secondary/generate-operation-token/attemptПример ответа
{ "started": true, "nonce": "2dbd10f1-8528-6246-09e7-82b25b8aba63", "progress": 1, "required": 3, "encoded_token": "", "otp": "2vPFYG8gUSW9npwzyvxXMug0", "otp_length": 24, "complete": false }Сохраните
nonceиotp. Чтобы зашифровать токен ключом PGP, передайте в теле запроса параметрpgp_key— открытый ключ PGP в кодировке Base64. -
Передайте части ключа распечатывания, вызвав конечную точку
/sys/replication/dr/secondary/generate-operation-token/update. Повторяйте вызов, покаcompleteне станетtrue. В каждом вызове указывайте один и тот жеnonce.$ tee payload.json <<EOF { "key": "acbd1234", "nonce": "2dbd10f1-8528-6246-09e7-82b25b8aba63" } EOFcurl \ --header "X-Vault-Token: ..." \ --request POST \ --data @payload.json \ http://127.0.0.1:8200/v1/sys/replication/dr/secondary/generate-operation-token/updateПример ответа после достижения порога
{ "started": true, "nonce": "2dbd10f1-8528-6246-09e7-82b25b8aba63", "progress": 3, "required": 3, "pgp_fingerprint": "", "complete": true, "encoded_token": "FPzkNBvwNDeFh4SmGA8c+w==" } -
Расшифруйте
encoded_tokenс помощью OTP из первого шага.starvault operator generate-root -dr-token \ -decode="FPzkNBvwNDeFh4SmGA8c+w==" \ -otp="2vPFYG8gUSW9npwzyvxXMug0"Пример вывода:hvs.5xsAyncmt1OPEHhMFPMKcYAGСохраните полученный токен. Он понадобится для повышения роли.
Описание запросов см. в разделе Генерация токена операций DR.
2. Повышение роли вторичного кластера
|
К основному кластеру можно подключить только один вторичный кластер. |
Выполните шаги на вторичном кластере B, в случае неработоспособности первичного кластера A.
Кластер B проверяет запрос повышения роли. Затем кластер B инициализирует журнал упреждающей записи (WAL) для роли основного. Кластер B становится основным. На короткое время кластер будет недоступен, затем обслуживание возобновится.
Передайте токен операций DR: пакетный токен из статьи Токен операций DR либо токен, выпущенный в разделе Генерация токена операций DR.
С помощью веб-интерфейса
|
Если в конфигурации кластера не задан |
-
Запустите пользовательский интерфейс кластера B.
-
Перейдите в раздел Репликация и нажмите на панель Аварийное восстановление.
-
Нажмите Повысить secondary.
-
Введите токен операций DR и адрес основного кластера. Нажмите Подтвердить.
С помощью CLI
Повысьте роль вторичного кластера B. Передайте токен операций DR.
starvault write sys/replication/dr/secondary/promote \
dr_operation_token="<dr-operation-token>"
WARNING! The following warnings were returned from Vault:
* This cluster is being promoted to a replication primary. Vault will be
unavailable for a brief period and will resume service shortly.
Чтобы повысить роль принудительно, добавьте параметр force=true.
starvault write sys/replication/dr/secondary/promote \
dr_operation_token="<dr-operation-token>" \
force=true
С помощью API
|
Если в конфигурации кластера не задан |
-
Создайте полезную нагрузку с токеном операций DR.
$ tee payload.json <<EOF { "dr_operation_token": "ijH8tphEHaBtgx+IvPfxDsSi2LV4j9k+Lad6eqT5cJw=" } EOFПараметры запроса:
-
dr_operation_token(string: <required>)— токен операций DR для авторизации запроса -
primary_cluster_addr(string: "")— адрес кластера, который основной кластер передает вторичному. Укажите значение, если адрес основного кластера недоступен напрямую, например через балансировщик -
force(bool: false)— еслиtrue, кластер будет повышен даже при ошибках отдельных проверок безопасности. Принудительное повышение может привести к потере данных, если репликация не завершена
-
-
Повысьте роль вторичного кластера, вызвав конечную точку
/sys/replication/dr/secondary/promote.curl \ --header "X-Vault-Token: ..." \ --request POST \ --data @payload.json \ http://127.0.0.1:8200/v1/sys/replication/dr/secondary/promoteПример ответа
{ "request_id": "ad8f9074-0e24-d30e-83cd-595c9652ff89", "lease_id": "", "renewable": false, "lease_duration": 0, "data": null, "wrap_info": null, "warnings": [ "This cluster is being promoted to a replication primary. Vault will be unavailable for a brief period and will resume service shortly." ], "auth": null }Описание запроса и ответа API см. в разделе Повышение роли вторичного кластера.
Обновите все клиенты StarVault, чтобы они указывали на новый основной кластер (кластер B).
Вход на новый основной кластер выполняется теми же методами аутентификации, что были настроены на исходном основном. При необходимости сгенерируйте новый корневой токен.
|
В паре репликации DR только один кластер выполняет роль основного. Если исходный первичный кластер снова начинает принимать запросы, работают два независимых первичных кластера, и наборы данных могут расходиться. StarVault не выполняет автоматическое переключение. Дальнейшие действия в этом случае описаны в статье Понижение роли или отключение исходного первичного кластера. |