在旧的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地址。
我是领事新人。所以,如果有人可以提供领事的简短示例和建议功能,我真的很感激,所以我可以更快地抓住它。
当您使用相同的"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。