consul 公网集群搭建

背景

在网上查了查consul集群搭建,虽然文章不少,但是讲的都是如何在局域网搭一个集群。

其实这没什么不妥,实际生产环境里,一个集群一般部署在公司的一个机房里,确实是局域网环境。

可问题是,我在百度云,腾讯云和华为云各买了一台学生优惠服务器,只有这三个云服务器,也想体验一下consul集群。

好在,胡乱搜索资料的过程中,真的歪打正着,从一篇配置多数据中心的博客里获得了灵感,成功搭建了一个公网consul集群~

废话少说,下面直接给出三个服务器上需要运行的命令。

服务器1

consul agent -server -bootstrap-expect 2 -bind=内网ip -advertise=公网ip -client=0.0.0.0 -data-dir=/data/consul -node=consul1 -ui

服务器2

consul agent -server -bootstrap-expect 2 -bind=内网ip -advertise=公网ip -client=0.0.0.0 -data-dir=/data/consul -node=consul2 -ui
consul join 服务器1公网ip

服务器3

consul agent -server -bootstrap-expect 2 -bind=内网ip -advertise=公网ip -client=0.0.0.0 -data-dir=/data/consul -node=consul3 -ui
consul join 服务器1公网ip

验证

在3个服务器上都操作完成之后,在浏览器输入以下url打开consul ui,其中ip可以是任意一个服务器的公网ip。

ip:8500/ui/dc1/services/consul

如果看到如下内容,则证明集群运作正常,也就是我们的公网consul集群搭建成功啦~

参数说明

最后,解释一下命令里的几个参数,要知其所以然嘛,哈哈。

-server

就是consul agent以server身份运行,consul agent可以以client或者server身份运行,其中client是不会持久化存储数据的(但是有缓存),只有server会持久化存储数据,client在接收到请求之后,会根据请求的using cache参数,也就是是否使用缓存,决定是将缓存里的数据直接返回给查询者,还是将请求转发给server,查询时还可以设置缓存的有效期,如果client的缓存超过了有效期,则需要向server转发请求,同时用结果更新缓存。当consul以集群形式运行时,server之间需要保持数据同步(一致性协议是raft),为了控制同步的时间,避免较大的写入延迟,consul的server推荐值为3个,不应超过5个,而client则没有这种限制,可以根据实际情况运行任意多个。

-bootstrap-expect 2

集群最少运行两个server才可用。consul不像zookeeper,必须保持半数以上节点运行,集群才能正常运行,consul是可以配置的。

-client=0.0.0.0

绑定客户端,只有绑定的客户端才可以连接,设置为0.0.0.0就是所有客户端都可以连接。

-data-dir=/data/consul

上面说了,server会持久化存储数据,存储路径就是通过这个参数设置的。

-node=consul2

含义很简单,就是给server节点起个名字,但是需要注意的是,所有节点名字不能是一样的,如果是复制粘贴的命令,一定记得修改这个参数!

发布了39 篇原创文章 · 获赞 25 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/u013536232/article/details/104248539