4

我已经使用 jedis 将 redis 集成到我的 spring web 应用程序中(redis 支持 AWS 弹性缓存)。使用单个 jedis 连接工厂写入和读取单个节点可以正常工作。

我现在需要将它扩展到一个集群,以便写入主节点并从辅助节点读取。即,如果一个发生故障,那么 AWS 会自动进行复制,在这种情况下,我将连接的主机名将发生变化。

如何读取出现的新节点?

我如何从 spring 容器(我的意思是 XML 文件)连接到这个?

请任何人有有用的建议,以实现上述场景。

我将不胜感激任何可能有助于解决上述问题的链接或代码。

到目前为止,我正在使用一个连接工厂,使用 jedis 和 redis 模板进行操作。

4

2 回答 2

5

您无需做任何事情,AWS ElastiCache 将处理故障转移。

您有一个具有两个节点的 redis 集群,主节点和副本节点。如果主节点发生故障,则会自动故障转移到副本节点。故障转移发生在复制组节点 DNS 级别

您的应用程序连接到复制组节点而不是直接连接到主节点 url/ip 非常重要

您可以在 ElastiCache -> Replication Groups ->(选择您的复制组)中找到复制组端点,在底部有节点组详细信息主端点示例 myReplicationGroup.8asdas.ng.0001.use1.cache.amazonaws.com:6379

在故障转移的情况下,会有一些停机时间。根据我的经验,不到 1 分钟。

故障节点恢复后,如果您启用了多可用区,它可能会成为辅助节点并保持这种状态

于 2016-04-04T14:43:49.417 回答
1

当任何节点出现故障时,一切都在发生,无需您的任何干预。您也不需要为此故障转移编写任何代码。您所要做的就是使用 Redis Elasticache 集群的 DNS 名称,而不是其 IP。
例如,假设您有 1 个主设备和 2 个从设备。当主服务器宕机时,一个新的从服务器将自动被选为主服务器,AWS 将更改主服务器的 DNS 以指向成为新主服务器的从服务器 IP。它还将旋转一个新的从属设备,替换转换为主设备的从属设备,并更新从属设备的 DNS 记录以指向新的 IP 地址。所以你不需要担心任何事情,因为主机名保持不变,只有它们后面的 IP 会改变。在这里,您可以找到更多关于幕后发生的事情的详细信息:适用于 Redis 的 Amazon ElastiCache 的自动故障转移

于 2015-08-31T07:57:51.313 回答