我们已经看到了运行Consul,增加节点和服务,以及查询这些贱点和服务是多么地简单。在这篇教程中,我们将继续增加对节点和服务健康监测的教程。健康监测对服务发现是一个关键的组件,它避免使用不健康的服务。

本篇的步骤基于前一篇 Consul集群,这里你应该运行有两个节点的集群。

定义检测

类似于服务,可以通过一个 检测定义或者通过调用HTTP API来注册一个检测。

我们将使用检测定义的方法,因为就像服务一样,使用定义是一个最为常用的方法来设置检测。

在第二个节点的Consul配置目录中创建两个定义文件:

vagrant@n2:~$ echo '{"check": {"name": "ping","script": "ping -c1 google.com >/dev/null", "interval": "30s"}}' \>/etc/consul.d/ping.jsonvagrant@n2:~$ echo '{"service": {"name": "web", "tags": ["rails"], "port": 80,"check": {"script": "curl localhost >/dev/null 2>&1", "interval": "10s"}}}' \>/etc/consul.d/web.json

第一个定义增加了一个主机级别的检测,名为"ping"。该检测每30秒间隔运行一次,调用命令 ping -c1 google.com。在一个基于脚本的健康检测中,该检测使用启动Consul进程的用户来启动该检测。如果检测命令返回一个非0的返回码,那么该节点将被标记为不健康。这就是任何基于 脚本 的健康检测的契约。

第二个命令修改名为 web 的服务,增加了一个检测,该检测每10秒用curl发送一个请求来验证该web服务是否可用。就像基于主机的健康检测,如果脚本返回一个非0的返回码,那该服务将被标记为不健康。

现在重启第二个代理或者向它发送一个 SIGHUP 信号。你会看到下列日志信息:

==> Starting Consul agent...
...[INFO] agent: Synced service 'web'[INFO] agent: Synced check 'service:web'[INFO] agent: Synced check 'ping'[WARN] Check 'service:web' is now critical

前面的几行指出该代理已经同步了新的定义。后面的几行指出了被检测的 web 服务被标记为危险。这是因为我们还没有实际运行一个web服务器,所以这个curl测试标记为失败了。

检测健康状态

现在我们已经增加了一些检测,我们可以使用HTTP API来审查它们。首先,我们可以使用命令寻找任何失败的检测(注意,这个命了可以在任何节点上运行):

vagrant@n1:~$ curl http://localhost:8500/v1/health/state/critical
[{"Node":"agent-two","CheckID":"service:web","Name":"Service 'web' check","Status":"critical","Notes":"","ServiceID":"web","ServiceName":"web"}]

我们可以看到现在只有一个检测,那是我们的 web 服务的检测,它被设置为危险状态。

另外,我们可以尝试使用DNS查询web服务。Consul不会返回任何结果因为该服务是不健康的:

dig @127.0.0.1 -p 8600 web.service.consul
...;; QUESTION SECTION:
;web.service.consul.        IN  A

下一步

在本篇教程中,你学会了增加健康检测是非常容易。通过更新配置文件并且发送一个 SIGHUP 信号给代理来更新检测定义。还可以选择使用HTTP API来动态地增加,删除,以及修改检测。该API也可以用于一个"dead man's switch",一个TTL-based check。TTL检测可以被用于一个应用程序和Consul是紧密集成的,使得业务逻辑评估是基于健康检测的一部分。

接下来,我们将浏览[Consul的键/值存储]()。

Consul入门05 - 健康检测相关推荐

  1. Consul入门05 - 健康检测 1

    我们已经看到了运行Consul,增加节点和服务,以及查询这些贱点和服务是多么地简单.在这篇教程中,我们将继续增加对节点和服务健康监测的教程.健康监测对服务发现是一个关键的组件,它避免使用不健康的服务. ...

  2. .net core consul 服务配置 服务发现 服务健康检测 服务变更加载

    准备环境 安装consul之后 1. 创建一个.net core webapi 举例为UsercenterService 2. nuget引用Consul组件  https://github.com/ ...

  3. consul代理---健康检测

    翻译至:https://www.consul.io/docs/agent/checks.html 代理的主要角色之一是系统级和应用级健康检测的管理.如果健康检查与服务相关联,则认为它是应用级.如果不与 ...

  4. consul健康检测

    consul健康检查一般有两种方式: 1.手动加一个GET方法的健康检测API @RestController public class HealthApi {@GetMapping("/h ...

  5. 最详细的Consul 入门教程

    一.什么是服务发现 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是我们的重点.我们看下面的一幅图片: 图中,客 ...

  6. Consul入门06 - 键/值对数据

    为了提供服务发现以及健康检测,Consul提供了非常容易使用的键/值对存储.它能被用于存储动态配置信息,帮助服务协作,建构leader选举机制,以及开发者可以想到的建构任何其它的东西. 本篇假设你至少 ...

  7. Consul入门04 - Consul集群

    我们已经启动了我们的第一个代理并且在这个代理上注册和查询了服务.这些显示了使用Consul是多么的容易但是并没有展示Consul的可扩展性以及可用于产品级别的服务发现的基础设施.在本篇向导中,我们将建 ...

  8. Consul入门03 - 注册服务

    在前面的步骤,我们运行了第一个代理,看到了集群的成员,并且查询了节点信息.在这篇指南里,我们将注册我们第一个服务并且查询这个服务. 定义一个服务 一个服务能够通过提供一个服务定义或者调用适当的HTTP ...

  9. Consul入门04 - Consul集群 1

    我们已经启动了我们的第一个代理并且在这个代理上注册和查询了服务.这些显示了使用Consul是多么的容易但是并没有展示Consul的可扩展性以及可用于产品级别的服务发现的基础设施.在本篇向导中,我们将建 ...

最新文章

  1. shell中字符串截取的几种方法
  2. 强制修改mysql 中root的密码
  3. isight参数优化理论与实例详解_详解oracle数据库优化参数--cursor_sharing
  4. SQL 除去数字中多于的0
  5. os.environ详解
  6. leetcode212. 单词搜索 II
  7. 20190501-整数翻转
  8. ansible的命令操作模块6
  9. Pandas基础(一)——Pandas基础
  10. Apache Shiro Java 反序列化漏洞解决修复记录
  11. 已安装 SQL Server 2005 Express 工具。若要继续,请删除 SQL Server 2005 Express 工具
  12. 分布式架构在云计算平台中的应用及优缺点
  13. Convert excel format exception.You can try specifying the ‘excelType‘ yourself
  14. 恶魔奶爸语法4-6课
  15. 【车间调度】遗传算法求解柔性作业车间调度问题
  16. 闲聊人工智能产品经理(AIPM)—人工智能产品需求
  17. 洛谷 1282 多米诺骨牌#线性动态规划#
  18. 如何设计账户余额的数据准确性?
  19. Asp.Net Ajax (2)---ScriptManager
  20. 【一】生成CA根证书、公钥、私钥指令(数字证书)

热门文章

  1. xslt的简单使用[xml--html]
  2. 第十七篇:获取 / 修改进程资源限制
  3. tbox新增stackless协程支持
  4. 十一、Python异常处理
  5. 【12】行为型-观察者模式
  6. 自定义的命民空间在其他程序集里无法调用
  7. 海量存储之十八–一致性和高可用专题
  8. 高情商的孩子是这样的
  9. Linux下根据进程ID查看进程文件的路径
  10. TCP 通信过程中各步骤的状态