一、API

  1. 注册服务

    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
    }
    }
     

  2. 删除实例(只删除指定节点的服务实例)

    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"
    }

  3. 服务发现-根据服务名查找对应实例

    curl -X GET http://10.40.66.144/v1/catalog/service/example
    [{},{}]

  4. 服务发现-根据服务名获取健康可用(即健康检查全部通过passing)的服务实例列表

    curl -X GET -i -H "Content-Type:application/json" http://10.40.66.144/v1/health/service/example?passing=true        //passing等于false返回全部,默认false
  5. 其它

    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=

二、各端口及其功能

端口号协议功能
8300TCPagent server 使用的,用于处理其他agent发来的请求
8301TCP 、UDPagent使用此端口处理LAN中的gossip
8302TCP 、UDPagent server使用此端口处理WAN中的与其他server的gossip
8400TCPagent用于处理从CLI来的RPC请求
8500TCPagent用于处理HTTP API
8600TCP 、UDPagent用于处理 DNS 查询
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