6be8e7adca
* autopilot cleanup and parameter typo cleanup * clarify DR AP lives now * typo myself cleanup * trigger ci Co-authored-by: aphorise <aphorise@gmail.com> Co-authored-by: taoism4504 <loann@hashicorp.com>
253 lines
6.5 KiB
Plaintext
253 lines
6.5 KiB
Plaintext
---
|
|
layout: api
|
|
page_title: /sys/storage/raft/autopilot - HTTP API
|
|
description: |-
|
|
|
|
The `/sys/storage/raft/autopilot` endpoints are used to manage raft clusters using autopilot with Vault's Integrated Storage backend.
|
|
|
|
---
|
|
|
|
# `/sys/storage/raft/autopilot`
|
|
|
|
The `/sys/storage/raft/autopilot` endpoints are used to manage raft clusters using autopilot
|
|
with Vault's [Integrated Storage backend](/docs/internals/integrated-storage).
|
|
Refer to the [Integrated Storage Autopilot](https://learn.hashicorp.com/tutorials/vault/raft-autopilot?in=vault/raft) tutorial to learn how to manage raft clusters using autopilot.
|
|
|
|
## Get Cluster State
|
|
|
|
This endpoint is used to retrieve the raft cluster state. See the [docs page](/docs/commands/operator/raft#autopilot-state) for a description of the output.
|
|
|
|
| Method | Path |
|
|
| :----- | :---------------------------------- |
|
|
| `GET` | `/sys/storage/raft/autopilot/state` |
|
|
|
|
### Sample Request
|
|
|
|
```shell-session
|
|
$ curl \
|
|
--header "X-Vault-Token: ..." \
|
|
http://127.0.0.1:8200/v1/sys/storage/raft/autopilot/state
|
|
```
|
|
|
|
### Sample Response
|
|
|
|
```json
|
|
{
|
|
"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
|
|
}
|
|
```
|
|
|
|
### Enterprise Only
|
|
Vault Enterprise will include additional output in its API response to indicate the current state of redundancy zones,
|
|
automated upgrade progress (if any), and optimistic failure tolerance.
|
|
|
|
#### Sample Response (Enterprise)
|
|
```json
|
|
{
|
|
"failure_tolerance": 0,
|
|
"healthy": true,
|
|
"leader": "vault_1",
|
|
"optimistic_failure_tolerance": 3,
|
|
"redundancy_zones": {
|
|
"a": {
|
|
"servers": [
|
|
"vault_1",
|
|
"vault_2",
|
|
"vault_5"
|
|
],
|
|
"voters": [
|
|
"vault_1"
|
|
],
|
|
"failure_tolerance": 2
|
|
},
|
|
"b": {
|
|
"servers": [
|
|
"vault_3",
|
|
"vault_4"
|
|
],
|
|
"voters": [
|
|
"vault_3"
|
|
],
|
|
"failure_tolerance": 1
|
|
}
|
|
},
|
|
"upgrade_info": {
|
|
"other_version_non_voters": [
|
|
"vault_2",
|
|
"vault_4"
|
|
],
|
|
"other_version_voters": [
|
|
"vault_1",
|
|
"vault_3"
|
|
],
|
|
"redundancy_zones": {
|
|
"a": {
|
|
"target_version_non_voters": [
|
|
"vault_5"
|
|
],
|
|
"other_version_voters": [
|
|
"vault_1"
|
|
],
|
|
"other_version_non_voters": [
|
|
"vault_2"
|
|
]
|
|
},
|
|
"b": {
|
|
"other_version_voters": [
|
|
"vault_3"
|
|
],
|
|
"other_version_non_voters": [
|
|
"vault_4"
|
|
]
|
|
}
|
|
},
|
|
"status": "await-new-voters",
|
|
"target_version": "1.12.0",
|
|
"target_version_non_voters": [
|
|
"vault_5"
|
|
]
|
|
},
|
|
"voters": [
|
|
"vault_1",
|
|
"vault_3"
|
|
]
|
|
}
|
|
```
|
|
|
|
## Get Configuration
|
|
|
|
This endpoint is used to get the configuration of the autopilot subsystem of Integrated Storage.
|
|
|
|
| Method | Path |
|
|
| :----- | :------------------------------------------ |
|
|
| `GET` | `/sys/storage/raft/autopilot/configuration` |
|
|
|
|
### Sample Request
|
|
|
|
```shell-session
|
|
$ curl \
|
|
--header "X-Vault-Token: ..." \
|
|
http://127.0.0.1:8200/v1/sys/storage/raft/autopilot/configuration
|
|
```
|
|
|
|
### Sample Response
|
|
|
|
```json
|
|
{
|
|
"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",
|
|
"disable_upgrade_migration": true
|
|
}
|
|
```
|
|
|
|
Note that in the above sample response, `disable_upgrade_migration` is an Enterprise-only field.
|
|
|
|
## Set Configuration
|
|
|
|
This endpoint is used to modify the configuration of the autopilot subsystem of Integrated Storage.
|
|
|
|
| Method | Path |
|
|
| :----- | :------------------------------------------ |
|
|
| `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 `true`.
|
|
|
|
- `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.
|
|
|
|
- `disable_upgrade_migration` `(bool: false)` - Disables automatically upgrading Vault using
|
|
autopilot. (Enterprise-only)
|
|
|
|
### Sample Request
|
|
|
|
```shell-session
|
|
$ curl \
|
|
--header "X-Vault-Token: ..." \
|
|
--request POST \
|
|
--data @payload.json \
|
|
http://127.0.0.1:8200/v1/sys/storage/raft/autopilot/configuration
|
|
```
|
|
|
|
### Sample Payload
|
|
|
|
```json
|
|
{
|
|
"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",
|
|
"disable_upgrade_migration": true
|
|
}
|
|
```
|
|
|
|
Note that in the above sample payload, `disable_upgrade_migration` is an Enterprise-only field.
|