Consul 集群5

2021-12-01 17:01:47 浏览数 (2)

脱离集群

可以使用 Ctrl-C 来平滑地退出,也可以强行Kill退出,区别是主动告知其它节点自己的离开,和被其它节点标记为失效,被发现离开


健康检查

健康检查对于避免将请求发送给运行不正常的服务是一个相当关键的机制

和服务一样,有两种方式来定义健康检查

  • 通过配置文件
  • 使用 HTTP API

定义检查

这里使用配置文件的方式来定义健康检查

代码语言:javascript复制
[root@docker ~]# echo '{"check": {"name": "ping","script": "ping -c1 soft.dog >/dev/null", "interval": "30s"}}'  > /etc/consul.d/ping.json
[root@docker ~]# echo '{"service": {"name": "web", "tags": ["rails"], "port": 80,"check": {"script": "curl localhost >/dev/null 2>&1", "interval": "10s"}}}' > /etc/consul.d/web.json 
[root@docker ~]# cat /etc/consul.d/ping.json 
{"check": {"name": "ping","script": "ping -c1 soft.dog >/dev/null", "interval": "30s"}}
[root@docker ~]# cat /etc/consul.d/web.json 
{"service": {"name": "web", "tags": ["rails"], "port": 80,"check": {"script": "curl localhost >/dev/null 2>&1", "interval": "10s"}}}
[root@docker ~]# 

重载配置

通过给进程发送 SIGHUP 的信号来使配置重载

代码语言:javascript复制
[root@docker ~]# ps faux | grep consul
root     22094  1.2  0.3  25084 13756 pts/0    Sl   21:51   1:07  |       _ consul agent -data-dir /tmp/consul -node=a2 -bind=192.168.100.103 -config-dir /etc/consul.d
root     25063  0.0  0.0 112644   960 pts/1    S    23:20   0:00          _ grep --color=auto consul
[root@docker ~]# kill -s SIGHUP 22094
[root@docker ~]#

这时可以观察到日志输出

代码语言:javascript复制
...
...
==> Caught signal: hangup
==> Reloading configuration...
    2016/03/18 23:21:07 [INFO] agent: Synced service 'web'
    2016/03/18 23:21:07 [INFO] agent: Synced check 'ping'
    2016/03/18 23:21:08 [WARN] agent: Check 'service:web' is now critical
    2016/03/18 23:21:18 [WARN] agent: Check 'service:web' is now critical
    2016/03/18 23:21:28 [WARN] agent: Check 'service:web' is now critical
    2016/03/18 23:21:32 [INFO] agent: Synced check 'ping'
    2016/03/18 23:21:38 [WARN] agent: Check 'service:web' is now critical
...
...
...

重新加载配置后,两个检查脚本都成功载入了

ping 脚本检查正常,因为我的博客地址是可达的,同时由于我们并没有真正在本地启web服务,80端口不存在,也不提供内容,所以检查结果是状态不正常

0 人点赞