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

/sys/storage

В настоящее время данный подраздел API используется только для управления бэкендом хранилища Raft.

1. /sys/storage/raft

Конечные точки /sys/storage/raft используются для управления бэкендом хранения Raft в StarVault.

1.1. Присоединение к кластеру Raft

Данная конечная точка присоединяет новый серверный узел к кластеру Raft. Когда используется запечатывание Shamir - как только сервер StarVault запущен, этот API должен быть использован вместо sys/init. Этот API выполняется в два этапа. После вызова присоединяющийся узел получит запрос от ведущего узла Raft. Присоединяющийся узел сможет ответить на этот запрос только после успешного распечатывания. Следовательно, присоединяющийся узел должен быть распечатан с помощью ключей распечатывания ведущего узла Raft.

Метод

Путь

POST

/sys/storage/raft/join

1.1.1. Параметры

  • leader_api_addr (string: <required>) – адрес узла-лидера в кластере Raft, к которому этот узел пытается присоединиться.

  • retry (bool: false) - в случае сбоев повторить попытку присоединения к кластеру Raft.

  • leader_ca_cert (string: "") - сертификат CA, используемый для связи с узлом-лидером Raft.

  • leader_client_cert (string: "") - клиентский сертификат, используемый для связи с узлом-лидером Raft.

  • leader_client_key (string: "") - клиентский ключ, используемый для связи с узлом-лидером Raft.

  • leader_tls_servername (string: "") - имя сервера TLS, используемое при подключении по HTTPS. Должно совпадать с одним из имен в DNS-именах SAN сертификата удаленного сервера.

  • auto_join (string: "") - определяет все метаданные автоматического присоединения. Если они указаны, StarVault попытается автоматически обнаружить одноранговые узлы в дополнение к тому, что может быть предоставлено через «leader_api_addr».

  • auto_join_scheme (string: "https") - схема URI, которая будет использоваться для auto_join.

  • auto_join_port (int: 8200) - порт, который будет использоваться для auto_join.

  • non_voter (bool: false) - флаг используется для исключения сервера из Raft-кворума, позволяя ему только получать поток репликации данных. На non-voter узел реплицируются все данные StarVault, но он не участвует в подсчете кворума. Данный тип узлов может использоваться для повышения масштабируемости нагрузки на чтение. Значение по умолчанию — false.

