一、API
-
註冊服務
curl http://10.40.66.144: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"}}'
返回:
HTTP/1.1 200 OK
Vary: Accept-Encoding
Date: Tue, 18 Sep 2018 08:07:06 GMT
Content-Length: 0註釋:
{
"ID": "userServiceId", //服務id
"Name": "userService", //服務名
"Tags": [ //服務的tag,自定義,可以根據這個tag來區分同一個服務名的服務
"primary",
"v1"
],
"Address": "10.40.66.144", //服務註冊到consul的IP,服務發現,發現的就是這個IP
"Port": 8080, //服務註冊consul的PORT,發現的就是這個PORT
"EnableTagOverride": false,
"Check": { //健康檢查部分
"DeregisterCriticalServiceAfter": "90m",
"HTTP": "http://10.40.66.144:8080/example/info", //指定健康檢查的URL,調用後只要返回20X,consul都認爲是健康的
"Interval": "10s" //健康檢查間隔時間,每隔10s,調用一次上面的URL
}
}
-
刪除實例(只刪除指定節點的服務實例)
1)通過IP指定節點
curl -X PUT -i -H "Content-Type:application/json" http://10.40.66.146:8500/v1/agent/service/deregister/example-4b40d694c240d518156c3b328c12b057
2)通過名稱指定節點
http://10.40.66.145:8500/v1/catalog/deregister
PUT
requestbody:
{
"ServiceID":"myExampleId1",
"Node":"consul-s-3", //必填
"Datacenter": "dc1"
} -
服務發現-根據服務名查找對應實例
curl -X GET http://10.40.66.144/v1/catalog/service/example
[{},{}] -
服務發現-根據服務名獲取健康可用(即健康檢查全部通過passing)的服務實例列表
curl -X GET -i -H "Content-Type:application/json" http://10.40.66.144/v1/health/service/example?passing=true //passing等於false返回全部,默認false -
其它
1)查詢節點node列表
curl -X GET http://10.40.66.144/v1/catalog/nodes
2)查詢服務列表
curl -X GET http://10.40.66.144/v1/catalog/services
3)其它(參照 http://www.liangxiansen.cn/2017/04/06/consul/#catalog,官網 https://www.consul.io/api/index.html)
/v1/agent/checks : 返回本地agent註冊的所有檢查(包括配置文件和HTTP接口)
/v1/agent/services : 返回本地agent註冊的所有 服務
/v1/agent/members : 返回agent在集羣的gossip pool中看到的成員
/v1/agent/self : 返回本地agent的配置和成員信息
/v1/agent/join/<address> : 觸發本地agent加入node
/v1/agent/force-leave/<node>>: 強制刪除node
/v1/agent/check/register : 在本地agent增加一個檢查項,使用PUT方法傳輸一個json格式的數據
/v1/agent/check/deregister/<checkID> : 註銷一個本地agent的檢查項
/v1/agent/check/pass/<checkID> : 設置一個本地檢查項的狀態爲passing
/v1/agent/check/warn/<checkID> : 設置一個本地檢查項的狀態爲warning
/v1/agent/check/fail/<checkID> : 設置一個本地檢查項的狀態爲critical
/v1/agent/service/register : 在本地agent增加一個新的服務項,使用PUT方法傳輸一個json格式的數據
PUT /v1/agent/service/deregister/<serviceID> : 註銷一個本地agent的服務項/v1/catalog/register : Registers a new node, service, or check
/v1/catalog/deregister : Deregisters a node, service, or check
/v1/catalog/datacenters : Lists known datacenters
/v1/catalog/nodes : Lists nodes in a given DC
/v1/catalog/services : Lists services in a given DC
/v1/catalog/service/<service> : Lists the nodes in a given service
/v1/catalog/node/<node> : Lists the services provided by a node/v1/healt/node/<node>: 返回node所定義的檢查,可用參數?dc=
/v1/health/checks/<service>: 返回和服務相關聯的檢查,可用參數?dc=
/v1/health/service/<service>: 返回給定datacenter中給定node中service
/v1/health/state/<state>: 返回給定datacenter中指定狀態的服務,state可以是"any", "unknown", "passing", "warning", or "critical",可用參數?dc=
二、各端口及其功能
端口號 | 協議 | 功能 |
---|---|---|
8300 | TCP | agent server 使用的,用於處理其他agent發來的請求 |
8301 | TCP 、UDP | agent使用此端口處理LAN中的gossip |
8302 | TCP 、UDP | agent server使用此端口處理WAN中的與其他server的gossip |
8400 | TCP | agent用於處理從CLI來的RPC請求 |
8500 | TCP | agent用於處理HTTP API |
8600 | TCP 、UDP | agent用於處理 DNS 查詢 |