Consul
vagrant up 启动虚拟机(如果没有启动的话),注意两个ip,用于设置xshell.
首先安装xshell,使用Xshell登陆虚拟机,用cmd打开登陆不能复制,太烦了。 n1:127.0.0.1:2222 n2: 127.0.0.1:2200 用户名和密码都是:vagrant参考“如何通过堡垒机连接虚拟机”,安装和连接。
Defining Checks:定义检查和服务相似,一个检查可以通过提供一个检查定义文件或者通过一个HTTP API请求。本节将会使用检查定义的方式,就和定义前面章节定义服务一样,这事最常用的定义方式。给第二个节点n2,创建两个定义文件。
命令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权限就好了。
命令2:echo '{'check': {'name': 'ping', 'script': 'ping -c1 baidu.com >/dev/null', 'interval': '30s'}}' \ >/etc/consul.d/ping.json
第一个命令修改了服务名为web;增加了一个检查,每隔10秒通过curl发送一个请求去确认web服务可用。和主机级别的健康检查一样,如果这个脚本返回非0数据,则表示服务不健康。第二个定义了一个主机级别的检查ping。这个检查每隔30秒调用一次 ping -c1 baidu.com(这个命令时ping一次,Windows不能执行,Linux可以)。如果返回非0数据,则表示节点不健康。这事所有的基于脚本的检查的约定。
启动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
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的失败了,所以没有查询出来。