Пример тела запроса:
{
  "leader_api_addr": "https://127.0.0.1:8200",
  "leader_ca_cert": "-----BEGIN CERTIFICATE-----\nMIIDKTCCAhGgAwIBAgIUcd+Uyk1Tz+FhcbYP0zmynlkARoEwDQYJKoZIhvcNAQEL\nBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE5MDYyNDIyMjgzNVoXDTE5MDYy\nNzIyMjkwNVowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKdYr6rU\n21vYf7q/cpPigtBchqHvGZvpbA9DZucuUdQ0g4oAXRyShQ8omzmZOmO4A1GI3gqz\nHBePSYl+1IZCwgbPBk2CH7MhlMMINdwoEH6IxFgHNBkNK6GbwnGLyKL0Sym88ly1\n+sPP6+llS8uWNKu5GcObHLysD3Ce6QTt3usDPiw0cxp/KL1EkMi2dT7PvxTsX137\nsEsuQcylltGEtRb67xvFBP8XhQZAEGw+u4S3EmtwWMwZixB45WQhj2Ncz5U0+w8V\ncp9DSqB1QheoGPBBI62jHle05kzG85ZKmLBgHE6HEGS8biIHpannM7dgI0cRH6i2\nF69N0rcbzK+NInUCAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCA6gwHQYDVR0lBBYw\nFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBQelJT5fthHdbCyD5zaI4tw\n7mfp8zAfBgNVHSMEGDAWgBSuG6hyoOWoiGvSA3kqwo9DirS+pzASBgNVHREBAf8E\nCDAGhwR/AAABMA0GCSqGSIb3DQEBCwUAA4IBAQCmetSH5w835RbbyHZD8e3ClHzi\n210SrvzWkx3N0JcBOjs47jlLuqVTl0HRr2xMoIkErFbhPDBXARYV8eezhQ6G5M60\n8AwVsG56rCa1l0weK2JfnEWgkwXZ/zbpZ2yNkWatWNSHdlJwGp99JTSriQYNOnMG\nWvBDA8ukoOkIJd/a8+aXZBdUiAcFvlLWmX73pYGTlnQDiIqJvhrlkgCKPvzZqvV+\njtz7kCt9EfT6sN6Xcny7GusRBSs+XfEe8u10+mbud+ufE/QSJ2D3tTYrS6eGqpVD\nrezD8jS9PfZgQfHXVaphMADyw4flaSVxfJ/ZRFxXql3oJSuj02+VX6QsXex+\n-----END CERTIFICATE-----",
  "leader_client_cert": "-----BEGIN CERTIFICATE-----\nMIIDNTCCAh2gAwIBAgIULkPFG+qu7tGv21Plc1sg4eGbMPkwDQYJKoZIhvcNAQEL\nBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE5MDYyNDIyMjgwNVoXDTI5MDYy\nMTIyMjgzNVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEAwszD+A5vWD8S1N632ElHA5Px2dk97wJBKNYc/7RPNptn\n+EOmMTXPfuA3LB92FoSMCR7ye3wvSTzyK9nqafS7U2tlOF4PJrJoNZyzrVwBVLXg\n7Pd8qQxnxbonc3bscWZuEfbFsugkPHgBtnSkyCffXKhhwM5LbJqmK5cfJRZZ0eRy\nwmOCQCJ8ZmN2KfjHiGSEw9v19CNtvFNLyfiTZZLO9M5n4dgainZZCs+vdKD7tSJf\nycwWiZ4ezOwLMIgxdbLYKVglbZsPcMVVPLTskmY8WiHUM6sy3HAbFQn20Rj7JGE6\nldR3NX80YtCMt8/d+xzBfxu4x8juxHCgZFGt3nUS0wIDAQABo38wfTAOBgNVHQ8B\nAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUrhuocqDlqIhr0gN5\nKsKPQ4q0vqcwHwYDVR0jBBgwFoAUrhuocqDlqIhr0gN5KsKPQ4q0vqcwGgYDVR0R\nBBMwEYIJbG9jYWxob3N0hwR/AAABMA0GCSqGSIb3DQEBCwUAA4IBAQBRno9NOaat\n8g1ma/6OxP1JUt1VRao4+t2GQTCJ697d2SmpHr8CYanMPog+QhDj/lderA/oS0V3\n2jruH9CyH0smFMIsLBZpnRIwdhTISbIXdU3Uvcd6nne/f7LiUUmqf8YS9SHxWPFq\nI72QvtPrsjYKCZwJsHZe071lYScjrjGnlUhhbrug2g6/ZMHJ7mndGE022zMn/XD/\njrrKE6fCDCjJ4PRrta7+G7BvsFHqMSQ+2/947TGohxW69cbNyDeiQVDQ5mpJUy2b\nnOCVVnq0nafSuvBTHCCLxjd7f+9TiB/B3qT8GA9V6LANDSdQ15MRIhpup/yosmqX\nl5goCY/j3bDh\n-----END CERTIFICATE-----",
  "leader_client_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAp1ivqtTbW9h/ur9yk+KC0FyGoe8Zm+lsD0Nm5y5R1DSDigBd\nHJKFDyibOZk6Y7gDUYjeCrMcF49JiX7UhkLCBs8GTYIfsyGUwwg13CgQfojEWAc0\nGQ0roZvCcYvIovRLKbzyXLX6w8/r6WVLy5Y0q7kZw5scvKwPcJ7pBO3e6wM+LDRz\nGn8ovUSQyLZ1Ps+/FOxfXfuwSy5BzKWW0YS1FvrvG8UE/xeFBkAQbD67hLcSa3BY\nzBmLEHjlZCGPY1zPlTT7DxVyn0NKoHVCF6gY8EEjraMeV7TmTMbzlkqYsGAcTocQ\nZLxuIgelqeczt2AjRxEfqLYXr03StxvMr40idQIDAQABAoIBAHCOhhkw8hnklITX\nIAm34KSklylz2JW1eqkJfL0huogwigjYFciSBE0d0sn69fr8Wb8Nf8tSjSKLjbqd\nQ/TKEhbiSCr5yriBbb2AWDmr+OwisW1D6xaudRpN2Yrlqh1wkt2P6LPS8sehodtp\n9oEIloSqC1o1ii6czAXD3JckJzuJ66yoVyCo2oVC3NETujjJRhdRcNY0dYUGx47M\n+hQo7b4s79wlMFmccrgyJcKI7Ra3DtMrBIaVXm4WcjX2x4DduZX6L4mfG83uLWng\nhbvcEPKGamUErjPGYixKE5XOwgJT6Nzq/ZZJZpok6DbHBCtqvwwByWlfLzh8lc4o\nz+Pl5EECgYEA3pJXRM+SdVUCnWIpMFOAiNstOwz3nm0/c8GDdYYNq0ere1tKCVV0\nii+ujMQY8vEdRrp7fbqJEPJANyI6sM4Jc2nxMveFuBoEsEClZuE4KBFquW8CQU4R\nGNkzKF1W0GaTI5O4QDUag+lFG6TPCwZiejTIkt65o5bnSzGLgdC546sCgYEAwHr9\nlq9HytWkV9OLz0zbcAUEIrFAljnC32Mybsj8LzdSKIZ3wErf9Txh8zqZqMyhedxL\nOn17cpJAq5Vi71uXOaxnhkf7TPuRs8nBRRJfgyNHPXuXLkuWeuvXEe/PIC+nvOIX\nas0Ab0Pvx0fRGl4EkZ2pV9oDAEUezbVVZCoO8l8CgYEAp4p3YNfzwpj0d+5tXPBu\ngBakzJ+tQjewnP1dbLk1TuqLXjdQ2wfVyzOrbFEtCquPwy8bSICDLxt8VURR88eU\n+6kTJK+InBYR029GUtRUhmzd7qpugyQ14IOXa9ofQI8GUbCf8M1IoWWWXQHJzN3I\ngX98QHqiOU+d2k94WYb6dzMCgYA3E7p2oMdZShLRss3hzqtH/Zd2WeQSWIrjox3u\nR4Kp/Bl9UST5GDPHl7SrhcwsWgmmthusq/VkDmeE8aUyurGmJigla3mESMQjfwrX\nue8sti6PcEsNS0HPAKc1EbriCeDkkomC3RBPxk/ZZTp3YgnKpSOs6MxNCnpLAKVj\nmQlX3wKBgQCFYyYJdCKMoaoMrNjMM34sAfTqmZT4Hbxg9KM4OMDSxyvIi0ZaVcnB\nkzssvt0FOMucp4o7h8Iujt8xsgnBHwg81IV7WOw+ZwpUDAzgVc7+kCU6CLd2Q40j\n5uFnuRgiWeGm1aT4arNLWlJrDLSGbyrf59SlGJV1hmu/7SMaYIZHSQ==\n-----END RSA PRIVATE KEY-----"
}
Пример запроса:
curl \
  --request POST \
  --data @payload.json \
  http://127.0.0.1:8200/v1/sys/storage/raft/join

