operator raft
This command groups subcommands for operators to manage the Integrated Storage Raft backend.
join
This command is used to join a new node as a peer to the Raft cluster. In order to join, there must be at least one existing member of the cluster. If Shamir seal is in use, then unseal keys are to be supplied before or after the join process, depending on whether it's being used exclusively for HA.
If raft is used for storage
, the node must be joined before unsealing and the
leader-api-addr
argument must be provided. If raft is used for ha_storage
,
the node must be first unsealed before joining and the leader-api-addr
must
not be provided.
The join
command also allows operators to specify cloud auto-join configuration
instead of a static IP address or hostname. When provided, Vault will attempt to
automatically discover and resolve potential leader addresses based on the provided
auto-join configuration.
Vault uses go-discover to support the auto-join functionality. Please see the go-discover README for details on the format.
By default, Vault will attempt to reach discovered peers using HTTPS and port 8200.
Operators may override these through the --auto-join-scheme
and --auto-join-port
CLI flags respectively.
Parameters
The following flags are available for the operator raft join
command.
-leader-ca-cert
(string: "")
- CA cert to communicate with Raft leader.-leader-client-cert
(string: "")
- Client cert to authenticate to Raft leader.-leader-client-key
(string: "")
- Client key to authenticate to Raft leader.-non-voter
(bool: false) (enterprise)
- This flag is used to make the server not participate in the Raft quorum, and have it only receive the data replication stream. This can be used to add read scalability to a cluster in cases where a high volume of reads to servers are needed. The default is false. Seeretry_join_as_non_voter
for the equivalent config option when usingretry_join
stanzas instead.-retry
(bool: false)
- Continuously retry joining the Raft cluster upon failures. The default is false.
Note: Please be aware that the content (not the path to the file) of the certificate or key is expected for these parameters: -leader-ca-cert
, -leader-client-cert
, -leader-client-key
.
list-peers
This command is used to list the full set of peers in the Raft cluster.
Example output
Use the output of list-peers
to ensure that your cluster is in an expected state.
If you've removed a server using remove-peer
, the server should no longer be
listed in the list-peers
output. If you've added a server using add-peer
or
through retry_join
, check the list-peers
output to see that it has been added
to the cluster and (if the node has not been added as a non-voter)
it has been promoted to a voter.
remove-peer
This command is used to remove a node from being a peer to the Raft cluster. In certain cases where a peer may be left behind in the Raft configuration even though the server is no longer present and known to the cluster, this command can be used to remove the failed server so that it is no longer affects the Raft quorum.
Note
Once a node is removed, its Raft data needs to be deleted before it may be joined back into an existing cluster. This requires shutting down the Vault process, deleting the data, then restarting the Vault process on the removed node.snapshot
This command groups subcommands for operators interacting with the snapshot
functionality of the integrated Raft storage backend. There are 2 subcommands
supported: save
and restore
.
snapshot save
Takes a snapshot of the Vault data. The snapshot can be used to restore Vault to the point in time when a snapshot was taken.
Note: Snapshot is not supported when Raft is used only for ha_storage
.
snapshot restore
Restores a snapshot of Vault data taken with vault operator raft snapshot save
.
snapshot inspect
Inspects a snapshot file taken from a Vault Raft cluster and prints a table showing the number of keys and the amount of space used.
For example:
autopilot
This command groups subcommands for operators interacting with the autopilot
functionality of the integrated Raft storage backend. There are 3 subcommands
supported: get-config
, set-config
and state
.
For a more detailed overview of autopilot features, see the concepts page.
autopilot state
Displays the state of the raft cluster under integrated storage as seen by autopilot. It shows whether autopilot thinks the cluster is healthy or not.
State includes a list of all servers by nodeID and IP address.
Example output
The "Failure Tolerance" of a cluster is the number of nodes in the cluster that could fail gradually without causing an outage.
When verifying the health of your cluster, check the following fields of each server:
- Healthy: whether Autopilot considers this node healthy or not
- Status: the voting status of the node. This will be
voter
,leader
, ornon-voter
. - Last Index: the index of the last applied Raft log. This should be close to the "Last Index" value of the leader.
- Version: the version of Vault running on the server
- Node Type: the type of node. On CE, this will always be
voter
. See below for an explanation of Enterprise node types.
Vault Enterprise will include additional output related to automated upgrades, optimistic failure tolerance, and redundancy zones.
Example Vault enterprise output
"Optimistic Failure Tolerance" describes the number of healthy active and back-up voting servers that can fail gradually without causing an outage.
Enterprise Node Types
voter
: The server is a Raft voter and contributing to quorum.read-replica
: The server is not a Raft voter, but receives a replica of all data.zone-voter
: The main Raft voter in a redundancy zone.zone-extra-voter
: An additional Raft voter in a redundancy zone.zone-standby
: A non-voter in a redundancy zone that can be promoted to a voter, if needed.
autopilot get-config
Returns the configuration of the autopilot subsystem under integrated storage.
autopilot set-config
Modify the configuration of the autopilot subsystem under integrated storage.
Flags applicable to this command are the following:
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 thatmin-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 whencleanup_dead_servers
is set. When adding new nodes to your cluster, thedead_server_last_contact_threshold
needs to be larger than the amount of time that it takes to load a Raft snapshot, otherwise the newly added nodes will be removed from your cluster before they have finished loading the snapshot and starting up. If you are using an HSM, yourdead_server_last_contact_threshold
needs to be larger than the response time of the HSM.
Warning
We strongly recommend keeping dead_server_last_contact_threshold
at a high
duration, such as a day, as it being too low could result in removal of nodes
that aren't actually dead
max-trailing-logs
(int: 1000)
- Amount of entries in the Raft Log that a server can be behind before being considered unhealthy. If this value is too low, it can cause the cluster to lose quorum if a follower falls behind. This value only needs to be increased from the default if you have a very high write load on Vault and you see that it takes a long time to promote new servers to becoming voters. This is an unlikely scenario and most users should not modify this value.min-quorum
(int)
- The minimum number of servers that should always be present in a cluster. Autopilot will not prune servers below this number. There is no default for this value and it should be set to the expected number of voters in your cluster whencleanup_dead_servers
is set astrue
. Use the quorum size guidance to determine the proper minimum quorum size for your cluster.server-stabilization-time
(string: "10s")
- Minimum amount of time a server must be in a healthy state before it can become a voter. Until that happens, it will be visible as a peer in the cluster, but as a non-voter, meaning it won't contribute to quorum.disable-upgrade-migration
(bool: false)
- Controls whether to disable automated upgrade migrations, an Enterprise-only feature.