»/sys/storage/raft/autopilot

The /sys/storage/raft/autopilot endpoints are used to manage raft clusters using autopilot with Vault's Integrated Storage backend. For a tutorial on integrated storage autopilot, see the Learn guide here.

»Get Cluster State

This endpoint is used to retrieve the raft cluster state. See the docs page for a description of the output.

MethodPath
GET/sys/storage/raft/autopilot/state

»Sample Request

$ curl \
    --header "X-Vault-Token: ..." \
    http://127.0.0.1:8200/v1/sys/storage/raft/autopilot/state
$ curl \    --header "X-Vault-Token: ..." \    http://127.0.0.1:8200/v1/sys/storage/raft/autopilot/state

»Sample Response

{
  "Healthy": true,
  "FailureTolerance": 1,
  "Servers": {
    "raft1": {
      "ID": "raft1",
      "Name": "raft1",
      "Address": "127.0.0.1:8201",
      "NodeStatus": "alive",
      "LastContact": "0s",
      "LastTerm": 3,
      "LastIndex": 459,
      "Healthy": true,
      "StableSince": "2021-03-19T20:14:11.831678-04:00",
      "Status": "leader",
      "Meta": null
    },
    "raft2": {
      "ID": "raft2",
      "Name": "raft2",
      "Address": "127.0.0.2:8201",
      "NodeStatus": "alive",
      "LastContact": "516.49595ms",
      "LastTerm": 3,
      "LastIndex": 459,
      "Healthy": true,
      "StableSince": "2021-03-19T20:14:19.831931-04:00",
      "Status": "voter",
      "Meta": null
    },
    "raft3": {
      "ID": "raft3",
      "Name": "raft3",
      "Address": "127.0.0.3:8201",
      "NodeStatus": "alive",
      "LastContact": "196.706591ms",
      "LastTerm": 3,
      "LastIndex": 459,
      "Healthy": true,
      "StableSince": "2021-03-19T20:14:25.83565-04:00",
      "Status": "voter",
      "Meta": null
    }
  },
  "Leader": "raft1",
  "Voters": ["raft1", "raft2", "raft3"],
  "NonVoters": null
}
{  "Healthy": true,  "FailureTolerance": 1,  "Servers": {    "raft1": {      "ID": "raft1",      "Name": "raft1",      "Address": "127.0.0.1:8201",      "NodeStatus": "alive",      "LastContact": "0s",      "LastTerm": 3,      "LastIndex": 459,      "Healthy": true,      "StableSince": "2021-03-19T20:14:11.831678-04:00",      "Status": "leader",      "Meta": null    },    "raft2": {      "ID": "raft2",      "Name": "raft2",      "Address": "127.0.0.2:8201",      "NodeStatus": "alive",      "LastContact": "516.49595ms",      "LastTerm": 3,      "LastIndex": 459,      "Healthy": true,      "StableSince": "2021-03-19T20:14:19.831931-04:00",      "Status": "voter",      "Meta": null    },    "raft3": {      "ID": "raft3",      "Name": "raft3",      "Address": "127.0.0.3:8201",      "NodeStatus": "alive",      "LastContact": "196.706591ms",      "LastTerm": 3,      "LastIndex": 459,      "Healthy": true,      "StableSince": "2021-03-19T20:14:25.83565-04:00",      "Status": "voter",      "Meta": null    }  },  "Leader": "raft1",  "Voters": ["raft1", "raft2", "raft3"],  "NonVoters": null}

»Get Configuration

This endpoint is used to get the configuration of the autopilot subsystem of integrated storage.

MethodPath
GET/sys/storage/raft/autopilot/configuration

»Sample Request

$ curl \
    --header "X-Vault-Token: ..." \
    http://127.0.0.1:8200/v1/sys/storage/raft/autopilot/configuration
$ curl \    --header "X-Vault-Token: ..." \    http://127.0.0.1:8200/v1/sys/storage/raft/autopilot/configuration

»Sample Response

{
  "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"
}
{  "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"}

»Set Configuration

This endpoint is used to modify the configuration of the autopilot subsystem of integrated storage.

MethodPath
POST/sys/storage/raft/autopilot/configuration

»Parameters

  • cleanup_dead_servers (bool: false) - Controls whether to remove dead servers from the Raft peer list periodically or when a new server joins. This requires that min-quorum is also set.

  • last_contact_threshold (string: "10s") - Limit on the amount of time a server can go without leader contact before being considered unhealthy.

  • dead_server_last_contact_threshold (string: "24h") - Limit on the amount of time a server can go without leader contact before being considered failed. This takes effect only when cleanup_dead_servers is set.

  • max_trailing_logs (int: 1000) - Amount of entries in the Raft Log that a server can be behind before being considered unhealthy.

  • min_quorum (int: 3) - Minimum number of servers allowed in a cluster before autopilot can prune dead servers. This should at least be 3. Applicable only for voting nodes.

  • server_stabilization_time (string: "10s") - Minimum amount of time a server must be in a stable, healthy state before it can be added to the cluster.

»Sample Request

$ curl \
    --header "X-Vault-Token: ..." \
    --request POST \
    --data @payload.json \
    http://127.0.0.1:8200/v1/sys/storage/raft/autopilot/configuration
$ curl \    --header "X-Vault-Token: ..." \    --request POST \    --data @payload.json \    http://127.0.0.1:8200/v1/sys/storage/raft/autopilot/configuration

»Sample Payload

{
  "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"
}
{  "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"}