Распечатайте присоединяемый узел сразу после вызова этого API.

1.2. Чтение конфигурации кластера Raft

Эта конечная точка возвращает сведения обо всех узлах в кластере Raft.

Метод

Путь

GET

/sys/storage/raft/configuration

Пример запроса:
curl \
  --header "X-Vault-Token: ..." \
  http://127.0.0.1:8200/v1/sys/storage/raft/configuration
Пример ответа:
{
  "request_id": "ca4b5a1d-38d6-e27e-e756-269521328a15",
  "lease_id": "",
  "lease_duration": 0,
  "renewable": false,
  "data": {
    "config": {
      "index": 24,
      "servers": [
        {
          "address": "127.0.0.1:8201",
          "leader": true,
          "node_id": "raft1",
          "protocol_version": "\u0003",
          "voter": true
        },
        {
          "address": "127.0.0.2:8201",
          "leader": false,
          "node_id": "raft2",
          "protocol_version": "\u0003",
          "voter": true
        }
      ]
    }
  },
  "warnings": null
}

1.3. Удаление узла из кластера Raft

Данная конечная точка удаляет узел из кластера Raft.

Метод

Путь

POST

/sys/storage/raft/remove-peer

Пример тела запроса:
{
  "server_id": "raft1"
}
Пример запроса:
curl \
  --header "X-Vault-Token: ..." \
  --request POST \
  --data @payload.json \
  http://127.0.0.1:8200/v1/sys/storage/raft/remove-peer

