这是一个记录Consul 常用API的文档,因为Consul的跨语言性,所以http API在Consul中尤为重要,此文档基于Consul版本1.6.0的v1 API,有其他的变化请参阅Consul官方API文档。
tips
Consul API采用经典的rest图谱Consul API版本只有一个版本,所以所有的前缀都为 /v1/,返回值以Json格式传输,可以添加pretty参数格式化Json,以本地部署为例,整体的baseUrl为127.0.0.1:8500/v1/ 。
agent
GET /agent/members 获取agent成员信息
获取代理成员列表和基本信息,类似于指令'consul members'
GET /agent/self 获取本代理agent详细配置信息
PUT /agent/reload 重载agent配置
GET /agent/self 以流的形式查看日志,直到关闭链接
GET /agent/metrics 查看agent指标
开启维护模式
PUT /agent/maintenance 开启维护模式 URL-param enable 必需值,enable=true为开启/反之关闭 reason 记录维护模式开启的原因
开启维护模式后,该代理节点将会被标注为不可用,可以用于上线前临时屏蔽node的服务。
相对应的,service中也有维护模式:
PUT /agent/service/maintenance/{instanceid} 开启service的维护模式 URL-param enable 必需值,enable=true为开启/反之关闭 reason 记录维护模式开启的原因 URL-variable instanceid 配置的当前ip的instanceId
节点变化
PUT /agent/join/{ip} 加入指定ip的agent URL-variable ip 待加入节点的ip
同'consul join'
PUT /agent/leave 关闭agent
PUT /agent/forceleave 强制关闭agent
leave主要用于正常关闭agent,forceleave主要用于无用agent的信息移除,即node服务已经处于failed状态并且不被需要。
check
check代表服务的健康检查,是服务的子集,单纯的健康检查没有什么意义,但可以注册多种健康检查并应用于同一个服务中
GET /agent/checks 获取所有check信息
输出服务列表和其对应的检查信息
PUT /agent/check/register 注册一个服务检查
详细见check-注册服务检查
PUT /agent/check/deregister/{checkid} 注销一个服务检查
check-注册服务检查
PUT /agent/service/register 注册服务
requsetBody为json格式,参数如下:
参数 | 默认值/必需 | 参数阐释 |
name | 必需 | 服务检查名 |
id | "" | 服务检查id,默认与name保持一致 |
interval |
必需 | 服务检查时间间隔 |
http | http检查则必需 | 指定服务检查的http地址,如使用此方式则为必需 |
method | "GET" | 指定服务检查的http请求方法 |
header | map | 指定服务检查的http请求头 |
timeout | 10s | 服务检查请求超时时间 |
serviceId | 指定关联的服务id |
service
这个API模块相对是比较重要的模块
GET /agent/services 获取服务列表
GET /agent/service/{instanceId} 获取单个服务的详细信息
GET /agent/health/service/name/{serviceName} 获取服务健康状态 URL-param format 如为text,则只返回代表服务健康的String,例如passing
GET /agent/service/{instanceId} 获取单个服务的详细信息
PUT /agent/service/register 注册服务
注册一个服务,java中结合项目自动注册即是调用此接口,详细信息写在service-注册服务
GET /agent/service/deregister/{instanceId} 注销服务
service-注册服务
PUT /agent/service/register 注册服务
requsetBody为json格式,参数如下:
参数 | 默认值/必需 | 参数阐释 |
name | 必需 | 服务名 |
id | "" | 服务id,默认与name保持一致 |
tags |
[] | 标签集合 |
address | "" | 注册的ip地址,将被用于健康检查 |
port | 0 | 服务端口 |
check | object{check} | 指定服务的健康检查 |
weights | 1 | 指定服务的权重 |
检查部分请参考check-注册服务检查
catalog
通过catalogAPI能直接获取有关的endpoint信息,这其实是consul的k-v带来的功能,因为服务信息均存储在kv中,所以此API的功能其实与其他API会有重叠的部分