本页介绍了 Memorystore for Valkey 如何对实例执行维护。此外,它还提供了信息和配置建议,您的客户端应用必须了解这些信息和建议,才能利用 Memorystore for Valkey 的零停机维护设计。这些建议适用于高可用性实例和没有副本的实例。不过,对于所有生产用例,我们强烈建议您使用高可用性配置。
Memorystore for Valkey 会定期更新实例,以确保服务可靠、高效、安全且最新。这些更新称为“维护” 。维护完全由服务管理,旨在实现零停机影响。
维护通常分为以下几类:
- Memorystore 功能。如需启动某些功能,Memorystore 需要进行维护更新。
- 操作系统补丁程序。我们会持续监控操作系统中新发现的安全漏洞。发现漏洞后,我们会修补操作系统,以保护您免受新风险的影响。
- 数据库补丁程序。维护可以包括 Valkey 更新,以提高实例的安全性、性能和可靠性。这超出了 OSS Valkey 提供的范围。
配置客户端应用
如需配置客户端应用以在维护期间获得最佳性能和可用性,请按以下步骤操作:
- 按照 Valkey 客户端最佳实践 中的指南使用和配置第三方客户端,确保任何计划维护都不会影响客户端应用。我们建议的客户端配置可以通过定期内联拓扑刷新和后台连接轮替来避免连接重置。
- 在主节点和副本节点上运行代表性工作负载时,使用一系列更新操作(例如缩容或副本数更改)测试客户端应用,并监控对客户端的影响。这些更新测试了客户端上的内联拓扑刷新逻辑、完全同步影响、新节点发现和现有节点移除功能。测试有助于确保第三方客户端配置正确,以避免对应用产生任何负面影响。
计划性维护
Memorystore for Valkey 利用渐进式部署和先创建后销毁 生命周期策略,以避免任何 Memorystore 计划性维护对您的 Valkey 实例造成停机影响。Memorystore for Valkey 通过将 OSS Valkey 实例协议的请求重定向功能与以下 Memorystore 机制结合使用,实现零停机维护:
- 协同故障切换,不会丢失任何数据。
- 平稳移除节点,使客户端能够及时了解节点拓扑更新,而不会对可用性产生任何影响。
- 实例的 Private Service Connect 端点不受维护影响。如需详细了解这些端点,请参阅 实例端点。
以下部分中描述的服务行为仅适用于计划性维护。如需详细了解硬件故障等意外事件 的影响,请参阅意外故障切换期间的客户端行为。
默认维护窗口
默认情况下,Memorystore 会根据实例的时区在以下窗口中更新实例:
- 工作日时段(星期一至星期五):晚上 10 点至早上 6 点
- 周末时段:星期五晚上 10 点至星期一早上 6 点
渐进式部署策略
Memorystore for Valkey 会以逐步扩大的范围执行部署,并以允许尽早检测到故障的速率执行部署,以便减轻任何影响并建立稳定性信心。在服务规模上,Memorystore 实例舰队中集成了烘焙时间(在将更新视为成功并继续进行之前,应用和监控更新的时间)。此外,烘焙时间还集成在区域(多个容错网域)中的实例内,以减少影响范围(如果有)。
对于配置为高可用性的实例,Memorystore for Valkey 最多会在 任何时间更新一个容错网域或可用区,以确保实例分片(包括主节点和 副本)在整个更新过程中具有高可用性。此外,Memorystore for Valkey 每次仅更新几个节点。更新使用先创建后销毁生命周期机制,以最大限度地提高实例的稳定性。 此策略在更新具有许多分片的实例时提供的好处最多。仅在任何时间将更新应用于整体用户键空间的一小部分,可最大限度地提高数据可用性。
先创建后销毁生命周期策略
Valkey 实例有多个分片。每个分片都有一个主节点和零个或多个副本节点。Memorystore 使用以下流程更新分片中的任何现有主节点或副本 Valkey 节点:
- Memorystore for Valkey 会向分片添加一个包含最新软件更新的新副本。Memorystore 会创建一个新节点,而不是更新现有节点,以确保在发生意外的启动失败时保留预配的容量。
- 如果要更新的分片中的节点是主节点,则主节点会先转换为副本,然后再使用协同故障切换移除该节点。
- Memorystore 会移除使用较早软件的副本。
- 对于实例中的每个节点,Memorystore 都会重复此过程。
与就地更新的典型滚动部署相比,先创建后销毁策略有助于保留实例的预配容量,但会导致客户端应用出现可用性中断(有时还会丢失数据)。对于没有副本的分片,Memorystore for Valkey 仍会先预配一个新副本,协调故障切换,最后替换分片的现有主节点。
第 1 步:添加副本
先创建后销毁机制的第一步是添加一个包含最新软件的副本节点,方法是使用完全同步 OSS Valkey 机制将数据从主节点复制到副本节点。这是通过派生子进程并利用无磁盘复制来启动副本完成的。 Memorystore for Valkey 支持无磁盘复制。除非您启用 持久性, 否则 Memorystore for Valkey 在复制期间不会使用磁盘。
您可以预配更多分片,以减少节点内的键空间大小,从而充分利用实例的横向扩缩架构。每个节点的数据集越小,有助于减少完全同步操作的派生延迟影响。它还可以加快跨节点复制数据的速度。
第 2 步:运行协同主节点故障切换
如果需要更新的 Valkey 节点是主节点,则 Memorystore 会对新添加的副本节点运行协同故障切换。然后,Memorystore 会移除该节点。在协同故障切换期间,客户端和 Valkey 节点会协同工作,并使用以下策略来避免应用停机:
- 传入的客户端请求在主节点上暂时被阻止,从而提供一个窗口,以确保现有副本与主节点 100% 同步。
- 副本完成选举过程以接管主角色。
- 之前的主节点(现在是副本节点)会取消阻止现有请求,并使用 OSS Valkey 实例协议将请求重定向到新的主节点。发送到之前副本节点的任何新请求都会继续重定向到新的主节点。
- 与 Valkey 兼容的客户端会刷新其内存中的拓扑。它会了解新主端点的地址,并且不再需要重定向。
协同故障切换通常需要数十毫秒。不过,待刷新到副本的传输中数据和实例总大小可能会增加故障切换延迟时间。实例大小可能会影响主节点之间的收敛,从而影响选择新主节点的决策。
第 3 步:移除副本
先创建后销毁机制的最后一步是移除使用较早软件的副本节点。突然移除节点会对客户端应用产生影响,因为客户端会缓存端点信息和实例拓扑。Memorystore for Valkey 已将 Valkey 副本的移除设计为平稳移除,以便客户端应用在遇到硬节点关闭之前刷新其拓扑。拓扑经过自定义,使客户端能够了解新副本,但也能提前忘记要移除的副本。
运行较早软件的副本节点会保留一段排空时间(通常为几分钟),在此期间,它会开始将传入的读取请求重定向到其分片的主节点。它允许第三方客户端刷新节点拓扑并了解新的副本端点。如果客户端在排空时间后尝试访问已移除的节点,则尝试会失败。这会触发连接客户端上的节点拓扑刷新,以便客户端了解副本更改。节点拓扑的新刷新不会看到要移除的副本节点。
维护设置
Memorystore for Valkey 允许您自定义维护时间表,以满足应用的需求并最大限度地减少中断。如需自定义维护时间表,请为实例配置维护窗口。
您可以为每个 Memorystore for Valkey 实例设置维护窗口,并且可以选择以下配置选项:
- 星期几:进行维护的日期
- 开始时间:维护开始的时间
维护窗口持续一小时。在某些情况下,维护可能会超出您选择的窗口。
为实例配置维护窗口后,Memorystore for Valkey 会根据您为维护窗口设置的偏好设置,在未来安排自动维护。
默认维护窗口
如果您未设置维护窗口,则 Memorystore for Valkey 会根据实例的时区在以下窗口之一中更新实例:
- 工作日时段(星期一至星期五):晚上 10:00 至早上 6:00
- 周末时段:星期五晚上 10:00 至星期一早上 6:00
维护示例
作为管理零售商购物车服务的开发者,您负责监督包含 Memorystore for Valkey 实例的生产环境。 为确保在维护期间获得最佳性能,您会在实例流量最小时安排维护。这通常发生在星期日午夜前后。
在这种情况下,请将生产实例的维护窗口设置为以下日期和时间:
- 星期几:星期日
- 开始时间:凌晨 1 点
即将进行的维护通知
为确保您及时了解实例上的维护事件,请在安排维护前至少一周设置有关即将进行的维护的电子邮件通知。这些通知的主题行为"Upcoming
maintenance for your Cloud Memorystore instance [your-instance-name]"。
当实例开始维护时,Memorystore for Valkey 也会发送通知。电子邮件的主题行为"Maintenance
is undergoing for your Cloud Memorystore instance [your-instance-name]"。
Memorystore for Valkey 完成维护后,会发送完成通知。电子邮件的主题行为"Completed Maintenance
for your Cloud Memorystore instance [your-instance-name]"。
如果 Memorystore for Valkey 重新安排维护,您会收到一封电子邮件,通知您维护已取消。此电子邮件的主题行为"Canceled maintenance for your Cloud Memorystore instance [your-instance-name]"。
如需接收维护通知,您必须选择接收此类通知。如需注册接收维护通知,请执行以下操作:
如需接收来自 Memorystore for Valkey 的维护通知,请在为实例安排维护更新前至少一周完成这些步骤。否则,Memorystore for Valkey 没有足够的时间通知您即将进行的维护。
Memorystore for Valkey 会向与您的 Google 账号关联的电子邮件地址发送通知。您无法配置自定义邮箱别名(例如团队邮箱别名)。此外,我们不支持向其他电子邮件地址发送通知。
订阅维护通知后,您会收到项目中所有已安排维护的 Memorystore for Valkey 实例的提醒。 Google Cloud 对于每个实例,您都会收到单独的通知。
如需详细了解如何查找计划性维护,请参阅查找计划性维护。
重新安排维护
本部分提供了有关如何重新安排维护的指南。例如,如果计划在当前维护窗口期间启动新服务,则可能需要将维护窗口推迟到启动后几天内。
您可以在最初安排的时间后的 14 天内重新安排维护。 在重新安排维护时,请选择以下选项之一:
- 立即更新:您可以立即将更新应用于实例,而不是等到安排的维护窗口。
- 自定义日期和时间:选择 最初安排的维护时间后的14 天内的任何时间。
重新安排维护时,需要遵循以下限制条件:
- 如果当前时间距离目前安排的维护不到一个小时,则无法重新安排维护。
- 成功重新安排维护后,Memorystore for Valkey 会向您发送一封电子邮件通知,确认取消之前的维护。此外,您还会收到一封包含更新后的时间表的新维护通知。
如需详细了解如何重新安排维护,请参阅重新安排维护。
常见问题解答
本部分包含有关 Memorystore for Valkey 维护的常见问题解答 (FAQ)。
如何知道何时为实例安排维护?
如需了解何时为实例安排维护,我们建议您订阅通知并配置维护窗口。您还可以
手动检查实例,查看响应中是否显示
maintenanceSchedule参数。
Memorystore for Valkey 何时会通知您即将进行的维护?
如果您订阅了维护通知并设置了维护窗口,则 Memorystore for Valkey 至少会在维护事件发生前一周通过电子邮件通知您。
您可以将维护推迟多长时间?
为实例安排维护后,您可以立即开始更新实例,也可以将更新从最初安排的维护日期和时间开始推迟最多两周。
例如,如果您将维护安排在 10 月 11 日晚上 11 点 15 分,则可以将维护推迟到 10 月 25 日晚上 11 点 15 分。如果您不采取任何操作,则维护会在安排的日期和时间运行。
如需了解详情,请参阅重新安排维护。
哪些最佳实践可以带来流畅的维护更新体验?
为确保获得流畅的维护更新体验,我们建议您执行以下操作:
- 按照说明配置客户端应用。
- 将维护窗口 设置为实例流量最小时的日期和时间(例如星期日午夜)。
- 开启维护通知。这样,Memorystore for Valkey 至少会在为实例安排维护更新前七天通过电子邮件通知您。
- 如果您的应用使用时间没有低影响或无影响时段,请使用服务的默认渐进式发布。此默认值包含维护更新的最佳实践。如需了解详情,请参阅 计划性维护。
我们建议您何时立即应用维护更新?
您可以立即在测试实例上应用维护更新,以了解更新对应用的影响。您可以观察此更新产生的影响。 如果更新存在问题,您可以推迟生产实例的维护,直到解决问题为止。
如果当前日期和时间适合您的实例,并且您预计实例在未来会遇到高负载,则可以立即运行维护更新。
维护更新是否始终在维护窗口内完成?
Memorystore for Valkey 会在您指定的维护窗口内开始维护更新。Memorystore for Valkey 通常会在窗口内完成更新,但并非总是如此。
您可以先停止对某些实例进行维护或安排维护吗?
您无法选择停用维护,也无法控制实例的维护顺序。不过,在收到初始维护通知后,您可以 重新安排维护,使其最多推迟 两周。
后续步骤
- 查看管理实例维护窗口所需的权限 。