手动故障切换

本页面简要介绍了 Memorystore for Redis 的手动故障切换。要了解如何执行故障切换,请参阅启动手动故障切换

什么是手动故障切换?

标准层级 Memorystore for Redis 实例使用副本节点来备份主节点。当主节点健康状况不佳时会发生正常故障切换,从而使副本被指定为新的主实例。手动故障切换与正常故障切换的不同之处在于由用户自行启动手动故障切换。如需详细了解 Memorystore for Redis 复制功能的工作原理,请参阅高可用性

为什么启动手动故障切换?

启动手动故障切换使您能够测试应用如何响应故障切换。如果将来发生意外故障切换,这些信息可确保故障切换过程更顺畅。

可选的数据保护模式

以下是两种可用的数据保护模式:

  • limited-data-loss 模式(默认)。
    • 除非您更改此模式,否则手动故障切换始终以 limited-data-loss 模式运行。
  • force-data-loss 模式。

要更改数据保护模式,请使用以下某个命令:

gcloud redis instances failover INSTANCE_NAME --data-protection-mode=force-data-loss

gcloud redis instances failover INSTANCE_NAME --data-protection-mode=limited-data-loss

数据保护模式的工作原理

如果您想要测试应用在真实故障切换场景中的行为方式,则可以使用 force-data-loss 模式,因为该模式能最准确地呈现灾难恢复中故障切换的情况。

从主节点到副本的任何故障切换都会有导致部分数据丢失的风险。limited-data-loss 模式通过在启动故障切换之前验证主节点和副本之间的同步差异是否低于 30MB,将数据丢失减少到最低。

force-data-loss 模式会覆盖对主节点与副本节点同步的此类检查。如果在副本同步落后于主节点超过 30 MB 的情况下使用 force-data-loss 模式,则可能会丢失 30 MB 或更多的数据。

待复制的字节数指标

待复制的字节数指标指示在完全备份主节点之前副本需要复制的剩余字节数。您观察到,在故障切换期间,在主实例复制到副本时,待处理字节数会增加。

您可以在 Google Cloud Console 的实例详情页面上访问此指标。要查看实例详情页面,请点击项目的实例列表页面中的实例 ID。

或者,访问项目的 Google Cloud 运维套件指标浏览器,然后搜索 redis.googlapis.com/replication/offset_diff 指标。

何时运行手动故障切换

只有待复制字节数指标低于 30MB 时,使用默认 limited-data-loss 保护模式的手动故障切换才会成功。如果您想要在待复制字节数高于 30MB 时运行手动故障切换,请使用 force-data-loss 保护模式。

如果您要尝试保留尽可能多的数据,请暂时停止应用写入 Redis 实例,并等到待复制字节数指标低至您认为可以接受后再运行手动故障切换。

阻止手动故障切换的潜在问题

  • 在基本层级实例上运行手动故障切换不起作用,因为基本层级实例没有副本。

  • 如果 Redis 实例运行状况不佳,则手动故障切换操作会被阻止。

  • 如果您的实例具有待处理的未完成操作(例如扩缩或更新),则手动故障切换操作会被阻止。您必须等到实例处于 READY 状态才能运行手动故障切换。

客户端应用连接

当主节点故障切换到副本时,到 Memorystore for Redis 的现有连接会断开。但是,一旦重新连接,您的应用便可自动重定向到使用原先的连接字符串或 IP 地址的新主节点。

验证手动故障切换

您可以使用 Google Cloud Console、Google Cloud 的运维套件或 gcloud 验证手动故障切换操作是否成功。

Google Cloud Console 验证

在启动手动故障切换之前,请转到 Memorystore for Redis 实例列表页面,然后点击您的实例的名称。

然后,在实例属性下查看主实例和副本所在的区域。请记下这些区域。完成手动故障切换后再次检查此页面,以确认主节点和副本节点已切换区域。

Cloud Monitoring 验证

如需使用 Metrics Explorer 查看受监控资源的指标,请按照以下步骤操作:

  1. 在 Google Cloud Console 中,转到 Monitoring 中的 Metrics Explorer 页面。
  2. 转到 Metrics Explorer

  3. 在工具栏中,选择浏览器标签页。
  4. 选择配置标签页。
  5. 展开选择一个指标菜单,在过滤栏中输入 Node role,然后使用子菜单选择特定的资源类型和指标:
    1. 活跃资源菜单中,选择 Cloud Memorystore Redis
    2. 活跃指标类别菜单中,选择复制
    3. 活动指标菜单中,选择节点角色
    4. 点击应用
  6. 可选:如需配置数据的查看方式,请添加过滤条件并使用分组依据聚合器和图表类型菜单。例如,您可以按资源或指标标签进行分组。如需了解详情,请参阅使用 Metrics Explorer 时选择指标
  7. 可选:更改图表设置:
    • 对于配额和每天报告一个样本的其他指标,请将时间范围设置为至少一周,并将绘制类型设置为堆积条形图
    • 对于分布值指标,请将绘制类型设置为热图

Cloud Monitoring 图表以两行表示主节点和副本节点。如果某节点的行在图表上的值为 0,则该节点是副本节点。如果某节点的行在图表上的值为 1,则该节点是主节点。该图表通过分别展示行如何从 1 切换到 0,以及如何从 0 切换到 1 来表示故障切换。

gcloud 验证

在启动手动故障切换之前,请使用以下命令检查主节点所在的区域:

gcloud redis instances describe [INSTANCE_ID] --region=[REGION]

主节点位于标记为 currentLocationId 的区域中。请记下该区域。

完成手动故障切换后,您可以通过再次运行 gcloud redis instances describe 命令并检查 currentLocationId 是否已更改区域来确认主节点已切换到新区域。

此外,locationId 标签指示最初预配主节点的区域。alternativeLocationId 标签指示系统最初预配副本节点的区域。每次发生故障切换时,主实例和副本都会在这两个区域之间切换。但是,与 locationIdalternativeLocationId 关联的区域不会更改。