Настройка репликации DR
Перед началом убедитесь, что выполнены все предварительные условия статьи Обзор.
Для настройки нужны два настроенных и инициализированных кластера StarVault. Кластер A станет основным. Кластер B станет вторичным.
Вызывайте операции репликации из пространства имен root. В кластере Raft с высокой доступностью (HA) запросы обрабатывает только лидер. Описание пространств имен приведено в разделе Пространства имен (namespaces).
1. Включение репликации на основном кластере
Выполните шаги на кластере, который станет основным (кластер A). Репликация DR на этом кластере должна быть отключена.
При включении роли основного на кластере A активируется журнал упреждающей записи (WAL).
С помощью веб-интерфейса
|
Если в конфигурации кластера не задан |
-
Откройте окно браузера и запустите пользовательский интерфейс кластера A.
-
Выберите раздел Репликация.
-
Нажмите Включить аварийное восстановление.
-
Выберите режим кластера Primary и нажмите Создать.
-
В разделе Secondaries нажмите Добавить secondary.
-
В поле ID введите идентификатор вторичного кластера.
-
В поле TTL укажите время жизни токена вторичного кластера.
Нажмите Сгенерировать токен и скопируйте токен в буфер обмена. Токен потребуется для включения аварийного восстановления на вторичном кластере.
-
С помощью CLI
-
Включите репликацию DR в роли основного.
starvault write -f sys/replication/dr/primary/enable -
Сгенерируйте токен активации вторичного кластера.
starvault write sys/replication/dr/primary/secondary-token id= "dr-secondary"Пример вывода:Key Value --- ----- wrapping_token: eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCJ9... wrapping_accessor: odeEh1YLertHAmr2toQ6zY5O wrapping_token_ttl: 30m wrapping_token_creation_time: 2022-07-08 11:27:38.660697 -0700 PDT wrapping_token_creation_path: sys/replication/dr/primary/secondary-tokenСкопируйте сгенерированный файл
wrapping_token, который понадобится для включения вторичного кластера аварийного восстановления.
С помощью API
|
Если в конфигурации кластера не задан |
-
Включите репликацию DR на основном кластере, вызвав конечную точку
/sys/replication/dr/primary/enable.Примерcurl \ --header "X-Vault-Token: ..." \ --request POST \ --data @payload.json \ http://127.0.0.1:8200/v1/sys/replication/dr/primary/enableПример ответа
"request_id": "daaa6c68-1330-c325-de2a-7bcc2a8c3526", "lease_id": "", "renewable": false, "lease_duration": 0, "data": { "cluster_id": "2570815c-df91-476d-b3df-9a36c9903f79", "corrupted_merkle_tree": false, "known_secondaries": [], "last_corruption_check_epoch": "0", "last_dr_wal": 0, "last_reindex_epoch": "0", "last_wal": 0, "merkle_root": "0255165bf066da993dd660893238a1fe4220c58dcef5f91bbe517d0660e01909", "mode": "primary", "primary_cluster_addr": "https://172.20.0.109:8201", "secondaries": [], "ssct_generation_counter": 1, "state": "running" }, "wrap_info": null, "warnings": null, "auth": null } -
Сгенерируйте токен активации вторичного кластера, вызвав конечную точку
/sys/replication/dr/primary/secondary-token.curl \ --header "X-Vault-Token: ..." \ --request POST \ --data '{"id": "dr-secondary"}' \ http://127.0.0.1:8200/v1/sys/replication/dr/primary/secondary-tokenПример ответа
{ "request_id": "", "lease_id": "", "renewable": false, "lease_duration": 0, "data": null, "wrap_info": { "token": "eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NvciI6IiIsImFkZHIiOiJodHRwczovLzE3Mi4yMC4wLjEwOTo4MjAwIiwiZXhwIjoxNzg4OTU4NTY4LCJpYXQiOjE3ODg5NTY3NjgsImp0aSI6InMuOFlSOVhad25Ld2s4MmE1M2MxNVNzNVdOIiwibmJmIjoxNzg4OTU2NzYzLCJ0eXBlIjoid3JhcHBpbmcifQ.AZlNt0dRwWqsSKRGoF-IRUZ9OnSnMVTyoHi2cCFAIWJeC98Gpby0TnuYPP0IaNjrPUwF0D0bZYoy_-TCrH68kqJwAVmiQk7eGwcJG6aGJJx-EUiEmupPK9eE0QNaS8ZOBCErl4XBUUKVKKnPkCf4BwMqG-Bl0koT42ROnY5vffJXavmb", "accessor": "b8sWVDbZ3DUNuyY8rYlGjcXa", "ttl": 1800, "creation_time": "2026-09-09T12:26:08.687445807Z", "creation_path": "sys/replication/dr/primary/secondary-token", "wrapped_accessor": "ab55d3a2-da48-4703-90f6-01b71f09b3a2" }, "warnings": null, "auth": null }Скопируйте сгенерированный файл
token, который понадобится для включения аварийного восстановления на вторичном кластере.
2. Включение репликации на вторичном кластере
Выполните шаги на кластере, который станет вторичным (кластер B).
|
При включении роли вторичного кластер B полностью очищает пользовательские данные во встроенном хранилище Raft. Затем начинается синхронизация с кластером A. |
|
На вторичном кластере доступны только операции администрирования и управления DR-репликацией. |
С помощью веб-интерфейса
-
Откройте окно браузера и запустите пользовательский интерфейс кластера B.
-
Перейдите в раздел Репликация.
-
Нажмите Включить аварийное восстановление.
-
Выберите режим кластера Secondary, введите токен активации вторичного кластера и нажмите Создать.
Данное действие немедленно удалит все данные во вторичном кластере.
С помощью CLI
Выполните команду для включения аварийного восстановления на вторичном кластере.
starvault write sys/replication/dr/secondary/enable token= "eyJhbGciOiJFUzUxMiIsInR5cCI6Ik..." (1)
| 1 | token - это значение поля wrapping_token с кластера A. |
Настройка репликации DR завершена. Войдите во вторичный кластер, используя методы аутентификации, настроенные в основном кластере.
С помощью API
-
Создайте полезную нагрузку для API-запроса, содержащую токен, полученный от основного кластера.
$ tee payload.json <<EOF { "token": "eyJhbGciOiJFUzUxMiIsInR5cCI6Ik..." } EOF -
Включите репликацию DR на вторичном кластере.
Данное действие немедленно удалит все данные во вторичном кластере.
$ curl --request POST --header "X-Vault-Token: $VAULT_TOKEN" \ --data @payload.json \ https://cluster-B.example.com:8200/v1/sys/replication/dr/secondary/enable | jq
Настройка репликации DR завершена. Войдите во вторичный кластер, используя методы аутентификации, настроенные в основном кластере.