其他参考:https://www.cnblogs.com/duanxz/p/9660766.html

原文:https://www.douban.com/note/629645759/

注意:使用API需严格控制url末尾有无斜杠

服务增减测试,API和reload优先级测试

1、手动增减conf.d/*.json,然后操作consul reload,会增减对应的服务

2、通过HTTP API增减服务后,执行consul reload,会还原成conf.d/*.json的服务配置,之前HTTP API的增减服务操作会被覆盖,也就是API会导致json文件和内存中的服务信息不一致。(尚未发现consul提供将当前内存中的服务配置信息dump出.json文件的功能)

实践结论1:consul reload会以conf.d/*.json为准去同步当前consul内存中当前机器注册的服务。
使用consul建议使用conf.d/*.json文件的方式增减服务,而非API,这样有落地的json文件多一份保障。

实践结论2:

Node名称唯一,通过修改json然后consul reload方式增加节点时会取当前机器的(内网)IP,具体如何区别的内外外网未知。

通过API注册服务时,json参数Node和Address必填,会使用Address覆盖掉Node当前的Address

实践结论3:

consul reload不会reload配置文件consul.json,只reload conf.d/*.json

实践结论4:

若干agent server会保存同样的数据到设置的data目录,agent client也会保存一部分数据至data目录,重启consul agent(server或client)的时候,会重新加载data目录的信息,猜测client存放的是有版本号的服务信息,并且重启时会从server端同步最新的数据。

consul HTTP API KV篇
0、查看当前集群所有服务

curl -s 127.0.0.1:8500/v1/catalog/services | python -m json.tool

0.5、查看本机配置

curl -s 127.0.0.1:8500/v1/agent/self | python -m json.tool

1、查看服务状态

curl -s http://127.0.0.1:8500/v1/catalog/service/prometheus-pushgateway | python -m json.tool

1.5、查看本机服务

curl -s 127.0.0.1:8500/v1/agent/services | python -m json.tool

2、查看不健康的服务

curl -s http://localhost:8500/v1/health/state/critical | python -m json.tool

3、添加KV(值为test,url末尾的斜杠会算作key的一部分)
curl -X PUT-d 'test' http://localhost:8500/v1/kv/key1
curl -X PUT-d 'test' http://localhost:8500/v1/kv/key1/

4、查看当前所有的KV

curl -s http://localhost:8500/v1/kv/?recurse | python -m json.tool

5、查看单个KV

curl -s http://localhost:8500/v1/kv/petanne/key1 | python -m json.tool

6、查看指定路径下的KV(url末尾的斜杠会算作key的一部分,可以理解为以petanne开头的所有key)

curl-s http://localhost:8500/v1/kv/petanne?recurse | python -m json.tool

curl-s http://localhost:8500/v1/kv/petanne/?recurse | python -m json.tool

7、删除单个KV

curl -X DELETE http://localhost:8500/v1/kv/petanne

8、删除指定路径下的KV(末尾斜杠同查看)

curl -X DELETE http://localhost:8500/v1/kv/petanne?recurse

9、修改单个KV

curl -X PUT -d 'newval' http://localhost:8500/v1/kv/petanne/key1

curl -X PUT -d 'newval' http://localhost:8500/v1/kv/petanne/key1?cas=5820778

(cas == ModifyIndex 才能修改成功,防止多人同时修改时冲突)

10、查看KV(查看比指定index大的ModifyIndex的该key的值,最多等待5秒,否则返回当前最新值)

curl "http://localhost:8500/v1/kv/petanne/key2?index=5820781&wait=5s"

agent篇
agent endpoints用来和本地agent进行交互,一般用来服务注册和检查注册,支持以下接口

/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格式的数据
/v1/agent/service/deregister/<serviceID> : 注销一个本地agent的服务项
catalog篇
catalog endpoints用来注册/注销nodes、services、checks

/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

health篇
health endpoints用来查询健康状况相关信息,该功能从catalog中单独分离出来

/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=

session篇
session endpoints用来create、update、destory、query sessions

/v1/session/create: Creates a new session
/v1/session/destroy/<session>: Destroys a given session
/v1/session/info/<session>: Queries a given session
/v1/session/node/<node>: Lists sessions belonging to a node
/v1/session/list: Lists all the active sessions

acl篇
acl endpoints用来create、update、destory、query acl

/v1/acl/create: Creates a new token with policy
/v1/acl/update: Update the policy of a token
/v1/acl/destroy/<id>: Destroys a given token
/v1/acl/info/<id>: Queries the policy of a given token
/v1/acl/clone/<id>: Creates a new token by cloning an existing token
/v1/acl/list: Lists all the active tokens

event篇
event endpoints用来fire新的events、查询已有的events

/v1/event/fire/<name>: 触发一个新的event,用户event需要name和其他可选的参数,使用PUT方法
/v1/event/list: 返回agent知道的events

status篇
status endpoints用来或者consul 集群的信息

/v1/status/leader : 返回当前集群的Raft leader
/v1/status/peers : 返回当前集群中同事

4-consul HTTP API及实践的更多相关文章

  1. .net core Ocelot Consul 实现API网关 服务注册 服务发现 负载均衡

    大神张善友 分享过一篇 <.NET Core 在腾讯财付通的企业级应用开发实践>里面就是用.net core 和 Ocelot搭建的可扩展的高性能Api网关. Ocelot(http:// ...

  2. Consul和Kong的实践(一)

    Consul和Kong的实践(一) 这一篇先介绍consul集群,以及consul和应用服务的结合使用,下一篇是和kong网关的结合. 一.Consul的集群安装 以其中一台机器为例: mkdir / ...

  3. Ocelot+Consul 集群搭建实践

    博客园已经有很多大神写过consul集群搭建了.大家都在玩,那我也不能托后退呢 不过自己研究下还是好的.毕竟每个人遇到的问题的不同 研究过才能说自己玩过consul,文章有部分名词解释是收集网络 Co ...

  4. 基于nginx+lua+redis高性能api应用实践

    基于nginx+lua+redis高性能api应用实践 前言 比较传统的服务端程序(PHP.FAST CGI等),大多都是通过每产生一个请求,都会有一个进程与之相对应,请求处理完毕后相关进程自动释放. ...

  5. 我所理解的Restful API最佳实践

    一直在公司负责API数据接口的开发,期间也遇到了不小的坑,本篇博客算是做一个小小的记录. 1. 不要纠结于无意义的规范    在开始本文之前,我想先说这么一句:RESTful 真的很好,但它只是一种软 ...

  6. ASP.NET Core Web API 最佳实践指南

    原文地址: ASP.NET-Core-Web-API-Best-Practices-Guide 介绍 当我们编写一个项目的时候,我们的主要目标是使它能如期运行,并尽可能地满足所有用户需求. 但是,你难 ...

  7. 我所认为的RESTful API最佳实践

    我所认为的RESTful API最佳实践 不要纠结于无意义的规范 在开始本文之前,我想先说这么一句:RESTful 真的很好,但它只是一种软件架构风格,过度纠结如何遵守规范只是徒增烦恼,也违背了使用它 ...

  8. js-新兴的API,最佳实践,离线应用于客户端存储

    离线应用于客户端存储: 1.离线检测:online以及offline事件,都是在window对象上触发 navigator.online为true的时候是表示设备能够上网 2.使用一个描述文件(man ...

  9. REST与RESTFul API最佳实践

    我经常会面试一些做PHP的开发者,让我很奇怪的是,10个人总有8个多不知道什么是REST服务,甚至是没有听说过.但RESTFul API已经是现在互联网里对外开放接口的主流模式,可参考: 豆瓣API  ...

随机推荐

  1. JavaScript继承的最初设想

    JavaScript没有真正的类(class)和实例(instance),而是靠一种奇特的原型链模式,来实现继承. 在Brendan Eich设计之初,Javascript里面都是对象,必须有一种机制 ...

  2. VUE基础实用技巧

    Vue以前听说过,有了解过一点.当时还在热衷于原生JavaScript去写一些方法的封装,不是为啥,就感觉这样很帅,后面多多少少接触了一些JQuery的用法,到现在为止,JavaScript原生封装的 ...

  3. JavaWeb之Fliter & Listener

    Fliter & Listener Listener 监听器 作用 监听某一事件的发生.状态的改变. 监听器内部实现机制 接口回调 接口回调 A在执行循环,当循环到5的时候, 通知B. 事先先 ...

  4. HTML常用标签二

    图像标签和路径 目录文件夹:普通的文件夹,里面存放了我们做页面需要的相关素材,比如html文件,图片等 根目录:打开目录文件夹的第一层就是根目录 路径 相对路径 以引用文件所在位置为参考基础,而建立出 ...

  5. Dynamics 365中计算字段与Now进行计算实体导入报错:You can't use Now(), which is of type DateTime, with the current function.

    微软动态CRM专家罗勇 ,回复338或者20190521可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me. 计算字段是从Dynamics CRM 2015 SP1版本开始推 ...

  6. oracle 死锁 锁

    [zhuan]今天看群里在讨论数据库死锁的问题,也一起研究了下,查了些资料在这里总结下. 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将 ...

  7. IAR运行程序警告:undefined behavior: the order of volatile accesses is undefined in this statement

    运算符两边都是volatile变量的警告,将IAR设置如下即可:

  8. 博客美化——Silence主题皮肤

    介绍   一款专注阅读的博客园主题,主要面向于经常混迹 博客园 的朋友.其追求大道至简的终极真理,界面追求简洁.运行追求高效.部署追求简单. 博客皮肤源码地址 预览地址 如何部署.使用皮肤 Silen ...

  9. slot 的简单使用(一)匿名插槽

    slot 是父组件与子组件的通选方式可以将父组件的内容显示在子组件当中或者说可以将 让你封装的组件变的更加的灵活,强壮! 组件 slot-exmple.vue <template> < ...

  10. 泛型T

    作用: 使用泛型类型可以最大限度地重用代码.保护类型的安全以及提高性能. 泛型最常见的用途是创建集合类 1.性能:如List<object> 与 List<T> 将一个 int ...