Consul集群搭建
首先准备节点,3台server(使用vm的虚拟机)和一台client(就使用本地机器,本地机器为windows10)
- server-1 ip:192.168.74.101
- server-2 ip:192.168.74.102
- server-3 ip:192.168.74.103
- 本地机器
在Linux上安装Consul
#下载consul
wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip
#解压安装包
unzip consul_0.7.5_linux_amd64.zip
#解决办法-bash: unzip: 未找到命令如果解压出现该错误
yum -y install unzip
#将解压好的consul可执行命令拷贝到/usr/local/bin
cp consul /usr/local/bin
#测试一下
consul
在每台机器上安装好后
启动每个consul的server节点
#登录Ip为192.168.74.101机器,以server的形式运行consul
consul agent -server -bootstrap-expect 3 -data-dir /etc/consul.d -node=server-1 -bind=192.168.74.101 -ui -client 0.0.0.0 &
#登录Ip为192.168.74.102机器,以server的形式运行consul
consul agent -server -bootstrap-expect 2 -data-dir /etc/consul.d -node=server-2 -bind=192.168.74.102 -ui -client 0.0.0.0 &
#登录Ip为192.168.74.103机器,以server的形式运行consul
consul agent -server -bootstrap-expect 2 -data-dir /etc/consul.d -node=server-3 -bind=192.168.74.103 -ui -client 0.0.0.0 &
启动consul的client节点
consul agent -client=0.0.0.0 -data-dir /etc/consul.d -node=client-1
将除101机器以外的机器,加入到101机器
consul join 192.168.74.101
#查看集群信息
consul member
#也可以打开浏览器,http://192.168.74.101:8500
Consul集群常见的问题
(1)节点与服务的注销
当服务或者节点失效了,consul并不会对失效的注册信息进行删除。但是服务确实是不可使用的。如果担心节点失效,或者服务失效过多影响了监控,可以通过Http API的形式进行处理。
- 注销任意节点与服务: /catalog/deregister
- 注销当前节点的服务: /agent/service/deregister/:service_id
- 如果每个节点不可用了,也可以在本机使用consul leave命令,或者其他节点使用consul force-leave 节点id
(2)健康检查与故障转移
在集群的环境下,健康检查是由服务注册的Agent来处理的,那么如果这个Agent挂掉了,那么节点的健康检查就处在无人管理的状态。
从实际应用来看,节点上的服务既要被发现,又要发现别的服务,如果节点挂掉了,仅提供被发现的功能,实际上是挂掉的。当然发现别的服务也可以不使用本机节点,可以通过访问一个nginx实现若干的Consul节点的负载均衡来实现。