当我的 ElastiCache for Redis 扩展时,如何最大限度地减少停机时间?

1 分钟阅读
0

当我的 Amazon ElastiCache for Redis 扩展时,我想最大限度地减少停机时间。

解决方法

为了帮助最大限度地减少停机时间,请查看这些操作并检查您的设置和维护步骤:

  • 为了最大限度地减少同步期间的停机时间,请避免在工作负载较高时进行扩展。如果集群的工作负载较高且扩展需要很长时间,则减少向 Redis 的传入请求以防止同步失败。如果发生同步,请检查 Amazon CloudWatch 中的 SaveInProgress 指标,以确定同步发生的时间。请注意,SaveInProgress 指标每分钟收集一次数据,可能无法捕获不到一分钟完成的同步。有关更多信息,请参阅 Monitoring best practices with Amazon ElastiCache for Redis using Amazon CloudWatch
  • 要确定连接群集时因客户端配置错误而导致的问题,请在非生产环境中测试扩展。根据扩展类型,可能会在扩展期间添加节点,在扩展期间移除节点,或者在扩展期间可能会更改节点 IP 地址。ElastiCache for Redis 提供不同类型的连接端点来连接到集群,因此所选的连接端点类型取决于应用程序要求。
  • 配置 Redis 客户端或应用程序代码以在另一个副本上重试查询或向主应用程序代码发送查询。如果客户端连接到处于同步过程中的新副本,则会出现 LOADING: Redis is loading the dataset in memory 错误。加载数据集所需的时间取决于节点的数据大小和性能。要确定这是否存在问题,请在非生产环境中进行测试。
  • 将集群配置为自动扩展。自动扩缩可防止因传入工作负载突然增加而导致的性能问题。有关更多信息,请参阅 Auto Scaling ElastiCache for Redis clusters

对于已关闭集群模式的 Redis 集群,请查看这些操作并检查您的设置和维护步骤:

  • 为了扩大规模,如果您的应用程序仅使用主端点进行连接,则移除副本节点时不会发生停机时间。如果您的应用程序使用读取器或单个端点连接到该副本节点,则原始连接中断。当原始连接中断时,必须建立新的 TCP 连接。应用程序还必须执行 DNS 查询,以避免连接到已删除的副本节点。如果客户端使用读取器端点,则可能会由于读取器端点的 DNS 传播而导致停机时间。
  • 要进行横向扩展,请确保在工作负载最小的时段进行横向扩展,以避免同步导致的停机时间。
  • 对于节点类型更改,繁重的工作负载可能会导致同步失败。此外,您的应用程序可能需要在主端点或读取器端点上执行 DNS 查询,以建立与新节点的新连接。DNS 传播需要几秒钟,并且在客户端到达新节点之前可能会发生服务中断。对于 Redis 版本 5.0.5 或更高版本,中断已最小化。最佳做法是升级到新的 Redis 版本以优化 ElastiCache。

对于已开启集群模式的 Redis 集群,请查看这些操作并检查您的设置和维护步骤:

  • 要在扩展期间尽量减少或没有停机时间,请参阅 Redis cluster client discovery and exponential backoff
  • 为了帮助最大限度地缩小扩展时的停机时间,请参阅 Online cluster resizing。为了最大限度地减少性能问题,请逐步扩展。在进一步横向缩减之前,请务必在初始横向缩减后的峰值时段检查集群的性能。
  • 为了帮助最大限度地缩短横向扩展时的停机时间,请参阅 Online cluster resizing
  • 当节点类型发生变化时,繁重的工作负载可能会导致同步失败。此外,新节点 IP 地址可能与旧节点不同。要确定 IP 地址,您的应用程序可以使用 cluster nodescluster slots 命令从群集获取更新信息。支持 Redis 集群的 Redis 客户端可以更新集群拓扑。要配置 Redis 客户端,请参阅您的特定客户端类型的文档。
  • 当您更改副本数量时,请确保在添加其他副本节点之前首先检查主节点的性能。当副本节点数量减少且客户端必须从已删除的副本节点读取时,请求会发送到新的副本节点。此外,为了防止向已移除的节点发出请求,客户端必须更新群集拓扑。

相关信息

Replication: Redis (Cluster Mode Disabled) vs.Redis (Cluster Mode Enabled)

Find your node endpoints

Scaling ElastiCache for Redis

Making sure that you have enough memory to create a Redis snapshot

Best practices with Redis clients

AWS 官方
AWS 官方已更新 1 年前