Consul集群搭建

Consul集群搭建,第1张

整体架构如下:

一个Consul集群可以有多个数据中心,每个数据中心运行一个Consul Server集群,server数目一般在3-5个,因为Consul是强一致性的,server的数目太多在同步数据的时候会产生性能问题。client的数目没有限制,可以成千上万个。

(2)将解压后的consul文件移动到/usr/local/bin目录下,执行consul命令查看安装情况

(3)修改环境变量使consul安装永久生效

(4)启动集群

准备3台节点服务器:

192.168.203.130 consul1

192.168.203.131 consul2

192.168.203.132 consul3

启动consul1

启动另外两个节点(192.168.203.131,192.168.203.132):

分别将consul2,consul3加入到集群中

至此整个集群搭建完成,执行consul operator raft list-peers

命令查看集群状态,如下图

遇到的坑:

在执行consul join 192.168.203.130时会遇到如下错误:

Failed to join 192.168.203.130:dial tcp 192.168.203.130:8301:connect:no route to host

解决办法:

分别将8301,8300,8500端口加入防火墙就好了

(5)web页面查看

consul使用来做服务发现,提供了开箱即用的功能,这里记录下遇到的问题和使用总结

/v1/agent/checks : 返回本地agent注册的所有检查(包括配置文件和HTTP接口)

/v1/agent/services : 返回本地agent注册的所有 服务

/v1/agent/members : 返回agent在集群的gossip pool中看到的成员

/v1/agent/self : 返回本地agent的配置和成员信息

/v1/agent/join/<address>: 触发本地agent加入node

/v1/agent/force-leave/<node>>: 强制删除node

/v1/agent/check/register : 在本地agent增加一个检查项,使用PUT方法传输一个json格式的数据

/v1/agent/check/deregister/<checkID>: 注销一个本地agent的检查项

/v1/agent/check/pass/<checkID>: 设置一个本地检查项的状态为passing

/v1/agent/check/warn/<checkID>: 设置一个本地检查项的状态为warning

/v1/agent/check/fail/<checkID>: 设置一个本地检查项的状态为critical

/v1/agent/service/register : 在本地agent增加一个新的服务项,使用PUT方法传输一个json格式的数据

/v1/agent/service/deregister/<serviceID>: 注销一个本地agent的服务项

/v1/catalog/register : Registers a new node, service, or check

/v1/catalog/deregister : Deregisters a node, service, or check

/v1/catalog/datacenters : Lists known datacenters

/v1/catalog/nodes : Lists nodes in a given DC

/v1/catalog/services : Lists services in a given DC

/v1/catalog/service/<service>: Lists the nodes in a given service

/v1/catalog/node/<node>: Lists the services provided by a node

/v1/health/node/<node>: 返回node所定义的检查,可用参数?dc=

/v1/health/checks/<service>: 返回和服务相关联的检查,可用参数?dc=

/v1/health/service/<service>: 返回给定datacenter中给定node中service

/v1/health/state/<state>: 返回给定datacenter中指定状态的服务,state可以是"any", "unknown", "passing", "warning", or "critical",可用参数?dc=

https://www.consul.io/docs/guides/external.html

curl -X PUT -d '{"Datacenter": "dc1", "Node": "google",

"Address": " www.google.com ",

"Service": {"Service": "search", "Port": 80}}'

http://127.0.0.1:8500/v1/catalog/register

删除外部服务:

curl -X PUT -d '{"Datacenter": "dc1", "Node": "google"}' http://127.0.0.1:8500/v1/catalog/deregister

curl -X PUT -d '{"id": "3d-virtual-number-ykt-com","name": "3d-virtual-number-ykt-com","address": " api.1ketong.com ","port":80}' http://localhost:8500/v1/agent/service/register

curl -X PUT http://localhost:8500/v1/agent/service/deregister/settlerconsumer-service@10.9.153.21

nohup ./consul agent -retry-join=10.10.210.128 -config-file /usr/local/consul/config.json >/data/logs/consul.log &

consul 依据需要扩容缩容的时候即使服务器为双数,系统也能正常运行

扩容: consul join consul_server_ip

扩容后需要等待数据从leader到新fllow的同步

缩容:consul leave

使用 consul operator raft list-peers查看server信息,确认 *** 作是否成功


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/12112889.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存