Consul使用

Consul是一个分布式服务注册与发现的工具。

启动Consul服务端:

sudo consul agent -server -bootstrap-expect 1 \
  -data-dir /tmp/consul \
  -node=n1 -bind=[server-ip] -ui -rejoin -config-dir=/etc/consul.d/ \
  -client 0.0.0.0

启动Consul客户端,需要指定需要加入的服务端IP:

sudo consul agent -join [server-ip] \
  -data-dir ./consul \
  -node=c1 -rejoin \
  -config-dir=./consul.d/ \
  -client 0.0.0.0

-config-dir用于指定配置文件目录,Consul会从里面读取配置文件,下面是一个示例配置:

{
  "service": {
    "name": "server-from-windows",
    "tags": [
      "hp",
      "sample",
      "client"
    ],
    "port": 8600,
    "check": {
      "id": "ssh",
      "name": "SSH TCP on port 22",
      "tcp": "localhost:22",
      "interval": "10s",
      "timeout": "1s"
    }
  }
}

其中的check为可选配置,使用后会用里面的设置判断当前服务的健康状态。port为当前Consul实例的DNS服务器端口。

一些常用命令

# 查看consul集群里的成员列表
consul members
# 查看当前状态
consul info
# 停止consul进程
consul leave 
# 重新载入配置
consul reload 
# 通过HTTP接口查询服务状态 
curl http://[server-ip]:8500/v1/catalog/service/web |jq
# 通过DNS查询状态
# 注意:只返回健康的服务
# 注意:Consul使用配置文件里配置的服务名作为域名
dig @[server-ip] -p 8600 web.service.consul