Consul作为服务发现的基础设施,它包含多个组件,提供多个功能特性:
- Service Discovery
- Health Checking
- KV Store
- Multi Datacenter
安装运行
如果你已经有docker环境,快速尝试Consul可以使用docker镜像运行。
单节点服务
docker run \ --name=consul-0 \ -d \ --network=consul \ -e CONSUL_LOCAL_CONFIG='{"skip_leave_on_interrupt": true}' \ consul agent -server -bootstrap -client 0.0.0.0
启动后可查看运行装态
[root@localhost ~]# docker exec -t consul-0 consul members Node Address Status Type Build Protocol DC Segment a9d56ba2cf69 172.18.0.5:8301 alive server 1.0.6 2 dc1 <all>
没有安装Docker那就命令行启动测试一下子了,MacOS请使用brew安装
brew install consule
这里使用的-dev
参数启动,停止后将不能保留状态。
consul agent -dev -client 0.0.0.0 -ui
如果想保留状态需要正常模式启动并指定-data-dir
目录。
mkdir -p consul/data && cd consul consul agent -server -bootstrap -client 0.0.0.0 -ui -data-dir data
参数-ui
表示同时启动web界面,然后就可以在浏览器中打开:
http://127.0.0.1:8500
集群服务
具体查看:Consul集群
服务发现(Service Discovery)
服务发现主要完成服务的注册、查询和注销,提供了HTTP API及Consul命令行两种方式。
注册服务
此API执行注册和更新服务。注意如果更新或者删除后重新,并且新的注册不存在检查时需要添加?replace-existing-checks=1
参数。
curl http://127.0.0.1:8500/v1/agent/service/register -X PUT -i -H "Content-Type:application/json" -d '{ "Name": "opsweb", "Tags": ["web"], "Address": "127.0.0.1", "Port": 11001 }'
查询服务
服务列表
curl -s 127.0.0.1:8500/v1/agent/services | python -m json.tool
服务详细配置信息
curl -s 127.0.0.1:8500/v1/agent/service/opsweb | python -m json.tool
注销服务
curl -s http://127.0.0.1:8500/v1/agent/service/deregister/opsweb -X PUT
健康检查(Health Checking)
可通过一些内置机制实现服务有消息的检查和处理。
为服务开启检查
在服务注册时定义检查,可以通过更新注册的方式完成,跟新注册用的是一样的API会进行覆盖。
curl -s http://127.0.0.1:8500/v1/agent/service/register -X PUT -i -H "Content-Type:application/json" -d '{ "Name": "opsweb", "Tags": ["web"], "Address": "127.0.0.1", "Port": 11001, "Check": { "DeregisterCriticalServiceAfter": "90m", "HTTP": "http://127.0.0.1:11001", "Interval": "10s" } }'
查看服务健康状态
查询服务在本机Agent上的状态
curl -s 127.0.0.1:8500/v1/agent/health/service/name/opsweb | python -m json.tool