手动故障切换简介

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

什么是手动故障切换?

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

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

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

可选的数据保护模式

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

  • limited-data-loss 模式(默认)。
  • force-data-loss 模式。

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

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

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

数据保护模式的工作原理

limited-data-loss 模式会验证 主实例和副本之间的数据差小于 30 MB, 启动故障切换。主数据库上的偏移量会针对每个字节递增 数据量。在limited-data-loss中 则故障切换将取消,如果主实例和主服务器之间的最大偏移量 每个副本不小于 30MB。您能否容忍更多数据丢失且 主动执行故障切换,请尝试将数据保护模式设置为 force-data-loss

force-data-loss 模式采用一系列故障切换策略, 主动执行故障切换。它不检查 主实例和副本实例,然后再启动故障切换;您或许可以 会丢失超过 30MB 的数据更改。

待复制的字节数指标

待复制的字节数指标指示在完全备份主节点之前副本需要复制的剩余字节数。您可能会注意到 在 2023 年 3 月 31 日之前, 进行故障切换如果故障切换是由硬件错误触发的,您可能会看到等待复制的字节数为空,因为在从主机修复新副本之前无法获取偏移值。

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

或者,访问项目对应的 Metrics Explorer,然后搜索 redis.googlapis.com/replication/offset_diff 指标。

何时运行手动故障切换

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

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

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

  • 由于基本层级实例无法运行手动故障切换 层级实例没有主实例可以进行故障切换的副本。

  • 如果 Redis 实例健康状况不佳,则会阻止“限量数据丢失”手动故障切换操作,以尽可能减少数据丢失。

  • 如果您运行无限期执行的 Lua 脚本,那么 使用 force-data-loss 启动故障切换。在这种情况下,可限制数据丢失的故障切换操作将无法成功完成。

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

客户端应用连接

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

验证手动故障切换

您可以使用 Google Cloud 控制台或 gcloud 验证手动故障切换操作是否成功。

Google Cloud 控制台验证

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

然后,在配置标签页中的主要位置旁边,查看哪个可用区 主要节点所在的虚拟机请记下该区域。请在执行下列操作时再次查看此页面: 请完成手动故障切换,确认主节点已切换可用区。

Cloud Monitoring 验证

如需使用 Metrics Explorer 查看受监控资源的指标,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 Metrics Explorer 页面:

    进入 Metrics Explorer

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 指标元素中,展开选择指标菜单,在过滤栏中输入 Node role,然后使用子菜单选择一个特定资源类型和指标:
    1. 活跃资源菜单中,选择 Cloud Memorystore Redis
    2. 活跃指标类别菜单中,选择复制
    3. 活跃指标菜单中,选择节点角色
    4. 点击应用
  3. 如需从显示结果中移除时序,请使用过滤条件元素

  4. 如需组合时序,请使用聚合元素上的菜单。例如,如需根据虚拟机所在的可用区显示虚拟机的 CPU 利用率,请将第一个菜单设置为平均值,并将第二个菜单设置为可用区

    聚合元素的第一个菜单设置为未聚合时,系统会显示所有时序。聚合元素的默认设置由您选择的指标类型决定。

  5. 对于配额和每天报告一个样本的其他指标,请执行以下操作:
    1. 显示窗格中,将微件类型设置为堆叠条形图
    2. 将时间段设置为至少一周。

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 关联的区域不会更改。