Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Настройка репликации DR

Перед началом убедитесь, что выполнены все предварительные условия статьи Обзор.

Для настройки нужны два настроенных и инициализированных кластера StarVault. Кластер A станет основным. Кластер B станет вторичным.

Вызывайте операции репликации из пространства имен root. В кластере Raft с высокой доступностью (HA) запросы обрабатывает только лидер. Описание пространств имен приведено в разделе Пространства имен (namespaces).

1. Включение репликации на основном кластере

Выполните шаги на кластере, который станет основным (кластер A). Репликация DR на этом кластере должна быть отключена.

При включении роли основного на кластере A активируется журнал упреждающей записи (WAL).

С помощью веб-интерфейса

Если в конфигурации кластера не задан cluster_addr, укажите primary_cluster_addr.

  1. Откройте окно браузера и запустите пользовательский интерфейс кластера A.

  2. Выберите раздел Репликация.

    setup 1
  3. Нажмите Включить аварийное восстановление.

    setup 2
  4. Выберите режим кластера Primary и нажмите Создать.

    setup 3
  5. В разделе Secondaries нажмите Добавить secondary.

    • В поле ID введите идентификатор вторичного кластера.

    • В поле TTL укажите время жизни токена вторичного кластера.

    setup 4

    Нажмите Сгенерировать токен и скопируйте токен в буфер обмена. Токен потребуется для включения аварийного восстановления на вторичном кластере.

    setup 5
С помощью CLI
  1. Включите репликацию DR в роли основного.

    starvault write -f sys/replication/dr/primary/enable
  2. Сгенерируйте токен активации вторичного кластера.

    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

Если в конфигурации кластера не задан cluster_addr, в запросе /v1/sys/replication/dr/primary/enable явно укажите primary_cluster_addr.

  1. Включите репликацию 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
    }
  2. Сгенерируйте токен активации вторичного кластера, вызвав конечную точку /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-репликацией.

С помощью веб-интерфейса
  1. Откройте окно браузера и запустите пользовательский интерфейс кластера B.

  2. Перейдите в раздел Репликация.

  3. Нажмите Включить аварийное восстановление.

    setup 1
  4. Выберите режим кластера Secondary, введите токен активации вторичного кластера и нажмите Создать.

    Данное действие немедленно удалит все данные во вторичном кластере.

    setup 6
С помощью CLI

Выполните команду для включения аварийного восстановления на вторичном кластере.

starvault write sys/replication/dr/secondary/enable token= "eyJhbGciOiJFUzUxMiIsInR5cCI6Ik..." (1)
1 token - это значение поля wrapping_token с кластера A.

Настройка репликации DR завершена. Войдите во вторичный кластер, используя методы аутентификации, настроенные в основном кластере.

С помощью API
  1. Создайте полезную нагрузку для API-запроса, содержащую токен, полученный от основного кластера.

    $ tee payload.json <<EOF
    {
      "token": "eyJhbGciOiJFUzUxMiIsInR5cCI6Ik..."
    }
    EOF
  2. Включите репликацию 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 завершена. Войдите во вторичный кластер, используя методы аутентификации, настроенные в основном кластере.

3. Рекомендуется к ознакомлению