一、什么是Consul?
Consul是发现和配置基础架构中的服务的工具,它具有以下功能:
- 服务发现: consul client可以提供服务,同时也可以通过consul server来发现它需要的service。通过DNS和HTTP,应用程序可以轻易找到它们所依赖的service。
- 健康检查: consul server 可以为consul client 供任何数量的健康检查,或者是特定服务的健康检查(“是Web服务器返回200 OK”),或者是与本地节点的健康检查(“内存使用率低于90%”)。系统管理员可以根据此信息来监视群集运行状况,以及各个服务的状态,并且可以将不健康的service从集群中移除。
- KV Store: Consul还提供key/value的存储功能,可以用来保存动态配置,协调服务,领导者选举等等。可以通过简单的HTTP API来调用。
- 多数据中心: Consul支持多个数据中心。这意味着Consul的用户不必担心构建额外的抽象层,以扩展到多个区域。
二、运行Consul Agent
server方式启动
代理可以server方式启动,每个数据中心都必须至少有一台服务器,通常情况下需要多台,避免单点故障。下面我们以server的方式启动一个consul agent节点,节点数据保存路径是/tmp/consul,指定server预期的数量是1(如果是多个,每个server指定的值必须一样),绑定server的地址是server_ip
consul agent -server -data-dir=/tmp/consul -bootstrap-expect 1 -bind server_ip
client的方式启动
一个server可以加入多个client,client与server之间通过DNS和HTTP通信。下面以client的方式启动agent,数据节点文件存储目录/tmp/consul,节点名称yyh,要加入的server的地址是server_ip。
consul agent -data-dir /tmp/consul -node=yyh -advertise=client_ip -join=server_ip
三、Consul常用API
1、查看当前数据中心所有服务
127.0.0.1:8500/v1/catalog/services
2、查看服务状态
127.0.0.1:8500/v1/catalog/service/{service name}
3、查看本机服务
127.0.0.1:8500/v1/agent/services
4、查看当前数据中心不健康的服务
localhost:8500/v1/health/state/critical
5、查看指定服务状态
localhost:8500/v1/health/checks/{service name}
6、查看当前数据中心所有的KV
localhost:8500/v1/kv/?recurse
7、查看指定的KV
localhost:8500/v1/kv/{keyName}
8、查看当前数据中心所有成员
localhost:8500/v1/agent/members
9、删除agent不健康的服务
curl -X PUT localhost:8500/v1/agent/service/deregister/{serviceId}
ps:还有很多。。。。
最好的学习资料就是官网了,地址:https://www.consul.io/intro/index.html