首页 > 其他分享 >Consul的HTTP API和使用方法

Consul的HTTP API和使用方法

时间:2022-10-08 12:09:32浏览次数:89  
标签:HTTP name service Consul ping agent API 服务 id

Consul 支持基础结构的服务注册和发现(称为内部服务),也支持外部服务(第三方 SAAS服务以及无法直接运行 Consul 代理的其它环境,例如 redis)。

直接使用sudo apt-get install consul命令即可安装

然后我们使用命令启动

1

consul agent -dev -client 0.0.0.0 -enable-script-checks -node=web -ui

上面配置指定了允许任何-node 命名此 consul 节点名称为 web,并开启 UI(-ui)访问(端口8500)。

注:如果是生产环境,则应在enable_script_checks = true,以持久化配置。

Consul 的 HTTP API

Consul 的主要接口是 Restful HTTP API,这些 API 可以对节点、服务、检查、配置等对象执行基本的 CRUD 操作。

官方​​https://www.consul.io/api-docs/index​

Service API

Service 相关的 API 都在 /v1/agent/service 下,这里来列一下这些 API 地址(省略了/v1),凑些字数。

· /agent/services:该端点返回在本地代理程序中注册的所有服务;

· /agent/service/{service_id}:返回在本地代理上注册的单个服务实例的完整服务定义;

· /agent/health/service/name/{service_name}/ /agent/health/service/id/{service_id}:通过名称或id检索本地代理上的聚合服务状态;

· /agent/service/register:注册服务;

· /agent/service/deregister/{service_id} :注销服务;

· /agent/service/maintenance/{service_id}:该端点将给定的服务置于“维护模式”,在维护模式下,该服务将被标记为不可用,并且不会出现在DNS或API查询中;

通过这些

Consul的HTTP API和使用方法_ico

简单地注册服务

本小节介绍通过

这是官方文档给出的一个注册服务的配置示例:

1

2

3

4

5

6

7

8

9

10

11

{

  "id": "web1",

  "name": "web",

  "port": 80,

  "check": {

    "name": "ping check",

    "args": ["ping", "-c1", "learn.hashicorp.com"],

    "interval": "30s",

    "status": "passing"

  }

}

我们先来了解一下这个配置的字段。

id 为这个服务的唯一标记,而 name 表示此服务的逻辑名称; check 是健康检查的配置,后面会单独介绍。

通过

1

2

3

4

5

6

7

8

9

10

11

12

13

curl --location -g --request PUT 'http://{{consul}}:8500/v1/agent/service/register' \

--data-raw '{

  "id": "web1",

  "name": "web",

  "port": 80,

  "check": {

    "name": "ping check",

    "args": ["ping", "-c1", "learn.hashicorp.com"],

    "interval": "30s",

    "status": "passing"

  }

}

'

如果要查询相应的服务是否已经注册,则可使用/v1/catalog/service/{name} 查询。

1

curl http://{{consul}}:8500/v1/catalog/service/web


由于我们配置了健康检查,可以在




健康检查的配置和查询

健康检查配置:

1

2

3

4

5

6

"check": {

  "name": "ping check",

  "args": ["ping", "-c1", "learn.hashicorp.com"],

  "interval": "30s",

  "status": "passing"

}

check 对象用于运行状况检查,上面的配置就是每 30s 执行 ping 命令,检查 learn.hashicorp.com 是否可以访问,status 表示注册时此服务的初始状态。

args 最终会组合成一条命令: ping -c1 learn.hashicorp.com,-c1 即表示只 ping 1次。ping 失败时提示:

1

ping: learn.hashicorp.com: Temporary failure in name resolution

Consul 支持 Script, HTTP, TCP, Time to Live (TTL), Docker, and gPRC 等方式进行监控检查,例如 HTTP 形式,可以这样写配置:

1

2

3

4

"Definition": {

  "http": "https://learn.hashicorp.com/consul/",

  "interval": "30s"

}

如果要获得读取本地节点上所有服务的运行状况检查结果,则可以直接通过HTTP GET 请求 ​​http://{{consul}}:8500/v1/agent/checks​​ 获得。结果如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

{

    "service:web1": {

        "Node": "web",

        "CheckID": "service:web1",

        "Name": "ping check",

        "Status": "critical",

        "Notes": "",

        "Output": "ping: learn.hashicorp.com: Temporary failure in name resolution\n",

        "ServiceID": "web1",

        "ServiceName": "web",

        "ServiceTags": [],

        "Type": "script",

        "Definition": {},

        "CreateIndex": 0,

        "ModifyIndex": 0

    }

}

如果要单独查询节点上的某个服务,可以使用:

1

/health/service/{name}

如果要查询某个节点上的所有服务,可以使用:

1

/health/node/{name}

本文内容较少,API 较多,不需要全部都测试一次,可以挑一些常用的了解即可。不同编程语言都有相应的库,不需要基于 HTTP API 编写代码,可以直接调用官方提供的 SDK。


标签:HTTP,name,service,Consul,ping,agent,API,服务,id
From: https://blog.51cto.com/u_15135810/5737131

相关文章

  • consul安装及使用
    Consul是HashiCorp公司的一个用于实现分布式系统的服务发现与配置工具。Consul内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方......
  • docker搭建yapi接口文档系统、Idea中上传接口、在线调用
    一、前言在我们后端开发中,必不可少的是接口的交接,有很多种方式,常见的就是swagger,不过这个侵入性太强了。还有就是接口文档的框架,比如今天小编带大家一起搭建的yapi,在公司......
  • 漏洞修复:tomcat中间件修复 检测到目标URL存在http host头攻击漏洞
    漏洞名称:检测到目标URL存在httphost头攻击漏洞风险级别:中危修复方案:修改tomcat\conf\server.xml打开server.xml配置文件,找到如下配置:  将Host里name的值localhost......
  • Java如何调用HttpURLConnection类模拟浏览器访问呢?
    下文笔者讲述使用Java代码模拟浏览器请求的方法分享,如下所示:实现思路:使用HttpURLConnection类即可模拟浏览器访问例:packagecom.java265.other;importjava.......
  • Python启动HTTP服务进行文件传输
    有时候局域网共享个东西不方便,尤其在服务器上的时候,总不能先下载下来,再上传上去吧,于是经常在这台机器用python起个http服务,然后去另一台机器直接访问,一来二去,妥试不......
  • 谷歌翻译无法使用,google翻译失效,googleapis失效的解决方案
    我们日常工作和学习中,都无可避免的参考一些英文网站或者一些优秀的外国文献,这时候谷歌翻译就显得尤为重要。现在忽然不能使用了,经过几番探索,可通过修改dns解析即可恢复,希望......
  • ES API基本操作
    创建索引,user为索引名称PUThttp://192.168.0.110:9200/user查询索引基本信息GEThttp://192.168.0.110:9200/user查询所有索引GEThttp://19......
  • vueuse 核心api
     供自己学习使用。代码来源于elementplus。后续看情况是否增加说明  isClient  useStorageconstuserPrefer=useStorage<boolean|string>(......
  • go-zero微服务实战系列(三、API定义和表结构设计)
    前两篇文章分别介绍了本系列文章的背景以及根据业务职能对商城系统做了服务的拆分,其中每个服务又可分为如下三类:api服务-BFF层,对外提供HTTP接口rpc服务-内部依赖的微服......
  • 数维图API文档:SovitJS编辑器开放API调用方法
    SovitChart、Sovit2D、Sovit3D已经在众多行业领域被使用,也受到了大家的一致好评,为了更好的二次开发,不少用户想把我们的编辑器集成在自己的系统中,强烈要求我们开放API接口,经......