跳至内容

如何在失效转移期间最大限度地减少 ElastiCache 中的停机时间?

1 分钟阅读
0

我想遵循最佳实践,最大限度地减少 Amazon ElastiCache for Redis OSS 和适用于 Valkey 的 Amazon ElastiCache 在失效转移期间的停机时间。

简短描述

ElastiCache 可能会遇到影响应用程序性能和可靠性的失效转移,原因如下:

  • 如果您耗尽内存、CPU 和网络带宽等资源,则您的节点可能会进行失效转移。
  • 如果 AWS 为更新安排维护活动,则您的节点可能会进行失效转移。
  • 如果托管节点的基础设施的物理硬件出现故障或存在问题,则您的节点可能会进行失效转移。
  • 如果您未正确配置与缓存交互的应用程序或服务,则这些配置可能会导致更长的停机时间。

解决方法

开启多可用区

要在 AWS 区域的不同可用区 (AZ) 中创建和维护主节点和副本节点,请使用 ElastiCache 多可用区功能。如果主节点出现故障,则副本节点将在最短的停机时间内接管主节点的角色。

添加只读副本

当您向 Redis 部署添加只读副本时,可以显著最大限度地减少失效转移任务中的停机时间和数据丢失。当您的只读副本管理读取请求时,请将您的主节点配置为处理写入操作。此配置具有以下优点:

  • 提高读取吞吐量
  • 减少延迟
  • 提供容错能力
  • 简化导致集群停机的维护任务

跨可用区分配节点

当您将节点分布在多个可用区时,不同可用区中的副本可提供高可用性和持续读取操作。这种配置可增强系统韧性并减少节点失效转移时的停机时间。当您首次配置集群或向现有集群添加新节点时,您可以将节点分配在多个可用区中。有关详细信息,请参阅为 ElastiCache 选择区域和可用区

使用最新的 Valkey 或 Redis OSS 版本

根据您的集群和节点类型,使用最新版本的 Valkey 或 Redis OSS 来支持最新功能。例如,禁用集群模式的集群需要 Valkey 版本 7.2 或 Redis OSS 版本 5.0.6 或更高版本才能使用计划的节点更换功能。有关详细信息,请参阅支持的节点类型

监控集群事件

要识别并响应失效转移,请查看您的 ElastiCache 集群事件。要尽早发现失效转移,请使用 Amazon Simple Notification Service (Amazon SNS) 配置 ElastiCache 以发送重要集群事件的通知。

使用正确的端点

为了最大限度地减少失效转移期间的停机时间,您必须根据集群配置为 ElastiCache for Redis OSS 集群使用正确的端点。要在禁用集群模式的集群的副本之间分配读取工作负载,请使用主端点进行写入操作,使用读取器端点进行读取操作。对于启用集群模式的集群,使用所有操作的配置端点来自动管理与正确节点的连接。当您为集群模式选择正确的端点时,可以优化性能并创建平稳的失效转移过程。有关详细信息,请参阅在 ElastiCache 中查找连接端点

**注意:**直接使用单个节点端点不是最佳做法。请改为使用适合您的连接类型的正确端点。由于节点角色在失效转移事件期间可能会发生变化,因此如果使用单个节点端点,则会遇到更多的应用程序问题。

定期测试自动失效转移

为了保持可靠的 Redis 部署,最佳做法是定期测试自动失效转移。要测试自动失效转移,必须模拟主节点故障,以确保副本升级为主节点状态。这些测试可以识别您的配置中的问题,并允许您在问题影响集群之前解决这些问题。此外,失效转移测试还提供有关应用程序性能以及如何优化架构和恢复程序的详情。

遵循适用于 Redis 客户端的最佳实践

对于您的 Redis 客户端,请遵循以下最佳实践:

  • 要增强应用程序性能和可扩展性,请使用连接池来管理可重复使用的预先建立的连接。有关详细信息,请参阅 Redis 网站上的连接池和多路复用
  • 实现异常和超时处理,为您的 Redis 集群维护高效的应用程序。您还可以查看日志中是否存在超时,以识别问题并调整配置。有关详细信息,请参阅 Redis 网站上的客户端超时
  • 要保持应用程序的韧性,请实施使用指数回退策略的重试机制。配置机制以区分值得重试的暂时性错误和不值得重试的永久性故障。有关详细信息,请参阅集群客户端发现和指数回退(Valkey 和 Redis OSS)
  • 打开日志以捕获关键指标和错误,并为集群建立性能基准。有关详细信息,请参阅 Redis 网站上的 Logging events
  • 设计您的客户端,以便动态处理集群拓扑更改并适应节点和角色的更改。要保持与集群节点的连接并优化集群,请实施智能连接池。有关详细信息,请参阅 Redis 网站上的 Redis cluster and client libraries

相关信息

Monitoring best practices with Amazon ElastiCache for Redis using Amazon CloudWatch

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

Redis 网站上的 Supported connection clients

AWS 官方已更新 1 年前