使用Consul DNS进行故障转移

问题描述 投票:0回答:1

在旧的redis主机被删除后,Consul如何解决新的redis主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才能解决,因为它是主人。但是当主人失败时,领事应该解决为192.168.248.42 or 192.168.248.43,据此,一个是主人

这是我在192.168.248.41中的consul服务配置

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

这是我在192.168.248.42中的consul服务配置

...
"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地址(主)。当主服务器关闭并且redis sentinel选择新主服务器时。领事将解析新的redis主IP地址。

我是领事新人。所以,如果有人可以提供领事的简短示例和建议功能,我真的很感激,所以我可以更快地抓住它。

redis consul failover
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.