我正在使用以下规范测试Redis支持的ElastiCache:
现在假设主节点(主节点)在us-east-1b中失败。
根据我的理解,如果主实例失败,我将不必更改写入Redis的终点的url(primary-node.use1.cache.amazonaws.com),尽管从那里,我仍然有以下问题:
如果我还缺少其他任何东西,我会很感激您的建议/信息。
谢谢!
答案 0 :(得分:0)
如果您使用的是ElastiCache,您应该使用" Primary Endpoint"由AWS提供。
该端点实际上由Route53支持,如果主(主)redis关闭,因为启用MutliA-Z,它将自动故障转移到其中一个只读副本(从属)。 在这种情况下,您不需要修改redis的端点。
我不知道为什么你有这样的设计,似乎你只想写给主人,但总是从奴隶那里读。 对于HA代理部分,您应该使用"读取端点"对所有3个redis节点进行TCP检查。 在haproxy中,您可以检查端点是否为SLAVE,如果是,您的haproxy应该将流量重定向到该端点。
请注意,在应用程序层中,如果您的redis驱动程序不支持自动重新连接,则您的脚本将无法连接到新的主节点。
除了"自动重新连接",由于AWS正在使用Route53 DNS进行故障转移,因此某些lib将不再执行NS查找,这意味着DNS仍然指向OLD ip,这是老主人。
使用HAproxy可以解决这个问题。