【问题标题】:Failing over with single Replication Group on ElastiCache Redis在 ElastiCache Redis 上使用单个复制组进行故障转移
【发布时间】:2015-02-11 09:26:41
【问题描述】:

我正在使用以下规格测试由 Redis 支持的 ElastiCache:

  • 使用 Redis 2.8,多可用区
  • 单个复制组
  • us-east-1b 1 个主节点,us-east-1c 1 个从节点,us-east-1d 1 个从节点
  • 应用程序编写的部分是直接使用主节点的端点(primary-node.use1.cache.amazonaws.com)
  • 应用程序中只进行读取的部分指向在 HAProxy 中配置的自定义端点 (readonly.redis.mydomain.com),然后指向另外两个读取从属端点。 (readslave1.use1.cache.amazonaws.com 和 readslave2.use1.cache.amazonaws.com)

现在假设主节点(主节点)在 us-east-1b 中发生故障。

据我了解,如果主实例失败,我不必更改用于写入 Redis (primary-node.use1.cache.amazonaws.com) 的端点的 url,尽管从那里开始,我还有以下问题:

  • 我必须更改只读从站的端点名称吗?
  • 将丢失的从属设备添加到池中需要多长时间?

如果还有什么我遗漏的,我会很感激建议/信息。

谢谢!

【问题讨论】:

    标签: redis failover amazon-elasticache


    【解决方案1】:

    如果您使用的是 ElastiCache,则应使用 AWS 提供的“Primary EndpointThe”。

    该端点实际上由 Route53 支持,如果主(主)redis 已关闭,由于您启用了 MutliA-Z,它将自动故障转移到其中一个只读副本(从属)。 在这种情况下,您无需修改​​ redis 的端点。

    我不知道你为什么有这样的设计,似乎你只想写给主人,但总是从奴隶那里读。 对于 HA 代理部分,您应该使用它们的“读取端点”对所有 3 个 redis 节点进行 TCP 检查 在 haproxy 中,您可以检查端点是否为 SLAVE,如果是,您的 haproxy 应将流量重定向到该端点。

    注意在应用层,如果你的redis驱动不支持自动重连,你的脚本将无法连接到新的master节点。

    除了“自动重新连接”之外,由于 AWS 使用 Route53 DNS 进行故障转移,因此某些 lib 不会再次进行 NS 查找,这意味着 DNS 仍然指向旧 ip,它是旧的 master。

    使用HAproxy可以解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-12
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多