consul 集群搭建问题

2021-11-17 17:09:04 +08:00
 goforwardv2

集群搭建好之后需要通过 HTTP API 来进行服务的注册 /发现等请求, 那集群是怎么对外提供 IP 地址的。比如我有三个局域网地址:

  1. 192.168.10.10
  2. 192.168.10.11
  3. 192.168.10.12 分别在上面开启一个 consul agent server. 我可以分别向三个地址发送 HTTP 请求。比如我选择向(2)发送 curl http://192.168.10.11:8500/v1/agent/services

但如果 192.168.10.11 的机器挂掉了。我就需要替换请求的 IP 地址。consul 集群有向外提供固定 IP 的方法吗?这样不管其中哪一个挂掉了。我的请求地址都是不变的

1772 次点击
所在节点    程序员
11 条回复
ysicing
2021-11-17 17:22:10 +08:00
consul 不支持吧?这种不是需要一个外部的负载均衡来做么
geligaoli
2021-11-17 17:23:10 +08:00
使用 consul 集群,是在本地建立一个 consul client ,本地的访问都通过 client 来转发到 集群。 那个本地的 client 会自动维护集群列表。
geligaoli
2021-11-17 17:26:31 +08:00
集群里的 consul ,多个参数 -server ,本地 当 client 的没有这个参数。
goforwardv2
2021-11-17 17:41:26 +08:00
@geligaoli 关键是这个 client 挂掉怎么办
goforwardv2
2021-11-17 17:42:12 +08:00
@ysicing 这个一般是怎么搭建的 consul 集群之前再另外搭建负载均衡吗
Rwing
2021-11-17 18:23:42 +08:00
让我想一想,我记得好像有自带的方案
ohooo
2021-11-17 18:30:55 +08:00
不是有健康检查吗,服务多实例服务名是一样的,client 有通过服务名 filter service 的 api,服务挂了会返回健康检查通过的其他 ip+port 给你
th00000
2021-11-17 18:47:38 +08:00
Consul 启动后会自己注册自己, 你可以用 xxx.service.consul 访问到
不过为什么要访问 Consul 的 server 呢? 理论上应该不存在这种需求才对
你要访问任何服务都是 foobar.server.consul, 你可以通过访问 Consul client 来获取你想要的东西, 而不是直接访问 server
th00000
2021-11-17 18:51:28 +08:00
client 确实有概率挂掉, 不过可以将它封装为一个类似 systemd 的服务
Consul client 作为一个 sidecar 性能及其强大, 想挂掉非常难, 线上这么多年, 从来没碰见过
goforwardv2
2021-11-17 21:08:16 +08:00
@th00000 这个怎么封装 有参考文档之类的吗
MrEatChicken
2021-11-18 12:48:13 +08:00
@th00000

Consul 启动后会自己注册自己, 你可以用 xxx.service.consul 访问到
不过为什么要访问 Consul 的 server 呢? 理论上应该不存在这种需求才对
你要访问任何服务都是 foobar.server.consul, 你可以通过访问 Consul client 来获取你想要的东西, 而不是直接访问 server

老哥正解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/816091

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX