Consul Force Leave
Command: consul force-leave
Corresponding HTTP API Endpoint: [PUT] /v1/agent/force-leave/:node
The force-leave
command forces a member of a Consul cluster to enter the
"left" state. The purpose of this method is to force-remove a node that has failed or
was shutdown without a graceful leave.
Consul periodically tries to reconnect to "failed" nodes in case failure was due
to a network partition. After some configured amount of time (by default 72 hours),
Consul will reap "failed" nodes and stop trying to reconnect. The force-leave
command can be used to transition the "failed" nodes to a "left" state more
quickly, as reported by consul members
.
This can be particularly useful for a node that was running as a server, as it will eventually be removed from the Raft configuration by the leader.
Note that for force-leave
to take full effect the target node's agent must have
shutdown permanently. If the agent is alive and reachable then it will not be removed
from the datacenter's member list nor from the raft configuration. Additionally,
if the agent returns after transitioning to the "left" state, but before it is reaped
from the member list, then it will rejoin the cluster.
The table below shows this command's required ACLs. Configuration of blocking queries and agent caching are not supported from commands, but may be from the corresponding HTTP endpoint.
ACL Required |
---|
operator:write |
Usage
Usage: consul force-leave [options] node
API Options
-ca-file=<value>
- Path to a CA file to use for TLS when communicating with Consul. This can also be specified via theCONSUL_CACERT
environment variable.-ca-path=<value>
- Path to a directory of CA certificates to use for TLS when communicating with Consul. This can also be specified via theCONSUL_CAPATH
environment variable.-client-cert=<value>
- Path to a client cert file to use for TLS whenverify_incoming
is enabled. This can also be specified via theCONSUL_CLIENT_CERT
environment variable.-client-key=<value>
- Path to a client key file to use for TLS whenverify_incoming
is enabled. This can also be specified via theCONSUL_CLIENT_KEY
environment variable.-http-addr=<addr>
- Address of the Consul agent with the port. This can be an IP address or DNS address, but it must include the port. This can also be specified via theCONSUL_HTTP_ADDR
environment variable. In Consul 0.8 and later, the default value is http://127.0.0.1:8500, and https can optionally be used instead. The scheme can also be set to HTTPS by setting the environment variableCONSUL_HTTP_SSL=true
. This may be a unix domain socket usingunix:///path/to/socket
if the agent is configured to listen that way.-tls-server-name=<value>
- The server name to use as the SNI host when connecting via TLS. This can also be specified via theCONSUL_TLS_SERVER_NAME
environment variable.-token=<value>
- ACL token to use in the request. This can also be specified via theCONSUL_HTTP_TOKEN
environment variable. If unspecified, the query will default to the token of the Consul agent at the HTTP address.-token-file=<value>
- File containing the ACL token to use in the request instead of one specified via the-token
argument orCONSUL_HTTP_TOKEN
environment variable. This can also be specified via theCONSUL_HTTP_TOKEN_FILE
environment variable.
Examples
Remove a node named ec2-001-staging
from the local agent's datacenter:
When run on a server that is part of a
WAN gossip pool,
force-leave
can remove failed servers in other datacenters from the WAN pool.
The identifying node-name in a WAN pool is [node-name].[datacenter]
.
Therefore, to remove a failed server node named server1
from
datacenter us-east1
, run: