手动故障转移

本页面简要介绍了 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 验证手动故障转移操作是否成功。

Cloud Console 验证

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

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

Cloud Monitoring 验证

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

  1. 在 Google Cloud Console 中,转到 Monitoring 或使用下面的按钮:
    转到 Monitoring
  2. 在 Monitoring 导航窗格中,点击 Metrics Explorer
  3. 确保所选标签页为指标
  4. 点击 Find resource type and metric 对应的框,然后从菜单中选择或者输入资源和指标的名称。使用以下信息填写此文本框的各个字段:
    1. 对于 Resource,请选择或输入 Cloud Memorystore Redis
    2. 对于 Metric,请选择或输入节点角色
  5. 使用 FilterGroup ByAggregator 菜单修改数据的显示方式。例如,您可以按资源或指标标签进行分组。如需了解详情,请参阅选择指标

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