consul[安装/服务启用/注册].md
简介
使用场景
Consul用于服务注册、发现与配置共享
install
wget https://releases.hashicorp.com/consul/1.7.2/consul_1.7.2_linux_amd64.zip
unzip consul_1.7.2_linux_amd64.zip
sudo mv consul /bin/
- 验证安装成功
consul -v
consul 单点
- 启动一个client
consul agent -dev -ui -client 0.0.0.0 - 查看节点信息
启动后即可通过 IP:8500 打开管理界面查看节点信息(同集群模式在Web客户端查看节点信息) - 也可通过命令行查看节点信息
curl IP:8500/v1/catalog/nodes
consul 集群模式
每个服务对应一个主机[或虚拟主机]
- 启动一个server
consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -node=biby-1 -ui -client 0.0.0.0 -bind 192.168.10.10 -join 192.168.10.10 - 启动一个client
consul agent -data-dir /tmp/consul -node=biby-c1 -ui -client 0.0.0.0 -bind 12.12.12.12 -join 192.168.10.10
在web客户端查看节点信息
在consul服务机器查看节点信息[集群成员]
在不同的机器上都能看到相同的consul节点信息
consul members
查看成员角色
consul operator raft list-peers
参数说明
参数名 | 说明 |
---|---|
agent | 核心命令[维护成员信息/运行状态监测/声明服务/清理请求] |
server | server模式 |
client | 客户端服务注册的地址,可以和当前server一致,也可以是其他主机地址,默认127.0.0.1 |
ui | 开启web控制台 |
bootstrap-expect | 想要创建的集群数组[官方建议3或5] |
data-dir | 数据存储目录 |
node | 节点名称 |
bind | 集群通讯地址 |
join | 加入的集群地址 |
服务注册
通过HTTP API注册服务
注册一个ID为 userServiceId, name为 userService 的服务
curl http://127.0.0.1:8500/v1/agent/service/register -X PUT -i -H "Content-Type:application/json" -d '{
"ID": "userServiceId",
"Name": "userService",
"Tags": [
"primary",
"v1"
],
"Address": "127.0.0.1",
"Port": 8000,
"EnableTagOverride": false,
"Check": {
"DeregisterCriticalServiceAfter": "90m",
"HTTP": "http://www.baidu.com",
"Interval": "10s"
}
}'
查看服务是否注册成功
curl http://127.0.0.1:8500/v1/catalog/service/userService
通过管理界面查看已注册的服务
健康检查
curl http://192.168.10.10:8500/v1/health/service/userService?passing
注册字段说明
{
"ID": "userServiceId", //服务id
"Name": "userService", //服务名
"Tags": [ //服务的tag,自定义,可以根据这个tag来区分同一个服务名的服务
"primary",
"v1"
],
"Address": "127.0.0.1",//服务注册到consul的IP,服务发现,发现的就是这个IP
"Port": 8000, //服务注册consul的PORT,发现的就是这个PORT
"EnableTagOverride": false,
"Check": { //健康检查部分
"DeregisterCriticalServiceAfter": "90m",
"HTTP": "http://www.baidu.com", //指定健康检查的URL,调用后只要返回20X,consul都认为是健康的
"Interval": "10s" //健康检查间隔时间,每隔10s,调用一次上面的URL
}