张子阳的博客

首页 读书 技术 店铺 关于
张子阳的博客 首页 读书 技术 关于

Consul 运行和查看Client - Part.2

2018-12-26 张子阳 分类: 分布式系统

Consul 安装和配置Server.html - Part.1 中,配置了3节点的server集群。接下来,这篇文章将部署一台Client,并查看它的运行状态。

启动Consul client

使用局域网内的另一台服务器或者电脑作为Consul的Client agent,我用的是工作用Mac电脑,使用如下命令运行Consul Client:

$ ./consul agent \
-data-dir=/Users/zhangzy/linux/consul/data \
-config-dir=/Users/zhangzy/linux/consul/config \
-node=mac_work \
-bind=192.168.3.13 \
-enable-local-script-checks=true \
-client='127.0.0.1 192.168.3.13'
我没有将consul程序拷贝至$PATH目录下,所以上面的命令需要在包含有consul的目录下运行,注意到运行consul时是./consul,而不是直接consul。

这里的大多数参数都和启动server时的相同,最重要的是少了-server选项,说明它是以consul client模式启动。

将节点加入集群

启动以后,因为还没有加入任何集群,同时自身又是以Client模式启动,所以会看到这样一个错误:

2018/12/26 08:47:23 [WARN] manager: No servers available
2018/12/26 08:47:23 [ERR] agent: failed to sync remote state: No known Consul servers

如果执行consul members命令,会看到只有它自己:

$ ./consul members
Node      Address            Status  Type    Build  Protocol  DC   Segment
mac_work  192.168.3.13:8301  alive   client  1.4.0  2         dc1  <default>

使用上一篇中用过的命令 consule join 加入集群:

$ ./consul join 192.168.1.56
Successfully joined cluster by contacting 1 nodes.

查看新加入的节点

client 加入集群以后,可以在Web UI的Nodes标签页中查看,可以看到多了一个mac_work节点:

Consul 新加入了mac_work节点

在集群内的任意一台机器上执行consul members,都可以看到集群成员:

$ ./consul members
Node      Address            Status  Type    Build  Protocol  DC   Segment
consul1   192.168.1.56:8301  alive   server  1.4.0  2         dc1  <all>
consul2   192.168.1.57:8301  alive   server  1.4.0  2         dc1  <all>
consul3   192.168.1.58:8301  alive   server  1.4.0  2         dc1  <all>
mac_work  192.168.3.13:8301  alive   client  1.4.0  2         dc1  <default>
mac_work的Type是client,其余服务器的Type都是server。

退出集群

退出集群有两种模式:一种是和平退出(Graceful leave),一种是异常退出(Failed)。

和平退出

对于前台进程,可以通过按Ctrl+C退出;对于后台进程,可以通过kill -2 [PID]退出(kill -INT [PID]);还可以执行consul leave命令退出。

此时,集群认为该节点正常退出,状态是left:

$ ./consul members
Node      Address            Status  Type    Build  Protocol  DC   Segment
consul1   192.168.1.56:8301  alive   server  1.4.0  2         dc1  <all>
consul2   192.168.1.57:8301  alive   server  1.4.0  2         dc1  <all>
consul3   192.168.1.58:8301  alive   server  1.4.0  2         dc1  <all>
mac_work  192.168.3.13:8301  left    client  1.4.0  2         dc1  <default>
和平退出以后,在Web UI上就看不到该节点了,但控制台命令上会显示出来。

异常退出

除了这三种方式的退出,会认为是异常退出。例如执行:kill -9 [PID]。

此时在集群的server上执行consul members,会显示为failed:

# consul members
Node      Address            Status  Type    Build  Protocol  DC   Segment
consul1   192.168.1.56:8301  alive   server  1.4.0  2         dc1  <all>
consul2   192.168.1.57:8301  alive   server  1.4.0  2         dc1  <all>
consul3   192.168.1.58:8301  alive   server  1.4.0  2         dc1  <all>
mac_work  192.168.3.13:8301  failed  client  1.4.0  2         dc1  <default>

如果此时查看Web UI,会看到该节点还在,但状态是Critical:

mac_work节点异常

总结

至此,我们学习了如何启动consul client,将其加入集群,查看其状态。接下来,就可以使用Consul的服务注册、服务发现、健康检查、KV存储等一系列功能了。

感谢阅读,希望这篇文章能给你带来帮助!