集群搭建好之后需要通过 HTTP API 来进行服务的注册 /发现等请求, 那集群是怎么对外提供 IP 地址的。比如我有三个局域网地址:
但如果 192.168.10.11 的机器挂掉了。我就需要替换请求的 IP 地址。consul 集群有向外提供固定 IP 的方法吗?这样不管其中哪一个挂掉了。我的请求地址都是不变的
1
ysicing 2021-11-17 17:22:10 +08:00
consul 不支持吧?这种不是需要一个外部的负载均衡来做么
|
2
geligaoli 2021-11-17 17:23:10 +08:00
使用 consul 集群,是在本地建立一个 consul client ,本地的访问都通过 client 来转发到 集群。 那个本地的 client 会自动维护集群列表。
|
3
geligaoli 2021-11-17 17:26:31 +08:00
集群里的 consul ,多个参数 -server ,本地 当 client 的没有这个参数。
|
4
goforwardv2 OP @geligaoli 关键是这个 client 挂掉怎么办
|
5
goforwardv2 OP @ysicing 这个一般是怎么搭建的 consul 集群之前再另外搭建负载均衡吗
|
6
Rwing 2021-11-17 18:23:42 +08:00
让我想一想,我记得好像有自带的方案
|
7
ohooo 2021-11-17 18:30:55 +08:00
不是有健康检查吗,服务多实例服务名是一样的,client 有通过服务名 filter service 的 api,服务挂了会返回健康检查通过的其他 ip+port 给你
|
8
th00000 2021-11-17 18:47:38 +08:00
Consul 启动后会自己注册自己, 你可以用 xxx.service.consul 访问到
不过为什么要访问 Consul 的 server 呢? 理论上应该不存在这种需求才对 你要访问任何服务都是 foobar.server.consul, 你可以通过访问 Consul client 来获取你想要的东西, 而不是直接访问 server |
9
th00000 2021-11-17 18:51:28 +08:00
client 确实有概率挂掉, 不过可以将它封装为一个类似 systemd 的服务
Consul client 作为一个 sidecar 性能及其强大, 想挂掉非常难, 线上这么多年, 从来没碰见过 |
10
goforwardv2 OP @th00000 这个怎么封装 有参考文档之类的吗
|
11
MrEatChicken 2021-11-18 12:48:13 +08:00
@th00000
Consul 启动后会自己注册自己, 你可以用 xxx.service.consul 访问到 不过为什么要访问 Consul 的 server 呢? 理论上应该不存在这种需求才对 你要访问任何服务都是 foobar.server.consul, 你可以通过访问 Consul client 来获取你想要的东西, 而不是直接访问 server 老哥正解 |