(3) Consul 主要端口和API

一、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/

    : 触发本地agent加入node
    /v1/agent/force-leave/>: 强制删除node
    /v1/agent/check/register : 在本地agent增加一个检查项,使用PUT方法传输一个json格式的数据
    /v1/agent/check/deregister/ : 注销一个本地agent的检查项
    /v1/agent/check/pass/ : 设置一个本地检查项的状态为passing
    /v1/agent/check/warn/ : 设置一个本地检查项的状态为warning
    /v1/agent/check/fail/ : 设置一个本地检查项的状态为critical
    /v1/agent/service/register : 在本地agent增加一个新的服务项,使用PUT方法传输一个json格式的数据
    PUT /v1/agent/service/deregister/ : 注销一个本地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/ : Lists the nodes in a given service
    /v1/catalog/node/ : Lists the services provided by a node

    /v1/healt/node/: 返回node所定义的检查,可用参数?dc=
    /v1/health/checks/: 返回和服务相关联的检查,可用参数?dc=
    /v1/health/service/: 返回给定datacenter中给定node中service
    /v1/health/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 查询

你可能感兴趣的:((3) Consul 主要端口和API)