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

相关文章

· Consul

· Consul集群

[ 编辑 | 历史 ]
最近由“jilili”在“2019-12-02 03:38:00”修改