启动
1
| $ consul agent -dev -bind=0.0.0.0 -client=0.0.0.0 -advertise=127.0.0.1
|
高可用
接口
查询所有服务
1
| curl -XGET http://localhost:8500/v1/catalog/services
|
查询服务所有监控实例
1
| curl -XGET http://localhost:8500/v1/health/service/:servicename
|
列出所有节点
1
| curl -XGET http://localhost:8500/v1/catalog/nodes
|
强制去除节点
1
| curl -XPUT http://localhost:8500/v1/agent/force-leave/:node_name
|
KV
导入导出
export,import。
1 2 3 4
| consul kv export > data.json # 导出所有 consul kv export online/ > data.json # 导出 online 前缀 # 指定 consul 地址 consul kv export -http-addr=http://10.20.10.3:8500 > data.json
|
1 2
| consul kv import @data.json # 文件导入, 需要在文件名前加 @ cat data.json | consul kv import - # 通过管道导入
|
查询
1 2
| # 列出所有 key curl --location --request GET 'http://127.0.0.1:8500/v1/kv/?keys'
|
注意
Blocking Query / Long Pull
指定参数 index={latest-index}
,latest-index 是相对于 kv prefix 而言,在 response 的 header 中 X-Consul-Index
返回。
使用 consul kv 做开关
1 2 3 4 5 6
| function is_enable() { consul_key_prefix="path/to/config" config=$(curl "http://127.0.0.1:8500/v1/kv/${consul_key_prefix}?raw=true" | jq -r ".enable") [ X"$config" = X"true" ] && return 0 return 1 }
|