【问题标题】:Failover redis with Consul DNS使用 Consul DNS 故障转移 redis
【发布时间】:2019-04-25 15:30:02
【问题描述】:

在旧的redis master被删除后,Consul如何解析新的redis master ip地址? 例如 : 我做了while true; do dig redis.service.google.consul +short; sleep 2; done 回复是

192.168.248.43
192.168.248.41
192.168.248.42

192.168.248.41
192.168.248.42
192.168.248.43

...

我的期望是它只解析到 192.168.248.41 因为它是主人。但是当master宕机时,consul应该解析为192.168.248.42or192.168.248.43,根据哪个是master

这是我在 192.168.248.41 中的领事服务配置

...
"services": [
        {
            "id": "redis01-xxx",
            "name": "redis",
            "tags": ["staging"],
            "address": "192.168.248.41",
            "port": 6379
        }
    ]
...

这是我在 192.168.248.42 中的领事服务配置

...
"services": [
        {
            "id": "redis01-xxx",
            "name": "redis",
            "tags": ["staging"],
            "address": "192.168.248.42",
            "port": 6379
        }
    ]
...

和 192.168.248.43 一样。

我的期望就像这个视频https://www.youtube.com/watch?v=VHpZ0o8P-Ts

当我进行挖掘时,领事将只解析一个 IP 地址(主机)。当 master 宕机并且 redis sentinel 选择新的 master 时。 consul 将解析为新的 redis 主 IP 地址。

我是领事的新手。所以,如果有人能给出 consul 的简短示例和建议功能,我真的很感激,这样我就能更快地抓住它。

【问题讨论】:

    标签: redis consul failover


    【解决方案1】:

    当您使用相同的"name" 注册多个服务时,它们将出现在<name>.service.consul 下(当然如果它们是健康的)。在您的情况下,您没有为您的 redis 服务定义任何健康检查,这就是您在 DNS 查询响应中看到所有服务 IP 的原因。

    对于只需要 Redis 主服务器 IP 的用例,我建议使用 health check 注册服务。我不熟悉如何查询 Redis,以确定节点是否为主节点。但是您可以使用 script check 的示例,如果当前 Redis 节点被 Redis 哨兵选为主节点,您的脚本将返回 0。 Consul 会自动将该服务实例识别为健康的,并且您将在对 Consul DNS 接口的dig redis.service.consul 查询中仅看到它的 IP。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-28
      • 2021-02-27
      • 1970-01-01
      • 2016-01-04
      • 2014-10-05
      • 2017-08-03
      • 2017-07-10
      • 1970-01-01
      相关资源
      最近更新 更多