Consul通过一个非常简单易用的命令行界面(CLI)进行控制。Consul只是一个单一的命令行应用程序:Consul。 然后,这个应用程序将取代诸如“ agent”或“members”的子命令。子命令的完整列表位于左侧的导航栏中。
Consul CLI是一个运行良好的命令行应用程序。在错误的情况下,返回非零退出状态。就像你最期待的那样它也会响应-h
和--help
。而一些需要输入的命令接受“- ”作为参数来告诉Consul从stdin读取输入。
要随时查看可用命令的列表,只需运行不带参数的consul:
[root@localhost ~]# consul
Usage: consul [--version] [--help] <command> [<args>]
Available commands are:
agent Runs a Consul agent
catalog Interact with the catalog
event Fire a new event
exec Executes a command on Consul nodes
force-leave Forces a member of the cluster to enter the "left" state
info Provides debugging information for operators.
join Tell Consul agent to join cluster
keygen Generates a new encryption key
keyring Manages gossip layer encryption keys
kv Interact with the key-value store
leave Gracefully leaves the Consul cluster and shuts down
lock Execute a command holding a lock
maint Controls node or service maintenance mode
members Lists the members of a Consul cluster
monitor Stream logs from a Consul agent
operator Provides cluster-level tools for Consul operators
reload Triggers the agent to reload configuration files
rtt Estimates network round trip time between nodes
snapshot Saves, restores and inspects snapshots of Consul server state
validate Validate config files/directories
version Prints the Consul version
watch Watch for changes in Consul
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
要获得任何特定命令的帮助,请将-h
标志传递给相关的子命令。例如,查看有关join
子命令的帮助:
[root@localhost ~]# consul join -h
Usage: consul join [options] address ...
Tells a running Consul agent (with "consul agent") to join the cluster
by specifying at least one existing member.
HTTP API Options
-ca-file=<value>
Path to a CA file to use for TLS when communicating with Consul.
This can also be specified via the CONSUL_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 the
CONSUL_CAPATH environment variable.
-client-cert=<value>
Path to a client cert file to use for TLS when 'verify_incoming'
is enabled. This can also be specified via the CONSUL_CLIENT_CERT
environment variable.
-client-key=<value>
Path to a client key file to use for TLS when 'verify_incoming'
is enabled. This can also be specified via the CONSUL_CLIENT_KEY
environment variable.
-http-addr=<address>
The `address` and port of the Consul HTTP agent. The value can be
an IP address or DNS address, but it must also include the port.
This can also be specified via the CONSUL_HTTP_ADDR environment
variable. The default value is http://127.0.0.1:8500. The scheme
can also be set to HTTPS by setting the environment variable
CONSUL_HTTP_SSL=true.
-tls-server-name=<value>
The server name to use as the SNI host when connecting via
TLS. This can also be specified via the CONSUL_TLS_SERVER_NAME
environment variable.
-token=<value>
ACL token to use in the request. This can also be specified via the
CONSUL_HTTP_TOKEN environment variable. If unspecified, the query
will default to the token of the Consul agent at the HTTP address.
Command Options
-wan
Joins a server to another server in the WAN pool.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
自动完成
consul命令具有opt-in子命令自动完成功能,您可以使用consul -autocomplete-install
为shell启用。这样做后,您可以调用一个新的shell并使用该功能。
例如,假设在每条提示行的末尾键入一个制表符:
[root@localhost ~]# consul e
event exec
[root@localhost ~]# consul r
reload rtt
[root@localhost ~]# consul operator raft
list-peers remove-peer
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
环境变量
除CLI标志之外,Consul读取行为默认的环境变量。CLI标志总是优先于环境变量,但使用环境变量来配置Consul Agent通常是有帮助的,特别是配置管理和 初始化系统。
这些环境变量及其用途如下所述:
CONSUL_HTTP_ADDR
这是指定为URI的本地Consul Agent(不是远程服务器)的HTTP API地址:
CONSUL_HTTP_ADDR=127.0.0.1:8500
- 1
或者作为Unix套接字路径:
CONSUL_HTTP_ADDR=unix://var/run/consul_http.sock
- 1
CONSUL_HTTP_TOKEN
这是启用访问控制列表(ACL)时所需的API访问令牌,例如:
CONSUL_HTTP_TOKEN=aba7cbe5-879b-999a-07cc-2efd9ac0ffe
- 1
CONSUL_HTTP_AUTH
这指定HTTP基本访问凭据作为用户名:密码对:
CONSUL_HTTP_AUTH=operations:JPIMCmhDHzTukgO6
- 1
CONSUL_HTTP_SSL
这是一个布尔值(默认为false),用于启用HTTP API的HTTPS URI方案和SSL连接:
CONSUL_HTTP_SSL=true
- 1
CONSUL_HTTP_SSL_VERIFY
这是一个布尔值(默认为true)来指定SSL证书验证; 将此值设置为false不推荐用于生产用途。 开发目的示例:
CONSUL_HTTP_SSL_VERIFY=false
- 1
CONSUL_CACERT
与Consul通信时用于TLS的CA文件的路径。
CONSUL_CACERT=ca.crt
- 1
CONSUL_CAPATH
与Consul通信时用于TLS的CA证书目录的路径。
CONSUL_CAPATH=ca_certs/
- 1
CONSUL_CLIENT_CERT
启用verify_incoming时,用于TLS的客户端证书文件的路径。
CONSUL_CLIENT_CERT=client.crt
- 1
CONSUL_CLIENT_KEY
启用verify_incoming时,用于TLS的客户端密钥文件的路径。
CONSUL_CLIENT_KEY=client.key
- 1
CONSUL_TLS_SERVER_NAME
通过TLS连接时用作SNI主机的服务器名称。
CONSUL_TLS_SERVER_NAME=consulserver.domain
- 1
一、Consul Agent
Consul Agent是Consul的核心,负责执行维护会员信息,运行检查,宣布服务,处理查询等重要任务的 Agent。
由于这个命令的强大和灵活性,Consul Agent被记录在它自己的部分中。 有关如何使用此命令及其选项的更多信息,请参阅Consul Agent部分。
二、Consul Catalog
命令:consul catalog
catalog
命令用于通过命令行与Consul的目录进行交互。它暴露顶级命令来读取和过滤来自注册表的数据。
目录也可以通过HTTP API访问。
基本例子
列出所有数据中心:
[root@localhost ~]# consul catalog datacenters -http-addr=192.168.10.218:8500
dc1
- 1
- 2
列出所有节点:
[root@localhost ~]# consul catalog nodes -http-addr=192.168.10.218:8500
Node ID Address DC
consul-agent-1 e375cebc 192.168.10.218 dc1
consul-agent-2 5443e44f 192.168.10.221 dc1
consul-agent-3 35fb0664 192.168.10.222 dc1
consul-agent-client-1 dafdf95b 192.168.10.142 dc1
- 1
- 2
- 3
- 4
- 5
- 6
列出提供特定服务的所有节点:
[root@localhost ~]# consul catalog nodes -service=ad-ms-spring-cloud-consul-config-demo -http-addr=192.168.10.218:8500
Node ID Address DC
consul-agent-client-1 dafdf95b 192.168.10.142 dc1
- 1
- 2
- 3
列出所有服务:
[root@localhost ~]# consul catalog services -http-addr=192.168.10.218:8500
ad-ms-spring-cloud-consul-config-demo
ad-ms-spring-cloud-consul-discover-config-demo
consul
- 1
- 2
- 3
- 4
列出节点上的所有服务:
[root@localhost ~]# consul catalog services -node=consul-agent-client-1 -http-addr=192.168.10.218:8500
ad-ms-spring-cloud-consul-config-demo
ad-ms-spring-cloud-consul-discover-config-demo
- 1
- 2
- 3
有关更多示例,请查询子命令帮助或通过单击边栏中的某个链接查看子命令文档。
用法
用法:consul catalog <subcommand>
有关Consul版本的确切文档,请运行consul catalog -h
以查看完整的子命令列表。
[root@localhost ~]# consul catalog -h
Usage: consul catalog <subcommand> [options] [args]
This command has subcommands for interacting with Consul's catalog. The
catalog should not be confused with the agent, although the APIs and
responses may be similar.
Here are some simple examples, and more detailed examples are available
in the subcommands or the documentation.
List all datacenters:
$ consul catalog datacenters
List all nodes:
$ consul catalog nodes
List all services:
$ consul catalog services
For more examples, ask for subcommand help or view the documentation.
Subcommands:
datacenters Lists all known datacenters
nodes Lists all nodes in the given datacenter
services Lists all registered services in a datacenter
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
有关子命令的更多信息,示例和用法,请单击边栏中的子命令的名称或以下链接之一:
2.1 列出 Consul catalog所有的数据中心
命令:consul catalog datacenters
catalog datacenters
打印所有已知的数据中心。
例子
列出所有的数据中心:
[root@localhost ~]# consul catalog datacenters -http-addr=192.168.10.218:8500
dc1
- 1
- 2
用法
用法:consul catalog datacenters [options]
API 选项:
- -ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。这也可以通过CONSUL_CACERT环境变量来指定。
- -ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。这也可以通过CONSUL_CAPATH环境变量来指定。
- -client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。
- -client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。
- -http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。
- -tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。
- -token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
- -datacenter=<name>
——要查询的数据中心的名称。如果未指定,则查询将默认为Consul Agent的数据中心在HTTP地址。
- -stale
——允许任何Consul服务器(非领导)回应此请求。这允许更低的延迟和更高的吞吐量,但可能会导致陈旧的数据。该选项对非读取操作没有影响。默认值是false。
2.2 列出 Consul catalog所有的节点
命令:consul catalog nodes
consul catalog nodes
命令打印所有已知节点和关于它们的元数据。它还可以查询匹配特定元数据或提供特定服务的节点。
例子
列出所有节点:
[root@ localhost ~]# consul catalog nodes -http-addr=192.168.10.218:8500
Node ID Address DC
consul-agent-1 e375cebc 192.168.10.218 dc1
consul-agent-2 5443e44f 192.168.10.221 dc1
consul-agent-3 35fb0664 192.168.10.222 dc1
consul-agent-client-1 dafdf95b 192.168.10.142 dc1
- 1
- 2
- 3
- 4
- 5
- 6
打印详细的节点信息,如标记的地址和节点元数据:
[root@localhost ~]# consul catalog nodes -detailed -http-addr=192.168.10.218:8500
Node ID Address DC TaggedAddresses Meta
consul-agent-1 e375cebc-322c-875b-21b2-dd2bcf4475c1 192.168.10.218 dc1 lan=192.168.10.218, wan=192.168.10.218 consul-network-segment=
consul-agent-2 5443e44f-5048-03a1-a09d-4eb4ab4cbb59 192.168.10.221 dc1 lan=192.168.10.221, wan=192.168.10.221 consul-network-segment=
consul-agent-3 35fb0664-b5e2-808f-70f0-02f58ec20404 192.168.10.222 dc1 lan=192.168.10.222, wan=192.168.10.222 consul-network-segment=
consul-agent-client-1 dafdf95b-b519-9b4c-85fe-e298aead4e22 192.168.10.142 dc1 lan=192.168.10.142, wan=192.168.10.142 consul-network-segment=
- 1
- 2
- 3
- 4
- 5
- 6
列出提供服务名称“ad-ms-spring-cloud-consul-config-demo”的节点:
[root@localhost ~]# consul catalog nodes -service=ad-ms-spring-cloud-consul-config-demo -http-addr=192.168.10.218:8500
Node ID Address DC
consul-agent-client-1 dafdf95b 192.168.10.142 dc1
- 1
- 2
- 3
将生成的节点列表按预估到consul-agent-3的往返时间排序:
[root@localhost ~]# consul catalog nodes -near=consul-agent-3 -http-addr=192.168.10.218:8500
Node ID Address DC
consul-agent-3 35fb0664 192.168.10.222 dc1
consul-agent-2 5443e44f 192.168.10.221 dc1
consul-agent-client-1 dafdf95b 192.168.10.142 dc1
consul-agent-1 e375cebc 192.168.10.218 dc1
- 1
- 2
- 3
- 4
- 5
- 6
用法
用法:consul catalog nodes [options]
API 选项:
- -ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。
- -ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。
- -client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。
- -client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。
- -http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。
- -tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。
- -token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
- -datacenter=<name>
——要查询的数据中心的名称。如果未指定,则查询将默认为Consul Agent的数据中心在HTTP地址。
- -stale
——允许任何Consul服务器(非领导)回应此请求。这允许更低的延迟和更高的吞吐量,但可能会导致陈旧的数据。该选项对非读取操作没有影响。默认值是false。
目录列表节点选项
-
-detailed
——输出有关节点的详细信息,包括其地址和元数据。 -
-near=<string>
——节点名称,根据从该节点估计的往返时间以升序对节点列表排序。通过“_agent”将使用此Agent的节点进行排序。 -
-node-meta=<key=value>
——使用给定的键=值对过滤节点的元数据。 该标志可以被指定多次,以过滤多个元数据源。 -
-service=<id or name>
——服务ID或名称来过滤节点。 只有提供给定服务的节点才会被返回。
2.3 列出 Consul catalog所有的服务
命令:consul catalog services
catalog services
命令打印所有已知的服务。它还可以查询与特定元数据匹配的服务或列出特定节点提供的服务。
例子
列出所有服务:
[root@localhost ~]# consul catalog services -http-addr=192.168.10.218:8500
ad-ms-spring-cloud-consul-config-demo
ad-ms-spring-cloud-consul-discover-config-demo
consul
- 1
- 2
- 3
- 4
显示带有标签的所有服务:
[root@localhost ~]# consul catalog services -tags -http-addr=192.168.10.218:8500
ad-ms-spring-cloud-consul-config-demo
ad-ms-spring-cloud-consul-discover-config-demo
consul
- 1
- 2
- 3
- 4
列出节点“consul-agent-client-1”的服务:
[root@DevGETUI-1 ~]# consul catalog services -node=consul-agent-client-1 -http-addr=192.168.10.218:8500
ad-ms-spring-cloud-consul-config-demo
ad-ms-spring-cloud-consul-discover-config-demo
- 1
- 2
- 3
用法
用法:consul catalog services [options]
API 选项:
- -ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。
- -ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。
- -client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。
- -client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。
- -http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。
- -tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。
- -token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
- -datacenter=<name>
——要查询的数据中心的名称。如果未指定,则查询将默认为Consul Agent的数据中心在HTTP地址。
- -stale
——允许任何Consul服务器(非领导)回应此请求。这允许更低的延迟和更高的吞吐量,但可能会导致陈旧的数据。该选项对非读取操作没有影响。默认值是false。
目录列表节点选项
-
-node=<id or name>
——要列出服务的节点标识或名称。 -
-node-meta=<key=value>
——使用给定的键=值对过滤节点的元数据。如果指定,则只会返回与给定元数据匹配的节点上运行的服务。该标志可以被指定多次,以过滤多个元数据源。 -
-tags
——将每个服务的标签显示为每个服务条目旁边的逗号分隔列表。
三、Consul Event
命令:consul event
事件命令提供了一种机制来将自定义用户事件触发到整个数据中心。这些事件对Consul来说是不透明的,但是它们可以用来构建脚本基础架构来执行自动化部署,重新启动服务或执行其他编排操作。 事件可以通过使用观察者来处理。
引擎盖下,事件传播使用gossip协议。
虽然细节对于使用事件并不重要,但对语义的理解是有用的。gossip层会尽最大努力来传递事件,但是没有传递保证。与大多数使用一致性复制的Consul数据不同,事件数据纯粹是点对点的 gossip。这意味着它不是持久的,并没有一个完整的顺序。实际上,这意味着你不能依赖消息传递的顺序。然而,一个优点是即使在没有服务器节点的情况下或在停机期间仍然可以使用事件。
潜在的gossip还会限制用户事件消息的大小。很难给出确切的数字,因为它取决于事件的各种参数,但有效载荷应该保持非常小(<100字节)。指定太大的事件将返回一个错误。
用法
用法:consul event [options] [payload]
唯一需要的选项是指定事件名称的-name
。可选的有效载荷可以作为最后的参数提供。
API 选项:
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。 -
-datacenter=<name>
——要查询的数据中心的名称。如果未指定,则查询将默认为Consul Agent的数据中心在HTTP地址。 -
-stale
——允许任何Consul服务器(非领导)回应此请求。这允许更低的延迟和更高的吞吐量,但可能会导致陈旧的数据。该选项对非读取操作没有影响。默认值是false。
命令选项
-
-name
——事件的名称。 -
-node
——正则表达式来过滤应该评估事件的节点。 -
-service
——正则表达式仅筛选具有匹配服务的节点。 -
-tag
——正则表达式只能筛选具有匹配标记的服务的节点。这必须与-service一起使用。作为一个例子,你可以做-service mysql -tag secondary
。
四、Consul Exec
命令:consul exec
exec命令提供了远程执行的机制。例如,这可以用来在所有提供Web服务的机器上运行uptime命令。
远程执行通过指定存储在KV存储中的 job来工作。通过事件系统向代理人通知新的工作,该系统通过gossip协议传播消息。 因此,交付是尽力而为的,不能保证执行。
虽然事件纯粹是gossip驱动的,但远程执行依赖于KV 存储作为消息代理。 因此,执行命令在 Consul停机期间将无法正常工作。
详细输出警告:谨慎使用以确保您的命令不会产生大量的输出。向KV存储写入此输出需要经过Consul服务器和Raft一致性算法,因此集群中的大量节点通过KV存储区传输大量数据可能会导致群集不可用。
下表显示了执行此命令所需的ACL。
ACL Required | Scope |
---|---|
agent:read | local agent |
session:write | local agent |
key:write | “_rexec” prefix |
event:write | “_rexec” prefix |
用法
用法:consul exec [options] [-|command...]
唯一需要的选项是要执行的命令。 这可以作为结尾参数给出,也可以指定 -; STDIN
将作为脚本进行阅读以完成评估。
API Options
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。 -
-datacenter=<name>
——要查询的数据中心的名称。如果未指定,则查询将默认为Consul Agent的数据中心在HTTP地址。 -
-stale
——允许任何Consul服务器(非领导)回应此请求。这允许更低的延迟和更高的吞吐量,但可能会导致陈旧的数据。该选项对非读取操作没有影响。默认值是false。
命令选项
-
-prefix
——KV存储中用于存储请求数据的关键字前缀。 默认为_rexec。 -
-node
——正则表达式来过滤应该评估事件的节点。 -
-service
——正则表达式仅筛选具有匹配服务的节点。 -
-shell
——可选,使用shell来运行该命令。 默认值是true。 -
-tag
——正则表达式只能筛选具有匹配标记的服务的节点。 这必须与-service一起使用。 作为一个例子,你可以做-service mysql -tag secondary
。 -
-wait
——指定在考虑作业完成之前没有代理响应的时间段。 这基本上是假定完成所需的静止时间。 这个时期并不是一个艰难的最后期限,根据不同的启发式,命令将会等待更长的时间。 -
-wait-repl
——编写复制作业规范后等待的时间。 这是一个启发式的价值,使代理人能够对作业进行陈旧的阅读。 默认为200毫秒。 -
-verbose
——启用详细输出。
五、Consul Force Leave
命令:consul force-leave
force-leave命令强制Consul集群的成员进入“离开”状态。如果该成员还活着,它最终会重新加入集群。这种方法的真正目的是强制删除“失败”的节点。
如果是网络分区,Consul会定期尝试重新连接到“失败”的节点。经过一段配置的时间(默认72小时)后,Consul将收获“失败”节点并停止尝试重新连接。 force-leave命令可用于更快地将“失败”节点转换为“离开”节点。
这对于作为服务器运行的节点特别有用,因为它将从Raft仲裁中移除。 请注意,force-leave不能用于强制删除数据中心外部的节点。
用法
用法:consul force-leave [options] node
API Options
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
六、Consul Info
命令:consul info
info命令提供了对操作员有用的各种调试信息。 根据代理是客户端还是服务器,将返回有关不同子系统的信息。
目前有以下顶级key:
- agent:提供有关Agent的信息
- consul:有关Consul 库(客户或服务器)
- raft:提供关于Raft一致性库的信息
- serf_lan:提供有关LAN gossip池的信息
- serf_wan:提供有关WAN gossip 池的信息
下面是一个样例输出:
[root@localhost ~]# consul info -http-addr=192.168.10.218:8500
agent:
check_monitors = 0
check_ttls = 0
checks = 0
services = 0
build:
prerelease =
revision = 9564c29
version = 1.0.1
consul:
bootstrap = false
known_datacenters = 1
leader = true
leader_addr = 192.168.10.218:8303
server = true
raft:
applied_index = 103174
commit_index = 103174
fsm_pending = 0
last_contact = 0
last_log_index = 103174
last_log_term = 2
last_snapshot_index = 98311
last_snapshot_term = 2
latest_configuration = [{Suffrage:Voter ID:5443e44f-5048-03a1-a09d-4eb4ab4cbb59 Address:192.168.10.221:8303} {Suffrage:Voter ID:35fb0664-b5e2-808f-70f0-02f58ec20404 Address:192.168.10.222:8303} {Suffrage:Voter ID:e375cebc-322c-875b-21b2-dd2bcf4475c1 Address:192.168.10.218:8303}]
latest_configuration_index = 1
num_peers = 2
protocol_version = 3
protocol_version_max = 3
protocol_version_min = 0
snapshot_version_max = 1
snapshot_version_min = 0
state = Leader
term = 2
runtime:
arch = amd64
cpu_count = 16
goroutines = 110
max_procs = 16
os = linux
version = go1.9.2
serf_lan:
coordinate_resets = 0
encrypted = false
event_queue = 0
event_time = 2
failed = 0
health_score = 0
intent_queue = 0
left = 0
member_time = 4
members = 4
query_queue = 0
query_time = 1
serf_wan:
coordinate_resets = 0
encrypted = false
event_queue = 0
event_time = 1
failed = 0
health_score = 0
intent_queue = 0
left = 0
member_time = 3
members = 3
query_queue = 0
query_time = 1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
用法
用法:consul info
API 选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
七、Consul Join
命令:consul join
join
命令告诉Consul Agent加入一个现有的集群。新的Consul Agent必须至少加入一个 集群的现有成员才能加入现有集群。加入该成员之后,gossip层接管,在集群中传播更新后的成员资格状态。
如果您不加入现有的集群,则该代理是其自己孤立集群的一部分。其他节点可以加入它。
Agent可以多次加入其他Agent而没有问题。如果已经是集群的一部分的节点加入另一个节点,则两个节点的集群加入成为一个集群。
用法
用法:consul join [options] address ...
如果您想尝试加入多个集群,则可以使用多个地址调用加入。Consul将尝试加入所有地址,只有在Consul无法加入任何地址的情况下,加入命令才会失败。
API Options
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
命令选项
-
-wan
——对于以服务器模式运行的Agent程序,Agent程序将尝试加入WAN 集群中与其他服务器通讯。这被用来形成多个数据中心之间的桥梁。
八、Consul Keygen
命令:consul keygen
keygen命令生成可用于Consul agent通讯加密的加密密钥。keygen命令使用密码强的伪随机数生成器来生成密钥。
九、Consul Keyring
命令:consul keyring
keyring命令用于检查和修改Consul的gossip池中使用的加密密钥。它能够将新的加密密钥分配给集群,淘汰旧的加密密钥,并更改集群使用的密钥来加密消息。
Consul允许多个加密密钥同时使用。这是为了在集群收敛时提供过渡状态。 操作员有责任确保只在集群上安装必需的加密密钥。您可以使用-list参数
查看已安装的密钥,并使用-remove
删除不需要的密钥。
此命令执行的所有操作只能针对服务器节点运行,并且会锁定LAN和WAN密钥环。
如果所有节点都回复并且没有错误,那么keyring命令的所有变化都会返回0。 如果任何节点未能回复或报告失败,则退出代码将为1。
用法
用法:consul keyring [options]
每次运行只能指定一个可操作参数,包括-list
,-install
,-remove
和-use
。
API 选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
命令选项
-
-list
——列出集群中当前正在使用的所有密钥。 -
-install
——安装一个新的加密密钥。这将向集群中的所有成员广播新密钥。 -
-use
——更改用于加密消息的主加密密钥。在此操作成功之前,必须已经安装密钥。 -
-remove
——从集群中删除给定的密钥。此操作只能在当前不是主键的键上执行。 -
-relay-factor
——在Consul 0.7.4中添加的设置为非零值会导致节点通过集群中的许多随机选择的其他节点将响应传递给操作。最大允许值是5。
输出
consul keyring -list
命令的输出合并来自所有节点和所有数据中心的信息,以提供对集群简单而易于理解的视图。以下是具有两个数据中心的集群的输出示例,每个数据中心由一个服务器和一个客户端组成:
==> Gathering installed encryption keys...
==> Done!
WAN:
a1i101sMY8rxB+0eAKD/gw== [2/2]
dc2 (LAN):
a1i101sMY8rxB+0eAKD/gw== [2/2]
dc1 (LAN):
a1i101sMY8rxB+0eAKD/gw== [2/2]
dc1 (LAN) [alpha]:
a1i101sMY8rxB+0eAKD/gw== [2/2]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
如您所见,上面的输出首先被gossip池划分,包括任何网段,然后是加密密钥。 每个密钥右侧的指示符显示密钥安装在池中的节点总数上的节点数。
错误
如果执行密钥环操作时遇到任何错误,则不会显示密钥信息,而只会显示错误信息。 错误信息以类似的方式排列,首先由数据中心组织,然后是一个简单的有错误的节点列表,以及错误的实际文本。 如果我们试图做一些导致错误的事情,下面是从上面相同的集群中的示例输出; 在这种情况下,试图删除主键:
==> Removing gossip encryption key...
dc1 (LAN) error: 2/2 nodes reported failure
server1: Removing the primary key is not allowed
client1: Removing the primary key is not allowed
WAN error: 2/2 nodes reported failure
server1.dc1: Removing the primary key is not allowed
server2.dc2: Removing the primary key is not allowed
dc2 (LAN) error: 2/2 nodes reported failure
server2: Removing the primary key is not allowed
client2: Removing the primary key is not allowed
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
正如你所看到的,每个有故障的节点都报告出了什么问题。
十、Consul KV
命令:consul kv
kv命令用于通过命令行与Consul的KV存储进行交互。 它公开了用于插入,更新,读取和删除的顶级命令。该命令在Consul 0.7.1及更高版本中可用。
也提供了HTTP API。
用法
用法:consul kv <subcommand>
有关Consul版本的确切文档,请运行consul kv -h
以查看完整的子命令列表。
[root@localhost ~]# consul kv -h
Usage: consul kv <subcommand> [options] [args]
This command has subcommands for interacting with Consul's key-value
store. Here are some simple examples, and more detailed examples are
available in the subcommands or the documentation.
Create or update the key named "redis/config/connections" with the value "5":
$ consul kv put redis/config/connections 5
Read this value back:
$ consul kv get redis/config/connections
Or get detailed key information:
$ consul kv get -detailed redis/config/connections
Finally, delete the key:
$ consul kv delete redis/config/connections
For more examples, ask for subcommand help or view the documentation.
Subcommands:
delete Removes data from the KV store
export Exports a tree from the KV store as JSON
get Retrieves or lists data from the KV store
import Imports a tree stored as JSON to the KV store
put Sets or updates data in the KV store
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
有关子命令的更多信息,示例和用法,请单击边栏中的子命令的名称或以下链接之一:
* delete
* export
* get
* import
* put
基础例子
要在Consul的KV存储中创建或更新名为“redis/config/connections”的键值为“5”:
[root@localhost ~]# consul kv put -http-addr=192.168.10.218:8500 redis/config/connections 5
Success! Data written to: redis/config/connections
- 1
- 2
从 Consul 中获取值:
[root@localhost ~]# consul kv get -http-addr=192.168.10.218:8500 redis/config/connections
5
- 1
- 2
查询详情
[root@localhost ~]# consul kv get -http-addr=192.168.10.218:8500 -detailed redis/config/connections
CreateIndex 120397
Flags 0
Key redis/config/connections
LockIndex 0
ModifyIndex 120397
Session -
Value 5
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
删除 key:
[root@localhost ~]# consul kv delete -http-addr=192.168.10.218:8500 redis/config/connections
Success! Deleted key: redis/config/connections
- 1
- 2
有关更多示例,请查询子命令帮助或通过单击边栏中的某个链接查看子命令文档。
Consul KV Delete
命令:consul kv delete
kv delete命令从给定路径的Consul的KV存储中删除该值。如果路径中没有该 key,则不采取任何操作。
用法
用法:consul kv delete [options] KEY_OR_PREFIX
API 选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。 -
-datacenter=<name>
——要查询的数据中心的名称。如果未指定,则查询将默认为Consul Agent的数据中心在HTTP地址。 -
-stale
——允许任何Consul服务器(非领导)回应此请求。这允许更低的延迟和更高的吞吐量,但可能会导致陈旧的数据。该选项对非读取操作没有影响。默认值是false。
KV Delete 选项
-
-cas
——执行检查并设置操作。指定此值还需要设置-modify-index标志。 默认值是false。 -
-modify-index=<int>
——表示密钥的ModifyIndex的无符号整数。这与-cas标志结合使用。 -
-recurse
——递归删除所有具有该路径的键。默认值是false。
例子
删除 key 为redis/config/connections的值:
[root@localhost ~]# consul kv delete -http-addr=192.168.10.218:8500 redis/config/connections
Success! Deleted key: redis/config/connections
- 1
- 2
如果 key 不存在,命令不会报错,并且会返回成功的信息:
[root@localhost ~]# consul kv delete -http-addr=192.168.10.218:8500 redis/config/connections
Success! Deleted key: redis/config/connections
- 1
- 2
删除一个指定索引的 key,指定-cas
或-modify-index
。
$ consul kv get -detailed redis/config/connections | grep ModifyIndex
ModifyIndex 456
$ consul kv delete -cas -modify-index=123 redis/config/connections
Error! Did not delete key redis/config/connections: CAS failed
$ consul kv delete -cas -modify-index=456 redis/config/connections
Success! Deleted key: redis/config/connections
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
递归删除指定前缀的所有 key,使用-recurse
选项:
$ consul kv delete -recurse redis/
Success! Deleted keys with prefix: redis/
- 1
- 2
在递归删除操作中,尾随斜杠很重要,因为Consul对所提供的前缀执行贪婪的匹配。 如果您使用“foo”作为键,则会递归删除以“foo”,“food”和“football”等字母开头的所有键,而不仅仅是“foo”。 为确保您正在删除文件夹,请始终使用尾部斜线。
将-cas
选项与-recurse
组合在一起是无效的,因为您正在一个操作中删除前缀下的多个键:
$ consul kv delete -cas -recurse redis/
Cannot specify both -cas and -recurse!
- 1
- 2
Consul KV Export
命令:consul kv export
kv export
命令用于从Consul的KV存储中为给定的前缀检索KV对,并将JSON表示写入stdout。 这可以使用命令“consul kv import”来移动Consul集群之间的整个树。
用法
用法:consul kv export [PREFIX]
API 选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。 -
-datacenter=<name>
——要查询的数据中心的名称。如果未指定,则查询将默认为Consul Agent的数据中心在HTTP地址。 -
-stale
——允许任何Consul服务器(非领导)回应此请求。这允许更低的延迟和更高的吞吐量,但可能会导致陈旧的数据。该选项对非读取操作没有影响。默认值是false。
例子
导出 key 为”config/”的树:
[root@localhost ~]# consul kv export -http-addr=192.168.10.218:8500 config/
[
{
"key": "config/ad-ms-spring-cloud-consul-config-demo/",
"flags": 0,
"value": ""
},
{
"key": "config/ad-ms-spring-cloud-consul-config-demo/age",
"flags": 0,
"value": "MTg="
},
{
"key": "config/ad-ms-spring-cloud-consul-config-demo/jsonStr",
"flags": 0,
"value": "eyJ0YXNrSWQiOiJSTVAtMjAxNzEyMDEiLCJ0YXNrTmFtZSI6ImRlbW8g5rWL6K+VIiwic2hvd051bSI6OTk5LCJub3RpZnkiOnRydWV9"
},
{
"key": "config/ad-ms-spring-cloud-consul-config-demo/logSwitch",
"flags": 0,
"value": "dHJ1ZQ=="
},
{
"key": "config/ad-ms-spring-cloud-consul-config-demo/name",
"flags": 0,
"value": "emhhbmdzYW4t5byg5LiJ"
}
]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
Consul KV Get
命令:consul kv get
kv get
命令用来从Consul的KV存储中获取给定键名的值。如果该名称不存在,则返回错误。如果一个key以该名称存在但没有数据,则不返回任何内容。 如果名称或前缀被省略,则默认为“”,这是KV 存储的根。
用法
用法:consul kv get [options] [KEY_OR_PREFIX]
API 选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。 -
-datacenter=<name>
——要查询的数据中心的名称。如果未指定,则查询将默认为Consul Agent的数据中心在HTTP地址。 -
-stale
——允许任何Consul服务器(非领导)回应此请求。这允许更低的延迟和更高的吞吐量,但可能会导致陈旧的数据。该选项对非读取操作没有影响。默认值是false。
KV GET 选项
-
-base64
——Base 64 encode the value. The default value is false. -
-detailed
——Provide additional metadata about the key in addition to the value such as the ModifyIndex and any flags that may have been set on the key. The default value is false. -
-keys
——List keys which start with the given prefix, but not their values. This is especially useful if you only need the key names themselves. This option is commonly combined with the -separator option. The default value is false. -
-recurse
——Recursively look at all keys prefixed with the given path. The default value is false. -
-separator=<string>
——String to use as a separator between keys. The default value is “/”, but this option is only taken into account when paired with the -keys flag.
例子
获取 key 为config/ad-ms-spring-cloud-consul-config-demo/age
的值:
[root@localhost ~]# consul kv get -http-addr=192.168.10.218:8500 config/ad-ms-spring-cloud-consul-config-demo/age
18
- 1
- 2
这将返回存储在Consul中的原始值。要查看有关key的详细信息,请指定-detailed
标志。这将输出关于key的所有已知元数据,包括ModifyIndex和任何用户提供的标志:
[root@localhost ~]# consul kv get -detailed -http-addr=192.168.10.218:8500 config/ad-ms-spring-cloud-consul-config-demo/age
CreateIndex 206
Flags 0
Key config/ad-ms-spring-cloud-consul-config-demo/age
LockIndex 0
ModifyIndex 206
Session -
Value 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
如果指定的 key 不存在,将会返回错误:
[root@localhost ~]# consul kv get -detailed -http-addr=192.168.10.218:8500 config/ad-ms-spring-cloud-consul-config-demo/haha
Error! No key exists at: config/ad-ms-spring-cloud-consul-config-demo/haha
- 1
- 2
要将路径作为前缀,并列出以给定前缀开头的所有键,请指定-recurse
标志:
[root@localhost ~]# consul kv get -recurse -http-addr=192.168.10.218:8500 config/ad-ms-spring-cloud-consul-config-demo/
config/ad-ms-spring-cloud-consul-config-demo/:
config/ad-ms-spring-cloud-consul-config-demo/age:18
config/ad-ms-spring-cloud-consul-config-demo/jsonStr:{"taskId":"RMP-20171201","taskName":"demo 测试","showNum":999,"notify":true}
config/ad-ms-spring-cloud-consul-config-demo/logSwitch:true
config/ad-ms-spring-cloud-consul-config-demo/name:zhangsan-张三
- 1
- 2
- 3
- 4
- 5
- 6
或者在前缀下列出所有对的详细信息:
[root@localhost ~]# consul kv get -recurse -detailed -http-addr=192.168.10.218:8500 config/ad-ms-spring-cloud-consul-config-demo/
CreateIndex 194
Flags 0
Key config/ad-ms-spring-cloud-consul-config-demo/
LockIndex 0
ModifyIndex 197
Session -
Value
CreateIndex 206
Flags 0
Key config/ad-ms-spring-cloud-consul-config-demo/age
LockIndex 0
ModifyIndex 206
Session -
Value 18
CreateIndex 223
Flags 0
Key config/ad-ms-spring-cloud-consul-config-demo/jsonStr
LockIndex 0
ModifyIndex 13180
Session -
Value {"taskId":"RMP-20171201","taskName":"demo 测试","showNum":999,"notify":true}
CreateIndex 209
Flags 0
Key config/ad-ms-spring-cloud-consul-config-demo/logSwitch
LockIndex 0
ModifyIndex 209
Session -
Value true
CreateIndex 203
Flags 0
Key config/ad-ms-spring-cloud-consul-config-demo/name
LockIndex 0
ModifyIndex 203
Session -
Value zhangsan-张三
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
要列出以指定前缀开头的键,请使用-keys
选项。这是更高性能的,并导致更小的有效载荷:
[root@localhost ~]# consul kv get -keys -http-addr=192.168.10.218:8500 config/ad-ms-spring-cloud-consul-config-demo/
config/ad-ms-spring-cloud-consul-config-demo/
config/ad-ms-spring-cloud-consul-config-demo/age
config/ad-ms-spring-cloud-consul-config-demo/jsonStr
config/ad-ms-spring-cloud-consul-config-demo/logSwitch
config/ad-ms-spring-cloud-consul-config-demo/name
- 1
- 2
- 3
- 4
- 5
- 6
默认情况下,-keys操作使用分隔符“/”,这意味着它不会递归超出分隔符。 您可以通过设置-separator =“<string>”
来选择不同的分隔符。
[root@localhost ~]# consul kv get -keys -separator="a" -http-addr=192.168.10.218:8500 config/ad-ms-spring-cloud-consul-config-demo/
config/ad-ms-spring-cloud-consul-config-demo/
config/ad-ms-spring-cloud-consul-config-demo/a
config/ad-ms-spring-cloud-consul-config-demo/jsonStr
config/ad-ms-spring-cloud-consul-config-demo/logSwitch
config/ad-ms-spring-cloud-consul-config-demo/na
- 1
- 2
- 3
- 4
- 5
- 6
或者,您可以通过将分隔符设置为空字符串来完全禁用分隔符:
[root@localhost ~]# consul kv get -keys -separator="" -http-addr=192.168.10.218:8500 config/ad-ms-spring-cloud-consul-config-demo/
config/ad-ms-spring-cloud-consul-config-demo/
config/ad-ms-spring-cloud-consul-config-demo/age
config/ad-ms-spring-cloud-consul-config-demo/jsonStr
config/ad-ms-spring-cloud-consul-config-demo/logSwitch
config/ad-ms-spring-cloud-consul-config-demo/name
- 1
- 2
- 3
- 4
- 5
- 6
要列出根目录中的所有key,只需省略前缀参数:
[root@localhost ~]# consul kv get -keys -http-addr=192.168.10.218:8500
config/
- 1
- 2
Consul KV Import
命令:consul kv import
kv import
命令用于从kv export
命令生成的JSON中导入KV对。
用法
用法:consul kv import [DATA]
API 选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。 -
-datacenter=<name>
——要查询的数据中心的名称。如果未指定,则查询将默认为Consul Agent的数据中心在HTTP地址。 -
-stale
——允许任何Consul服务器(非领导)回应此请求。这允许更低的延迟和更高的吞吐量,但可能会导致陈旧的数据。该选项对非读取操作没有影响。默认值是false。
例子
要从文件中导入,请在@前面加上文件名:
$ consul kv import @values.json
# Output
- 1
- 2
要从stdin导入,请使用 - 作为数据参数:
$ cat values.json | consul kv import -
# Output
- 1
- 2
您也可以直接传递JSON,但是必须注意shell转义:
$ consul kv import "$(cat values.json)"
# Output
- 1
- 2
Consul KV Put
命令:consul kv put
kv put命令将数据写入KV存储中的给定路径。
用法
用法:consul kv put [options] KEY [DATA]
API选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。 -
-datacenter=<name>
——要查询的数据中心的名称。如果未指定,则查询将默认为Consul Agent的数据中心在HTTP地址。 -
-stale
——允许任何Consul服务器(非领导)回应此请求。这允许更低的延迟和更高的吞吐量,但可能会导致陈旧的数据。该选项对非读取操作没有影响。默认值是false。
KV PUT 选项
- -acquire——获得锁。如果key不存在,则此操作将创建key并获取锁。会话必须已经存在,并通过-session标志指定。默认值是false。
- -base64——将数据视为base 64编码的数据。默认值是false。
- -cas——执行检查并设置操作。指定此值还需要设置-modify-index标志。默认值是false。
- -flags=< int >——要分配给此KV对的无符号整数值。这个值不是由Consul读取的,所以客户可以使用这个值,但是对于他们的用例是有意义的。 默认值是0(没有标志)。
- -modify-index=< int >——表示key的ModifyIndex的无符号整数。这与-cas标志结合使用。
- -release——放弃给定路径上的key的锁定。这需要设置-session标志。密钥必须由会话保持才能解锁。默认值是false。
- -session=< string >——此会话的用户定义标识符为字符串。这通常与-acquire和-release操作一起使用来构建强大的锁定,但可以在任何键上进行设置。默认值为空(无会话)。
例子
设置 key为redis/config/connections
的值为5:
[root@localhost ~]# consul kv put -http-addr=192.168.10.142:8500 redis/config/connections 5
Success! Data written to: redis/config/connections
- 1
- 2
如果不指定 value,则 key会被创建但没有数据:
[root@localhost ~]# consul kv put -http-addr=192.168.10.142:8500 redis/config/connections
Success! Data written to: redis/config/connections
- 1
- 2
如果指定了-base64
选项,数据将在写入之前被解码:
[root@localhost ~]# consul kv put -base64 -http-addr=192.168.10.142:8500 foo/encoded aGVsbG8gd29ybGQK
Success! Data written to: foo/encoded
- 1
- 2
覆盖数据时要小心! 上面的操作会覆盖空值的键值。
对于较长或敏感的值,可以通过用@符号加前缀来从文件中读取:
[root@localhost ~]# consul kv put -http-addr=192.168.10.142:8500 redis/config/password @password.txt
Success! Data written to: redis/config/password
- 1
- 2
或者通过指定 - 符号从标准输入读取值:
[root@localhost ~]# echo "5" | consul kv put -http-addr=192.168.10.218:8500 redis/config/password -
Success! Data written to: redis/config/password
[root@localhost ~]# consul kv put -http-addr=192.168.10.218:8500 redis/config/password -
1
<CTRL+D>
Success! Data written to: redis/config/password
- 1
- 2
- 3
- 4
- 5
- 6
- 7
对于敏感的值,你应该考虑使用像HashiCorp这样的加密管理解决方案。虽然可以在Consul的KV中保存值,但Vault为加密管理提供了更强大的界面。
要仅更新一个key(如果自从给定索引以来没有被修改过),请指定-cas和-modify-index标志:
[root@localhost ~]# consul kv get -detailed -http-addr=192.168.10.218:8500 redis/config/connections | grep ModifyIndex
ModifyIndex 232227
[root@localhost ~]# consul kv put -cas -modify-index=232267 -http-addr=192.168.10.142:8500 redis/config/connections 10
Error! Did not write to redis/config/connections: CAS failed
[root@localhost ~]# consul kv put -cas -modify-index=232227 -http-addr=192.168.10.142:8500 redis/config/connections 10
Success! Data written to: redis/config/connections
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
要指定key的标志,请使用-flags选项。 这些标志完全由用户控制:
[root@localhost ~]# consul kv put -flags=42 -http-addr=192.168.10.142:8500 redis/config/password s3cr3t
Success! Data written to: redis/config/password
- 1
- 2
要创建或调整锁定,请使用-acquire和-session标志。会话必须已经存在(该命令不会创建或管理它):
$ consul kv put -acquire -session=abc123 redis/lock/update
Success! Lock acquired on: redis/lock/update
- 1
- 2
释放锁:
$ consul kv put -release -session=acb123 redis/lock/update
Success! Lock released on: redis/lock/update
- 1
- 2
警告! 如果你正试图用这些低级原语构建一个锁定机制,你可能想看看consul lock命令。 它提供了更高层次的功能,而不需要公开Consul的内部API。
十一、Consul Leave
命令:consul leave
leave
命令会触发 agent 优雅地离开并且关闭。它用于确保其它节点将 Agent 视为离开而不是失败。离开的节点在快照重启时将不会尝试重新加入集群。
对于 server 模式下的节点,该节点将以优雅的方式从Raft对等设备中移除。这是至关重要的,因为在某些情况下,非优雅的离开会影响集群的可用性。
用法
用法:consul leave [options]
API 选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
十二、Consul Lock
命令:consul lock
lock
命令为简单的分布式锁定提供了一种机制。锁(或信号量)在KV存储中的给定前缀处创建,并且只有在被保存时才调用子进程。如果锁定丢失或通信中断,则子进程终止。
锁持有人的数量可以用-n
标志来配置。默认情况下,允许使用一个持有者,并使用锁来互斥。这使用leader选举算法。
如果锁持有者数超过一个,则使用信号量代替。信号量允许多个单独的持有者,但这不如简单的锁定。这遵循信号量算法。
所有使用相同前缀的锁必须同意-n的值。如果提供了-n的冲突值,则会返回错误。
一个示例用例是针对高可用性的N + 1部署。 在这种情况下,如果需要服务的N个实例,则部署N + 1,并使用带-n = N的合并来确保只有N个实例正在运行。对于单个服务,热备用等待,直到现任领导不能接管。
用法
用法:consul lock [options] prefix child...
唯一需要的选项是key前缀和要执行的命令。前缀必须是可写的。只有在持有锁的情况下才会调用子项,CONSUL_LOCK_HELD环境变量将设置为true。
如果锁定丢失,通信中断,或父进程中断,子进程将收到一个SIGTERM。 经过5秒的宽限期,SIGKILL将被用来强制终止。 对于Windows上的Consul代理程序,子进程总是以SIGKILL结束,因为Windows没有与SIGTERM兼容的POSIX概念。
API 选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。 -
-datacenter=<name>
——要查询的数据中心的名称。如果未指定,则查询将默认为Consul Agent的数据中心在HTTP地址。 -
-stale
——允许任何Consul服务器(非领导)回应此请求。这允许更低的延迟和更高的吞吐量,但可能会导致陈旧的数据。该选项对非读取操作没有影响。默认值是false。
命令选项
- -child-exit-code——如果设置为 true,子进程退出时将退出2,否则这不会传播一个错误的孩子。 默认值是false。
- -monitor-retry
- -n
- -name
- -shell
- -pass-stdin
- -timeout
- -try
- -verbose
SHELL
Consul lock launches its children in a shell. By default, Consul will use the shell defined in the environment variable SHELL. If SHELL is not defined, it will default to /bin/sh. It should be noted that not all shells terminate child processes when they receive SIGTERM. Under Ubuntu, /bin/sh is linked to dash, which does not terminate its children. In order to ensure that child processes are killed when the lock is lost, be sure to set the SHELL environment variable appropriately, or run without a shell by setting -shell=false.
十三、Consul Maint
命令:consul maint
maint命令提供对服务维护模式的控制。使用该命令,可以将节点提供的服务或节点上的所有服务整体标记为“正在维护”。在这种操作模式下,服务不会出现在DNS查询结果或API结果中。这有效地将服务从服务的可用“健康”节点的池中取出。
在引擎盖下,维护模式通过针对服务注册处于危急状态的健康检查而被激活,并且通过注销健康检查而被停用。
用法
用法:consul maint [options]
API选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
命令选项
列表模式
如果既没有启用也没有禁用,maint命令将切换到“列表模式”,显示任何当前的维护。 如果目前没有任何维护工作,这可能会返回空白。 输出将如下所示:
$ consul maint
Node:
Name: node1.local
Reason: This node is broken.
Service:
ID: redis
Reason: Redis is currently offline.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
十四、Consul Members
命令:consul members
members
命令输出当前成员状态,节点状态只能是”alive”, “left”, 或 “failed”。
failed 状态的节点还在列表里是因为 Consul 会在一定的时间尝试重新连接。
用法
用法:consul members [options]
API 选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
命令选项
十五、Consul Monitor
命令:consul monitor
monitor
命令用于连接并追踪正在运行的 Consul Agent 日志。monitor 并输出最新的日志并且跟踪日志,直到中断或者远程 Agent 退出才会退出。
monitor命令的功能是允许您以相对较高的日志级别(例如“warn”)登录Agent,但仍然可以访问调试日志并在必要时观察调试日志。
用法
用法:consul monitor [options]
API 选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
命令选项
-
-log-level——要显示的消息的日志级别。默认是”info”,此日志级别可能比agent 运行配置更详细。可用的日志级别是”trace”, “debug”, “info”, “warn”, 和 “err”。
十六、Consul Operator
命令:consul operator
operator
命令为Consul 操作人员提供了集群级别的工具。例如与Raft 子系统进行交互。在 Consul0.7及以后版本可用该命令。
请谨慎使用此命令,因为使用不当可能会导致Consul停机甚至丢失数据。
如果开启了 ACL,则需要权限令牌才能使用此命令。如果需要,请求将在内部转发给领导者,因此可以从集群中的任何Consul节点运行。更多详细信息查看ACL Guide。
有关如何使用此命令的一些示例,请参阅停机恢复指南。 要以编程方式执行这些操作的API,请参阅Operator端点的文档。
用法
Usage: consul operator <subcommand> [options]
Subcommands:
area Provides tools for working with network areas (Enterprise-only)
autopilot Provides tools for modifying Autopilot configuration
raft Provides cluster-level tools for Consul operators
- 1
- 2
- 3
- 4
- 5
- 6
- 7
有关子命令的更多信息,示例和用法,请单击边栏中的子命令的名称或以下链接之一:
- area
- autopilot
- raft
十七、Consul Reload
命令:consul reload
重新加载命令会触发代理的配置文件重新加载。
SIGHUP信号通常用于触发重新载入配置,但在某些情况下,可能更方便地触发CLI。
这个命令与信号操作相同,这意味着它将触发重新加载,但不等待重新加载完成。 重新加载的任何错误都将出现在代理程序日志中,而不是在此命令的输出中。
注意
并非所有配置选项都可以重新加载。有关支持哪些选项的详细信息,请参阅代理选项页上的“可重新配置”部分。
用法
用法:consul reload
API选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
十八、Consul RTT
命令:consul rtt
rtt命令使用Consul的集群网络坐标模型来估计两个节点之间的网络往返时间。
有关如何计算这些坐标的更多信息,请参阅网络坐标内部指南。
用法
用法:consul rtt [options] node1 [node2]
至少需要一个节点名称。 如果未给出第二个节点名称,则将其设置为代理的节点名称。 这些是Consul已知的节点名称,如consul members命令将显示的那样,而不是IP地址。
API 选项
-
-ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。 -
-ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。 -
-client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。 -
-client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。 -
-http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。 -
-tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。 -
-token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
命令选项
-
-wan——指示命令使用WAN坐标而不是LAN坐标。 默认情况下,这两个节点被假定为本地数据中心中的节点,并使用LAN坐标。 如果给出-wan选项,则使用WAN坐标,并且节点名称必须以句点和数据中心(例如“myserver.dc1”)为后缀。 无法在LAN坐标和WAN坐标之间进行测量,因此两个节点必须位于同一区域。
以下环境变量控制通过SSL访问HTTP服务器: - CONSUL_HTTP_SSL 设置开启 SSL
- CONSUL_HTTP_SSL_VERIFY——将其设置为禁用证书检查(不推荐)
输出
如果坐标可用,则该命令将打印给定节点之间的估计往返时间:
$ consul rtt n1 n2
Estimated n1 <-> n2 rtt: 0.610 ms (using LAN coordinates)
$ consul rtt n2 # Running from n1
Estimated n1 <-> n2 rtt: 0.610 ms (using LAN coordinates)
$ consul rtt -wan n1.dc1 n2.dc2
Estimated n1.dc1 <-> n2.dc2 rtt: 1.275 ms (using WAN coordinates)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
十九、Consul Snapshot
命令:consul snapshot
快照命令具有用于保存,恢复和检查Consul服务器状态以进行灾难恢复的子命令。这些是包括键/值条目,服务目录,准备好的查询,会话和ACL的原子时间点快照。该命令在Consul 0.7.1及更高版本中可用。
快照也可以通过HTTP API访问。
用法
用法:consul snapshot <subcommand>
有关Consul版本的确切文档,请运行consul snapshot -h查看完整的子命令列表。
Usage: consul snapshot <subcommand> [options] [args]
# ...
Subcommands:
agent Periodically saves snapshots of Consul server state
inspect Displays information about a Consul snapshot file
restore Restores snapshot of Consul server state
save Saves snapshot of Consul server state
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
有关子命令的更多信息,示例和用法,请单击边栏中的子命令的名称或以下链接之一:
- agent (Consul Enterprise only)
- inspect
- restore
- save
基础例子
要创建快照并将其保存名为“backup.snap”的文件:
$ consul snapshot save backup.snap
Saved and verified snapshot to index 8419
- 1
- 2
从名为“backup.snap”的文件恢复快照:
$ consul snapshot restore backup.snap
Restored snapshot
- 1
- 2
检查文件“backup.snap”中的快照:
$ consul snapshot inspect backup.snap
ID 2-5-1477944140022
Size 667
Index 5
Term 2
Version 1
- 1
- 2
- 3
- 4
- 5
- 6
运行定期保存快照的守护进程(仅限Consul Enterprise):
$ consul snapshot agent
- 1
有关更多示例,请查询子命令帮助或通过单击边栏中的某个链接查看子命令文档。
二十、Consul Validate
consul validate命令对Consul配置文件执行彻底的完整性测试。对于给定的每个文件或目录,命令将尝试像consul agent命令那样解析内容,并捕获任何错误。
这对于仅对配置进行测试是有用的,不需要实际启动代理。 这将执行代理将进行的所有验证,因此应该给出代理将要加载的完整的一组配置文件。 此命令不能在部分配置片段上操作,因为这些命令不会通过完整的代理验证。
有关Consul配置文件格式的更多信息,请阅读consul代理配置文件部分。
用法
用法:consul validate [options] FILE_OR_DIRECTORY...
如果配置有效,则返回0;如果有问题,则返回1。
$ consul validate /etc/consul.d
Configuration is valid!
- 1
- 2
二十一、Consul Version
命令:consul version
version命令打印Consul的版本和它理解与其他代理交谈的协议版本。
$ consul version
Consul v0.7.4
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)
- 1
- 2
- 3
二十二、Consul Watch
命令:consul watch
watch命令提供了一种机制来监视特定数据视图(节点列表,服务成员,键值等)中的更改,并使用视图的最新值调用进程。 如果没有指定进程,则将当前值转储到STDOUT,这是检查Consul中数据的有用方法。
这里有更多关于Watch的文档。
用法
用法:consul watch [options] [child...]
唯一需要的选项是指定特定数据视图的-type。 取决于类型,可能需要或可选地提供各种选项。 这里有更多关于watch的文件。
- -ca-file=<value>
——与Consul通信时用于TLS的CA文件的路径。 这也可以通过CONSUL_CACERT环境变量来指定。
- -ca-path=<value>
——与Consul通信时用于TLS的CA证书目录的路径。 这也可以通过CONSUL_CAPATH环境变量来指定。
- -client-cert=<value>
——启用verify_incoming时,用于TLS的客户端证书文件的路径。这也可以通过CONSUL_CLIENT_CERT环境变量来指定。
- -client-key=<value>
——启用verify_incoming时,用于TLS的客户端密钥文件的路径。 这也可以通过CONSUL_CLIENT_KEY环境变量来指定。
- -http-addr=<addr>
——Consul Agent与端口的地址。这可以是IP地址或DNS地址,但必须包含端口。这也可以通过CONSUL_HTTP_ADDR环境变量来指定。在Consul 0.8和更高版本中,默认值是http://127.0.0.1:8500,可以选择使用https。该方案也可以通过设置环境变量CONSUL_HTTP_SSL = true来设置为HTTPS。
- -tls-server-name=<value>
——通过TLS连接时用作SNI主机的服务器名称。这也可以通过CONSUL_TLS_SERVER_NAME环境变量来指定。
- -token=<value>
——要在该请求中使用的ACL令牌。这也可以通过CONSUL_HTTP_TOKEN环境变量来指定。如果未指定,则查询将默认为Consul Agent在HTTP地址的令牌。
- -datacenter=<name>
——要查询的数据中心的名称。如果未指定,则查询将默认为Consul Agent的数据中心在HTTP地址。
- -stale
——允许任何Consul服务器(非领导)回应此请求。这允许更低的延迟和更高的吞吐量,但可能会导致陈旧的数据。该选项对非读取操作没有影响。默认值是false。
命令选项
-
-key - Key to watch. Only for key type.
-
-name- Event name to watch. Only for event type.
-
-passingonly=[true|false] - Should only passing entries be returned. Defaults to false and only applies for service type.
-
-prefix - Key prefix to watch. Only for keyprefix type.
-
-service - Service to watch. Required for service type, optional for checks type.
-
-shell - Optional, use a shell to run the command (can set a custom shell via the SHELL environment variable). The default value is true.
-
-state - Check state to filter on. Optional for checks type.
-
-tag - Service tag to filter on. Optional for service type.
-
-type - Watch type. Required, one of “key, keyprefix, services, nodes, service, checks, or event.
-