1.3.1. Создание снимка кластера Raft хранилище

Данная конечная точка возвращает снимок текущего состояния кластера Raft. Снимок возвращается в виде бинарных данных и должен быть перенаправлен в файл. Недоступно, если Raft используется исключительно для ha_storage.

Метод Путь

GET

/sys/storage/raft/snapshot

1.3.1.1. Большие снимки Raft

Создание и восстановление снимков Raft может превышать стандартные и рекомендуемые настройки таймаута OpenBao. Переменная окружения VAULT_CLIENT_TIMEOUT может быть использована для увеличения времени на создание или восстановление снимка.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request GET \
    http://127.0.0.1:8200/v1/sys/storage/raft/snapshot > raft.snap

1.3.2. Автоматическое создание снимков в Raft

Данная конечная точка позволяет создавать новую или обновлять существующую конфигурацию. Каждая конфигурация имеет интервал, определяющий частоту создания снимков, место назначения для записи снимков, а также политику хранения, определяющую, когда удаляются более старые снимки.

Обратите внимание, что для облачных хранилищ вы можете либо явно указать учетные данные, используя параметры ниже, либо, для AWS, опустить их и полагаться на другие механизмы аутентификации, предоставляемые SDK облачного провайдера, например, переменные среды или файлы на диске в предопределенных местах.

Метод Путь

POST

/sys/storage/raft/snapshot-auto/config/<config-name>

Пример тела запроса:
{
  "interval": "24h",
  "retain": 7,
  "path_prefix": "/opt/starvault/data/snapshots/",
  "storage_type": "local",
  "local_max_space": 10000000
}
Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request POST \
    --data @payload.json \
    http://127.0.0.1:8200/v1/sys/storage/raft/snapshot-auto/config/config1
1.3.2.1. Параметры
  • name (string: <required>) – название конфигурации, которую необходимо изменить.

  • storage_type (string: <required>) — один из параметров: "local", "aws-s3". Остальные параметры, описанные ниже, являются специфичными для выбранного варианта storage_type и имеют соответствующий префикс.

  • interval (int / string: <required>) — время между снимками. Это может быть либо целое число секунд, либо строка в формате Go, описывающая длительность (например, 24 часа).

  • path_prefix (string: <required>) — для параметра storage_type=local указывается каталог, в который будут записываться снимки. Для типов облачного хранилища указывается путь в бакете для снимков. Для типов local и aws-s3 завершающий символ / необязателен.

  • enabled (bool: true) - флаг включения/выключения автозагрузки.

  • file_prefix (string: starvault-snapshot) - в пределах указанного префикса каталога или сегмента path_prefix имя файла или объекта для файлов снимков будет начинаться с этой строки.

  • retain (int: 1)- сколько снимков следует сохранить; при записи снимка, если уже сохранено больше снимков, чем это число, самые старые будут удалены.

Локальное хранилище

  • local_max_space (int: <required>)- максимальное пространство в байтах, используемое для всех снимков с заданными параметрами file_prefix в path_prefix каталоге. Попытки создания снимков завершатся неудачей, если в этом объеме будет недостаточно места.

