使用 Consul DNS 故障转移 redis
Failover redis with Consul DNS
旧的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.42or
192.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
当我挖掘时,consul 将只解析一个 IP 地址(master)。当 master 宕机时,redis sentinel 会选择新的 master。 consul 将解析为新的 redis master IP 地址。
我是 Consul 的新手。所以,如果有人能给出 consul 的简短示例和建议功能,我真的很感激,这样我就可以更快地掌握它。
当您使用相同的 "name"
注册多个服务时,它们将出现在 <name>.service.consul
下(当然如果它们是健康的)。在你的例子中,你没有为你的 redis
服务定义任何健康检查,这就是你在 DNS 查询响应中看到所有服务 IP 的原因。
对于您只需要 Redis 主机 IP 的用例,我建议使用 health check . I'm not familiar how one would query Redis, to find out if the node is the master. But you can use for an example script check 注册服务,您的脚本将 return 0
,如果当前Redis 节点被 Redis sentinel 选举为 master。 Consul 会自动将该服务实例识别为健康的,您将在 dig redis.service.consul
查询 Consul DNS 接口时仅看到它的 IP。
旧的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.42or
192.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
当我挖掘时,consul 将只解析一个 IP 地址(master)。当 master 宕机时,redis sentinel 会选择新的 master。 consul 将解析为新的 redis master IP 地址。
我是 Consul 的新手。所以,如果有人能给出 consul 的简短示例和建议功能,我真的很感激,这样我就可以更快地掌握它。
当您使用相同的 "name"
注册多个服务时,它们将出现在 <name>.service.consul
下(当然如果它们是健康的)。在你的例子中,你没有为你的 redis
服务定义任何健康检查,这就是你在 DNS 查询响应中看到所有服务 IP 的原因。
对于您只需要 Redis 主机 IP 的用例,我建议使用 health check . I'm not familiar how one would query Redis, to find out if the node is the master. But you can use for an example script check 注册服务,您的脚本将 return 0
,如果当前Redis 节点被 Redis sentinel 选举为 master。 Consul 会自动将该服务实例识别为健康的,您将在 dig redis.service.consul
查询 Consul DNS 接口时仅看到它的 IP。