多语言展示
当前在线:1207今日阅读:27今日分享:41

Consul学习之Health Checks健康检查_05

现在已经看到运行Consul、节点和服务、并且查询这些节点和服务是多么的简单。这一节,将给节点和服务添加健康检查。健康检查是服务发现的重要组件,他可以防止使用不健康的服务。这一节是基于Consul集群的,现在你应该启动了两个运行的集群节点(n1和n2)。参考“Consul学习之Consul集群_04”。1Consul学习之Consul集群_04
工具/原料

Consul

方法/步骤
1

vagrant up 启动虚拟机(如果没有启动的话),注意两个ip,用于设置xshell.

2

首先安装xshell,使用Xshell登陆虚拟机,用cmd打开登陆不能复制,太烦了。   n1:127.0.0.1:2222   n2: 127.0.0.1:2200   用户名和密码都是:vagrant参考“如何通过堡垒机连接虚拟机”,安装和连接。

3

Defining Checks:定义检查和服务相似,一个检查可以通过提供一个检查定义文件或者通过一个HTTP API请求。本节将会使用检查定义的方式,就和定义前面章节定义服务一样,这事最常用的定义方式。给第二个节点n2,创建两个定义文件。

4

命令1:echo '{'service': {'name': 'web', 'tags': ['rails'], 'port': 80,  'check': {'script': 'curl localhost >/dev/null 2>&1', 'interval': '10s'}}}' \  >/etc/consul.d/web.json  第一遍的时候没有成功,说是没有权限,切换root权限就好了。

5

命令2:echo '{'check': {'name': 'ping',  'script': 'ping -c1 baidu.com >/dev/null', 'interval': '30s'}}' \  >/etc/consul.d/ping.json

6

第一个命令修改了服务名为web;增加了一个检查,每隔10秒通过curl发送一个请求去确认web服务可用。和主机级别的健康检查一样,如果这个脚本返回非0数据,则表示服务不健康。第二个定义了一个主机级别的检查ping。这个检查每隔30秒调用一次 ping -c1 baidu.com(这个命令时ping一次,Windows不能执行,Linux可以)。如果返回非0数据,则表示节点不健康。这事所有的基于脚本的检查的约定。

7

启动n1和n2的consul(如果没有启动的话)n1:consul agent -server -bootstrap-expect=1 \    -data-dir=/tmp/consul -node=agent-one -bind=172.20.20.10 \    -enable-script-checks=true -config-dir=/etc/consul.dn2:consul agent -data-dir=/tmp/consul -node=agent-two \    -bind=172.20.20.11 -enable-script-checks=true -config-dir=/etc/consul.dn1加入n2:从新打开一个n1的终端输入命令:consul join 172.20.20.11

8

Checking Health Status:检查健康状态1、查询失败的检查:n2的启动日志可以看到service:web 检查的状态是critical(危机的)所以使用命令:curl http://localhost:8500/v1/health/state/critical发现查询到了service:web2、dig @127.0.0.1 -p 8600 web.service.consul使用命令查询服务,查看结果其实是查询到的n1的services。n2的失败了,所以没有查询出来。

推荐信息