Облачное хранилище S3

  • aws_s3_upload_timeout(int / string: <required>) - время ожидания хранилища S3.

  • aws_s3_bucket (string: <required>) - S3-хранилище для записи снимков.

  • aws_s3_region (string: <required>) - региональный сегмент AWS находится в системе.

  • aws_secret_access_key (string) - секретный ключ доступа AWS.

  • aws_access_key_id (string) - идентификатор ключа доступа AWS.

  • aws_s3_endpoint (string) - конечная точка AWS.

  • aws_ca_certificate (string) - доверенный CA сертификат для проверки TLS эндпоинта S3.

  • aws_s3_disable_tls (bool) - отключите TLS для конечной точки S3. Это следует использовать только в целях тестирования, как правило, в сочетании с aws_s3_endpoint.

  • aws_s3_force_path_style (bool) - используйте стиль URL-адреса конечной точки/бакета вместо bucket.endpoint. Это может потребоваться при настройке aws_s3_endpoint.

  • aws_s3_insecure_skip_verify- флаг отключения проверки сертификата TLS эндпоинта S3.

    Небезопасно! Рекомендуется использовать только для тестирования.

  • aws_s3_enable_kms (bool) - используйте KMS для шифрования содержимого корзины. Для использования шифрования KMS соответствующая учетная запись AWS должна иметь следующие разрешения:

  • aws_s3_server_side_encryption (bool)- Использовать AES256 для шифрования содержимого корзины. Нельзя использовать с aws_s3_enable_kmsпараметром.

  • aws_s3_kms_key (string)- Используйте именованный ключ KMS, когдаaws_s3_enable_kms=true

1.3.2.2. Список конфигураций авто-снимков

Данная конечная точка отображает список всех конфигураций.

Метод Путь

GET

/sys/storage/raft/snapshot-auto/config?list=true

Пример запроса:
curl \
    --header "X-Vault-Token: ..." \
    --request GET \
    http://127.0.0.1:8200/v1/sys/storage/raft/snapshot-auto/config?list=true
Пример ответа:
        "snapshots": {
            "04503638-5352-70b4-9d38-e9539ca1faf3": {
                "snapshot_end": "2026-03-25 09:06:35",
                "snapshot_start": "2026-03-25 09:06:35",
                "snapshot_status": "success",
                "snapshot_url": "/opt/starvault/snapshots/local-test/starvault-snapshot-20260325-090635.snap"
            },
            "08a62b88-b194-5cc8-a4a0-600de080f92a": {
                "snapshot_end": "2026-03-25 09:10:37",
                "snapshot_start": "2026-03-25 09:10:37",
                "snapshot_status": "success",
                "snapshot_url": "/opt/starvault/snapshots/local-test/starvault-snapshot-20260325-091037.snap"
            },
            "d3e2f005-3ff3-4f90-2218-e795d279a58a": {
                "snapshot_end": "2026-03-25 09:09:38",
                "snapshot_start": "2026-03-25 09:09:38",
                "snapshot_status": "success",
                "snapshot_url": "/opt/starvault/snapshots/local-test/starvault-snapshot-20260325-090938.snap"
            },
            "e8bbf1e9-c1af-ac13-1fd4-bc1dca878c9d": {
                "snapshot_end": "2026-03-25 09:08:39",
                "snapshot_start": "2026-03-25 09:08:39",
                "snapshot_status": "success",
                "snapshot_url": "/opt/starvault/snapshots/local-test/starvault-snapshot-20260325-090839.snap"
            },
            "f1feb570-a6c8-d70e-a67e-4a67b27b22bf": {
                "snapshot_end": "2026-03-25 09:07:38",
                "snapshot_start": "2026-03-25 09:07:38",
                "snapshot_status": "success",
                "snapshot_url": "/opt/starvault/snapshots/local-test/starvault-snapshot-20260325-090738.snap"
            }
        }
1.3.2.3. Чтение конфигурации автоматических снимков

Данная конечная точка позволяет вывести параметры конфигурации.

Метод Путь

GET

/sys/storage/raft/snapshot-auto/config/<config-name>

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    http://127.0.0.1:8200/v1/sys/storage/raft/snapshot-auto/config/config1
Пример ответа:
"data": {
  "enabled": true,
  "file_prefix": "",
  "interval": 60,
  "last_snapshot_error": "",
  "last_snapshot_status": "success",
  "local_max_space": 10240000,
  "name": "local-test",
  "path_prefix": "/opt/starvault/snapshots/local-test",
  "retain": 7,
  "storage_type": "local"
  }
