跳至内容

如何遵循适用于 Valkey 的 ElastiCache 或 ElastiCache for Redis OSS 自行设计的集群的失效转移和恢复事件的最佳实践?

3 分钟阅读
0

我想遵循我的适用于 Valkey 的 Amazon ElastiCache 或 Amazon ElastiCache for Redis OSS 自行设计的集群中的失效转移事件的最佳实践。

简短描述

失效转移和恢复事件是 Amazon ElastiCache 的重要组成部分,它使 ElastiCache 具有弹性。但是,当失效转移和恢复事件发生时,这些事件可能会影响应用程序的性能和可用性。

最佳做法是通过执行以下操作来减少因失效转移和恢复事件而导致的影响集群的问题:

  • 查看您的事件。
  • 了解事件的原因。
  • 为事件做准备。
  • 配置事件通知。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

查看您的事件

ElastiCache 记录与您的集群、安全组和参数组相关的各种事件。

事件包括但不限于资源创建和删除、扩展操作、失效转移、节点重启和快照创建。为了更好地了解和分析 ElastiCache 集群中的事件,请查看您的 ElastiCache 事件

ElastiCache 事件日志中的失效转移事件示例:

December 5, 2024, 10:12:20 Finished recovery for cache nodes 0001
December 5, 2024, 10:10:48 Recovering cache nodes 0001
December 5, 2024, 10:05:45 Recovering cache nodes 0001
December 5, 2024, 10:04:24 Failover from master node <node name> to replica node <node name> completed

ElastiCache 事件日志中的恢复事件示例:

2022-10-05 19:20 Finished recovery for cache nodes 0001
2022-10-05 19:18 Recovering cache nodes 0001
2022-10-05 19:14 Recovering cache nodes 0001

**注意:**Amazon ElastiCache for Memcached 不支持失效转移,但您可能会在恢复事件的事件日志中看到类似的消息。

了解事件的原因

在失效转移事件期间,ElastiCache 将不可用的主节点替换为副本节点。ElastiCache 还会替换用户请求的操作或计划内事件的主节点。有关详细信息,请参阅 Amazon ElastiCache 常见问题解答

事件示例:

  • 测试失效转移功能
  • 执行计划内维护
  • 解决可用区问题

如果副本节点遇到可用性问题,则 ElastiCache 会将副本替换为新的副本节点。

**注意:**此替换不会启动失效转移事件。

在这些情况下,当 ElastiCache 尝试恢复集群时,ElastiCache 会记录这些恢复事件。

**注意:**要确定某个节点是否为主节点,请使用 IsMaster Amazon CloudWatch 指标。有关详细信息,请参阅 Valkey 和 Redis OSS 的指标

计划外失效转移和恢复事件

在 ElastiCache 中,当主节点意外出现故障并提示服务将副本节点提升为主角色时,就会发生计划外失效转移。同样,如果副本节点需要更换,当副本出现故障时,ElastiCache 会自动预置新的副本节点。这两个过程都能最大限度地减少停机时间并保持高可用性。以下是计划外失效转移和更换的常见原因:

  • 对于与 ElastiCache 主机相关的潜在问题,例如硬件故障、网络问题或可用区故障,ElastiCache 会执行恢复。对于 AWS 基础设施,在极少数出现故障的情况下,自动化流程可实现集群的高可用性。
  • 对于繁重的工作负载,Amazon ElastiCache for Redis OSS 和适用于 Valkey 的 Amazon ElastiCache 为单线程。因此,长时间运行的命令可能会阻止其他操作。群集中的过大工作负载可能导致资源过度利用和耗尽,并导致失效转移和恢复。例如,复杂的命令、低效的 Lua 脚本和基于密钥的大型操作可能会使集群不堪重负并降低性能。

**注意:**当主副本因可用区临时中断而出现故障时,ElastiCache 会在可用区恢复后启动新的副本。

计划内的失效转移和恢复事件

计划内的失效转移和恢复事件可能会发生在定期维护或用户启动的操作中。

为了进行定期维护,AWS 会定期升级 ElastiCache 实例集,以增强 ElastiCache 集群的安全性、可靠性和运行性能。定期维护事件(例如作为持续托管维护一部分的节点更换和服务更新)可以启动失效转移和恢复事件。有关详细信息,请参阅 Amazon ElastiCache 托管维护和服务更新帮助页面

对于用户发起的操作,用户通过 TestFailover API、测试失效转移 AWS CLI 命令或 ElastiCache 控制台启动 TestFailover。要将只读副本提升为已禁用主集群模式的集群,请启动升级操作。有关详细信息,请参阅将 Valkey 或 Redis OSS(已禁用集群模式)复制组的只读副本升级为主副本

**注意:**在某些情况下(例如大规模运维事件期间),AWS 可能会阻止此 API。如果 AWS 阻止了此 API,您将在事件日志中看到以下消息: “测试失效转移 API 调用了节点组 0001。”

为事件做准备

对于计划内的失效转移事件,例如维护或服务更新,ElastiCache 会在集群为传入的写入请求提供服务时替换节点。要缓解问题,请遵循计划内失效转移事件的最佳实践。有关详细信息,请参阅 Amazon ElastiCache 托管维护和服务更新帮助页面

对于计划外失效转移事件,当您为集群启用多可用区时,ElastiCache 会自动进行失效转移。

**注意:**如果在写入使用副本端点的节点时在副本上发生失效转移,则该节点可能不可用。替换副本后,该节点可用于读取请求。

要减少计划内和计划外事件期间出现的问题,请遵循连接和配置最佳实践

配置事件通知

要快速响应事件及其原因,请将 ElastiCache 配置为在集群中发生失效转移或恢复时发送通知。有关详细信息,请参阅 Managing ElastiCache Amazon Simple Notification Service (Amazon SNS) notifications

当您将 ElastiCache 配置为使用 Amazon SNS 发送通知时,您会收到与以下示例类似的通知:

恢复事件示例:

Recovery reason : Recovery completed for node as ElastiCache monitoring detected a
 network reachability failure on the node, ElastiCache:CacheNodeReplaceComplete : <node>
Recovery reason : Recovery completed for node as ElastiCache monitoring detected
 software issues on the node, ElastiCache:CacheNodeReplaceComplete : <node>
Recovery reason : Recovery completed for node as ElastiCache monitoring detected
 unresponsive engine on the node, ElastiCache:CacheNodeReplaceComplete : <node>
Recovery reason : Recovery completed for node as ElastiCache monitoring detected
busy and unresponsive engine on the node, ElastiCache:CacheNodeReplaceComplete : <node>

失效转移事件示例:

Failover reason : Failover completed for node as ElastiCache monitoring detected a
network reachability failure on the node, ElastiCache:FailoverComplete : <node>
Failover reason : Failover completed for node as ElastiCache monitoring
detected software issues on the node, ElastiCache:FailoverComplete : <node>
Failover reason : Failover completed for node as ElastiCache monitoring
detected unresponsive engine on the node, ElastiCache:FailoverComplete : <node>
Failover reason : Failover completed for node as ElastiCache monitoring detected busy
 and unresponsive engine on the node, ElastiCache:FailoverComplete : <node>

**注意:**ElastiCache for Memcached 不支持针对恢复事件的增强消息。

相关信息

Monitoring best practices with Amazon ElastiCache for Redis using Amazon CloudWatch

如何解决 ElastiCache for Redis 中的高延迟问题?

如何解决自行设计的 ElastiCache for Redis 集群中 CPU 使用率增加的问题?

AWS 官方已更新 7 个月前