V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
goforwardv2
V2EX  ›  程序员

consul 集群搭建问题

  •  
  •   goforwardv2 · 2021-11-17 17:09:04 +08:00 · 1749 次点击
    这是一个创建于 1106 天前的主题,其中的信息可能已经有所发展或是发生改变。

    集群搭建好之后需要通过 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 的方法吗?这样不管其中哪一个挂掉了。我的请求地址都是不变的

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

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

    老哥正解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1028 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 21:46 · PVG 05:46 · LAX 13:46 · JFK 16:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.