1.3.2.4. Удаление конфигурации автоматических снимков

Данная конечная точка позволяет удалить выбранную конфигурацию.

Метод Путь

DELETE

/sys/storage/raft/snapshot-auto/config/<config-name>?delete_snapshots=false

  • delete_snapshots (bool) - флаг отвечающий за удаление снимков. Если параметр не передан или = false, то снимки не удаляются при удалении конфигурации, если флаг = true, то конфигурация удаляется вместе со всеми связанными снимками.

Пример запроса без удаления снимков:
$ curl \
    --header "X-Vault-Token: ..." \
    --request DELETE \
    http://127.0.0.1:8200/v1/sys/storage/raft/snapshot-auto/config/config1
Пример запроса с удалением снимков:
$ curl \
    --header "X-Vault-Token: ..." \
    --request DELETE \
    http://127.0.0.1:8200/v1/sys/storage/raft/snapshot-auto/config/config1?delete_snapshots=true
1.3.2.5. Получение списка снимков, полученных по конфигурации автоматического создания снимков

Данная конечная точка возвращает статус выбранной конфигурации.

Метод Путь

GET

/sys/storage/raft/snapshot-auto/config/<config-name>/list?list=true

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    http://127.0.0.1:8200/v1/sys/storage/raft/snapshot-auto/config/config1/list?list=true
Пример ответа:
{
  "snapshot_start": "2026-03-24T11:58:45.705Z",
  "snapshot_end": "2026-03-24T11:58:45.705Z",
  "snapshot_url": "string",
  "snapshot_error": "string",
  "snapshot_status": "succes"
}

1.3.3. Восстановление Raft из снимка

Устанавливает предоставленный снимок, возвращая кластер в состояние, определенное в нем. Недоступно, если Raft используется исключительно для ha_storage.

Метод Путь

POST

/sys/storage/raft/snapshot

1.3.3.1. Большие снимки Raft

Создание и восстановление снимков Raft может превышать стандартные и рекомендуемые настройки таймаута OpenBao. Переменная окружения VAULT_CLIENT_TIMEOUT может быть использована для увеличения времени на создание или восстановление снимка.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request POST \
    --data-binary @raft.snap \
    http://127.0.0.1:8200/v1/sys/storage/raft/snapshot

1.3.4. Принудительное восстановление кластера Raft с использованием снимка

Устанавливает предоставленный снимок, возвращая кластер в состояние, заданное в нем. Это то же самое, что и запись, /sys/storage/raft/snapshot за исключением того, что при этом обходят проверки соответствия ключей autounseal или shamir с данными снимка. Недоступно, если Raft используется исключительно для ha_storage.

Метод Путь

POST

/sys/storage/raft/snapshot-force

Пример запроса:
curl \
  --header "X-Vault-Token: ..." \
  --request POST \
  --data-binary @Raft.snap \
  http://127.0.0.1:8200/v1/sys/storage/raft/snapshot-force

1.4. Начальная загрузка узла HA

Когда узел использует Raft исключительно для ha_storage, эта конечная точка используется для активации Raft. Это аналогично использованию sys/init для инициализации хранилища, поскольку выполняется только один раз для каждого кластера, после чего starvault operator raft join используется для добавления новых узлов в кластер Raft.

Метод

Путь

POST

/sys/storage/raft/bootstrap

Пример запроса:
curl \
  --header "X-Vault-Token: ..." \
  --request POST \
  http://127.0.0.1:8200/v1/sys/storage/raft/bootstrap

2. /sys/storage/raft/autopilot

Конечные точки /sys/storage/raft/autopilot используются для управления кластерами Raft с помощью автопилота с бэкендом встроенного хранилища StarVault.

2.1. Получение состояния кластера

Данная конечная точка используется для получения состояния кластера Raft. Описание выходных данных см. на странице документации.

Метод

