Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对.
命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品.
一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制.
client: 客户端, 无状态, 将 HTTP 和 DNS 接口请求转发给局域网内的服务端集群.
server: 服务端, 保存配置信息, 高可用集群, 在局域网内与本地客户端通讯, 通过广域网与其他数据中心通讯. 每个数据中心的 server 数量推荐为 3 个或是 5 个.
ps:用了consul我才发现,go语言编写的库不用满足依赖,看起来很爽啊。
阿里云(ubuntu 16.04)
局域网:172.18.32.24x 外网:120.77.45.1x
腾讯云(windows server 2012)
局域网:10.104.185.10x 外网:119.29.233.7x
本地(deepin 15.4.1)
局域网:192.168.0.12x 外网:58.62.202.4x
consul版本:v0.9.2
这里每个局域网开一个consul server,用于不用局域网集群的通信节点
阿里云:
consul agent -server -bootstrap-expect 1 -node=localServer -bind=172.18.32.24x -advertise-wan=120.77.45.1x -data-dir /opt/data1 -dc=ali-dc1
参数含义:
腾讯云:
consul agent -server -bootstrap-expect 1 -node=localServer -bind=0.0.0.0 -advertise-wan=119.29.233.7x -data-dir c:/consul -dc=tx-dc1
-bind=0.0.0.0不行话,换成具体ip,0.0.0.0表示任意ip
本地:
consul agent -server -bootstrap-expect 1 -node=localServer -bind=192.168.0.12x -advertise-wan=58.62.202.4x -data-dir /opt/data1 -dc=deepin-dc1 > /dev/null &
如无意外我们就启动了三个能被其他server加入的server节点
我遇到一种情况是:阿里云不能加入到腾讯云的server中。
所以,我把其余两个节点加入到阿里云节点中
腾讯云输入如下,加入到阿里云:
consul join -wan 120.77.45.1x
本地也输入如下,加入到阿里云:
consul join -wan 120.77.45.1x
成功加入,提示如下:Successfully joined cluster by contacting 1 nodes.
查看阿里云 wan链接节点情况:
root@iZwz96uh8912ewgq9yv5nxZ:~# consul members -wan
Node Address Status Type Build Protocol DC
localServer.ali-dc1 120.77.45.1x:8302 alive server 0.9.2 2 ali-dc1
localServer.deepin-dc1 58.62.202.4x:8302 alive server 0.9.2 2 deepin-dc1
localServer.tx-dc1 119.29.233.7x:8302 alive server 0.9.2 2 tx-dc1
localServer.tx-dc2 58.62.202.4x:8302 failed server 0.9.2 2 tx-dc2
localServer.tx-dc2 58.62.202.4x:8302 failed server 0.9.2 2 tx-dc2这个是我本机window搞的一个,系统切到linux了,所以不在线
查看本机 wan链接节点情况:
root@hui-PC:/home/hui# consul members -wan
Node Address Status Type Build Protocol DC
localServer.ali-dc1 120.77.45.1x:8302 alive server 0.9.2 2 ali-dc1
localServer.deepin-dc1 58.62.202.4x:8302 alive server 0.9.2 2 deepin-dc1
localServer.tx-dc1 119.29.233.7x:8302 alive server 0.9.2 2 tx-dc1
自此局域网的节点间连接完成。
参考博客:consul多数据中心搭建