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