Путь

GET

/sys/storage/raft/autopilot/state

Пример запроса:
curl \
  --header "X-Vault-Token: ..." \
  http://127.0.0.1:8200/v1/sys/storage/raft/autopilot/state
Пример ответа:
{
  "healthy": true,
  "failure_tolerance": 1,
  "servers": {
    "raft1": {
      "id": "raft1",
      "name": "raft1",
      "address": "127.0.0.1:8201",
      "node_status": "alive",
      "last_contact": "0s",
      "last_term": 3,
      "last_index": 459,
      "healthy": true,
      "stable_since": "2021-03-19T20:14:11.831678-04:00",
      "status": "leader",
      "meta": null
    },
    "raft2": {
      "id": "raft2",
      "name": "raft2",
      "address": "127.0.0.2:8201",
      "node_status": "alive",
      "last_contact": "516.49595ms",
      "last_term": 3,
      "last_index": 459,
      "healthy": true,
      "stable_since": "2021-03-19T20:14:19.831931-04:00",
      "status": "voter",
      "meta": null
    },
    "raft3": {
      "id": "raft3",
      "name": "raft3",
      "address": "127.0.0.3:8201",
      "node_status": "alive",
      "last_contact": "196.706591ms",
      "last_term": 3,
      "last_index": 459,
      "healthy": true,
      "stable_since": "2021-03-19T20:14:25.83565-04:00",
      "status": "voter",
      "meta": null
    }
  },
  "leader": "raft1",
  "voters": ["raft1", "raft2", "raft3"],
  "non_voters": null
}

2.2. Получение конфигурации

Данная конечная точка используется для получения конфигурации подсистемы автопилота встроенного хранилища.

Метод

Путь

GET

/sys/storage/raft/autopilot/configuration

Пример запроса:
curl \
  --header "X-Vault-Token: ..." \
  http://127.0.0.1:8200/v1/sys/storage/raft/autopilot/configuration
Пример ответа:
{
  "cleanup_dead_servers": false,
  "dead_server_last_contact_threshold": "24h0m0s",
  "last_contact_threshold": "10s",
  "max_trailing_logs": 1000,
  "min_quorum": 0,
  "server_stabilization_time": "10s"
}

2.3. Установка конфигурации

Данная конечная точка используется для изменения конфигурации подсистемы автопилота встроенного хранилища.

Метод

Путь

POST

/sys/storage/raft/autopilot/configuration

2.3.1. Параметры

  • cleanup_dead_servers (bool: false) - управляет удалением неработающих серверов из списка пиров Raft периодически или при подключении нового сервера. Требуется min_quorum также настроить этот параметр.

  • last_contact_threshold (string: "10s") - ограничение на время, в течение которого сервер может оставаться без контакта с лидером, прежде чем он будет признан нездоровым.

  • dead_server_last_contact_threshold (string: "24h") – ограничение на время, в течение которого сервер может оставаться без связи с лидером, прежде чем будет считаться неработоспособным. Действует только при значении true в cleanup_dead_servers. Значение не может быть меньше 1 мин.

  • max_trailing_logs (int: 1000) - количество записей в журнале Raft, отстающих от сервера, прежде чем он будет признан неработоспособным.

  • min_quorum (int: 3) – минимальное количество серверов, разрешенное в кластере, при котором автопилот сможет удалить неиспользуемые серверы. Должно быть не менее 3. Применимо только для голосующих узлов.

  • server_stabilization_time (string: "10s") - минимальное время, в течение которого сервер должен находиться в стабильном, работоспособном состоянии, прежде чем его можно будет добавить в кластер.

Пример тела запроса:
{
  "cleanup_dead_servers": true,
  "last_contact_threshold": "10s",
  "dead_server_last_contact_threshold": "24h",
  "max_trailing_logs": "1000",
  "min_quorum": "3",
  "server_stabilization_time": "10s"
}
Пример запроса:
curl \
  --header "X-Vault-Token: ..." \
  --request POST \
  --data @payload.json \
  http://127.0.0.1:8200/v1/sys/storage/raft/autopilot/configuration