redis两个数据中心集群部署

时间:2011-08-08 03:29:30

标签: redis

我正在评估redis作为缓存替代方案。缓存需要部署在两个数据中心集群配置中,每个数据中心中有n台计算机。从可用的文档中我可以相对轻松地设置主/从配置。该应用程序是一个Rails应用程序,目前只计划将其用于缓存存储,并且不会执行更高级的设置操作,因此来自同一组的数据位于不同的物理盒中不是问题。我有几个问题和澄清:

  1. 在主/从配置中,如果主节点发生故障会发生什么?如何选择或选举新的主节点?是否需要更改配置或是否可以在正在运行的群集上选择新的主服务器?使用商店的应用程序如何知道新主服务器是无缝的?是否有可用的宝石从最终应用程序中抽象出这个逻辑?

  2. 在数据中心之间建立依赖关系通常不是一个好主意,因为应该计划一个数据中心停机并且应用程序仍在扩展。但是,这确实意味着每个数据项在每一侧缓存两次。虽然我认为第一点比重复数据更重要。是否将两个集群中的数据分割为两个世界中最好的数据? redis提供哪些分片支持?在跨数据中心配置中,是否可以有两个主编写器?并指定应用服务器首先尝试同一侧的从属节点,如果同一数据中心的所有从属服务器都关闭,则仅转到另一侧。

  3. 我很清楚如何配置主/从配置,就像redis服务器一样。如何配置客户端以指定哪个是主节点以及哪些是从属读取节点?如何在读取节点之间分配负载?有没有办法配置循环方案或每个应用程序服务器配置为一个从属进行所有读取?

  4. 对于大量的问题感到抱歉,但我们将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

  1. 有必要的命令,但您需要在客户端上实现节点管理。基本思路是当您检测到主节点无法访问时,将“SLAVEOF NONE”发送到可用节点,但您可以根据需要将其设置为复杂。我使用一个单独的redis实例来存储所有节点的详细信息,如果客户端无法连接到之前使用的节点,则会读取该实例。

  2. 如果redis是缓存而不是主数据存储,则每个数据中心的缓存可能更好 - 不同数据中心的缓存命中可能与本地缓存未命中一样昂贵。在此方案中,您需要的唯一交叉数据中心缓存代码是一种在写入时使远程缓存无效的方法。

  3. 这取决于您的客户端实施 - 您可以设置应用程序代码来管理您需要的节点。