3.9 KiB
layout | page_title | sidebar_current | description |
---|---|---|---|
docs | Consul Snapshots (HTTP) | docs-agent-http-snapshots | The Snapshot endpoints are used to save and restore Consul's server state for disaster recovery. |
Snapshot HTTP Endpoint
The Snapshot endpoints are used to save and restore the state of the Consul servers for disaster recovery. Snapshots include all state managed by Consul's Raft consensus protocol, including:
- Key/Value Entries
- Service Catalog
- Prepared Queries
- Sessions
- ACLs
Available in Consul 0.7.1 and later, these endpoints allow for atomic, point-in-time snapshots of the above data in a format that can be saved externally. Snapshots can then be used to restore the server state into a fresh cluster of Consul servers in the event of a disaster.
The following endpoints are supported:
/v1/snapshot
: Save and restore Consul server state
These endpoints do not support blocking queries. Saving snapshots uses the consistent mode by default and stale mode is supported.
The endpoints support the use of ACL Tokens. Because snapshots contain all server state, including ACLs, a management token is required to perform snapshot operations if ACLs are enabled.
/v1/snapshot
The snapshot endpoint supports the GET
and PUT
methods.
GET Method
When using the GET
method, Consul will perform an atomic, point-in-time
snapshot of the Consul server state.
Snapshots are exposed as gzipped tar archives which internally contain the Raft metadata required to restore, as well as a binary serialized version of the Consul server state. The contents are covered internally by SHA-256 hashes. These hashes are verified during snapshot restore operations. The structure of the archive is internal to Consul and not intended to be used other than for restore operations. In particular, the archives are not designed to be modified before a restore.
By default, the datacenter of the agent is queried; however, the dc
can be
provided using the ?dc=
query parameter.
By default, snapshots use consistent mode which means the request is internally
forwarded to the cluster leader, and leadership is checked before performing the
snapshot. If stale
is specified using the ?stale
query parameter, then any
server can handle the request and the results may be arbitrarily stale. To support
bounding the acceptable staleness of snapshots, responses provide the X-Consul-LastContact
header containing the time in milliseconds that a server was last contacted by
the leader node. The X-Consul-KnownLeader
header also indicates if there is a
known leader. These can be used by clients to gauge the staleness of a snapshot
and take appropriate action. The stale mode is particularly useful from taking a
snapshot of a cluster in a failed state with no current leader.
If ACLs are enabled, the client will need to supply an ACL Token with management privileges.
The return code is 200 on success, and the snapshot will be returned in the body
as a gzipped tar archive. In addition to the stale-related headers described above,
the X-Consul-Index
header will also be set to the index at which the snapshot took
place.
PUT Method
When using the PUT
method, Consul will atomically restore a point-in-time
snapshot of the Consul server state.
Restores involve a potentially dangerous low-level Raft operation that is not designed to handle server failures during a restore. This operation is primarily intended to be used when recovering from a disaster, restoring into a fresh cluster of Consul servers.
By default, the datacenter of the agent is targeted; however, the dc
can be
provided using the ?dc=
query parameter.
If ACLs are enabled, the client will need to supply an ACL Token with management privileges.
The body of the request should be a snapshot archive returned from a previous call
to the GET
method.
The return code is 200 on success.