应对GCP云产品的变更/升级,降低对业务的影响

作者:MeshCloud脉时云架构师周宽

一、需求场景

关于变更/升级,谷歌云包含哪些种类的变更和升级,通知方式如何?

如何做到有效的避免突然的变更/升级给客户业务带来损失?

关于重大变更/升级,如何做好提前通知和应对?

影响客户业务的升级/变更,要求提前7天通知,谷歌云如何做到?

二、变更类型

云产品变更/升级影响范围通知时间解决方案
Compute Engine维护事件实例实时迁移事件开始前 60 秒获取实时迁移通知
宿主机故障实例重启事件发生时托管实例组/设计可靠的系统
Google Kubernetes Engine维护窗口可能会导致业务短暂中断自定义维护窗口/维护排除项
集群升级可能会导致业务短暂中断提前30天自定义超额配置升级策略,自定义维护窗口/维护排除项
Cloud SQL for MySQL维护窗口可能会导致业务短暂中断提前7天自定义维护窗口/更新顺序/拒绝维护期
Cloud Interconnect基础架构维护事件可能会导致线路停机提前7天创建高可用性混合网络
路由器维护事件网络抖动/可能会导致网络短暂中断事件发生时优雅重启和 BFD

注意

GPU和local SSD不能做实时迁移。

Cloud Interconnect 基础架构维护事件,紧急情况提前2-3天,会与TAM确认是否可以操作。

GCP觉得操作不会影响客户,就没有通知客户。但是最终各方面的原因导致还是影响了客户,GCP会按照SLA做赔偿。

三、云产品变更说明

1、Compute Engine

  • 维护事件

解释说明:Compute Engine 维护事件包含硬件更新和软件更新。实例实时迁移到同一区域中的其他主机。

影响范围:在实时迁移期间,您的实例不会重启,在短时间内在磁盘、CPU、内存和网络利用率方面可能会出现性能下降的情况。

大概频率:每两周一次。

注意:这些频率是大概频率,不保证一定准确。Compute Engine 执行维护的频率有时可能比此处指出的频率更加频繁。

通知方式:维护事件开始前 60 秒发生更改maintenance-event 元数据键。

解决方案:定期查询 maintenance-event 元数据键,让您的应用代码能够在维护事件之前触发您要执行的任何任务,例如备份数据或更新日志。获取实时迁移通知(https://cloud.google.com/compute/docs/metadata/getting-live-migration-notice)。

  • 主机错误

解释说明:主机错误 (compute.instances.hostError) 意味着托管虚拟机的物理机器上存在硬件或软件问题,进而导致虚拟机崩溃。

影响范围:通常会在检测到错误后的三分钟内重启您的虚拟机。

大概频率:物理硬件故障和软件故障可能会不时发生,但这种情况很少见。

通知方式:通过Logs Router(过滤关键字compute.instances.hostError) + Pub/Sub 推送到Webhook。

解决方案:创建托管实例组(https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances)、设计可靠的系统(https://cloud.google.com/compute/docs/tutorials/robustsystems)、构建可扩缩且弹性佳的应用时应遵循的模式(https://cloud.google.com/architecture/scalable-and-resilient-apps)。

2、Google Kubernetes Engine

  • 维护窗口

解释说明:允许进行自动维护的重复性时间段。

影响范围:节点自动升级(如果已启用)。用户执行的配置更改(导致重新创建节点)等。业务可能会出现短暂中断的情况。

大概频率:在 32 天的滚动期中,您必须允许至少 48 小时的维护期。仅计算至少 4 小时的连续可用时段。

通知方式:无。

解决方案:自定义维护窗口,允许进行自动维护的重复性时间段。借助维护排除项,您可以防止在特定时间段内进行自动维护。当排除项和维护窗口重叠时,排除项优先。

  • 集群升级

解释说明:集群的控制层面和节点将分别升级。无论您的集群是否已注册发布版本,集群控制层面都会始终定期升级,以确保其稳定性和安全性。

影响范围:业务可能会出现短暂中断的情况。

大概频率:常规版每2个月升级,稳定版每3个月升级。

通知方式:接收集群升级通知(https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-notifications),升级通知发布到 Pub/Sub。

解决方案:借助超额配置升级,您可以控制 GKE 能够同时升级的节点数以及中断性升级对工作负载的影响。自定义维护窗口,允许进行自动维护的重复性时间段。借助维护排除项,您可以防止在特定时间段内进行自动维护。当排除项和维护窗口重叠时,排除项优先。

3、Cloud SQL for MySQL

  • 维护窗口

解释说明:可向此 Cloud SQL 实例执行中断性更新(需重启实例的更新)的日期和时间。

影响范围:Cloud SQL 实例重启,平均失去连接的时长不超过 60 秒。对于在维护开始时具有活动频繁的实例或具有非常大的数据集的实例,停机时间可能较高。业务可能会出现短暂中断的情况。

大概频率:维护通常仅每隔几个月进行一次。

注意:无论您是否指定维护期,中断性更新都可能随时发生,但每几个月才发生一次。

通知方式:系统会向邮箱发送维护通知。

解决方案:自定义维护窗口,安排维护的星期几和时段,维护窗口持续一小时。更新顺序,实例相对于同一区域内其他实例的更新顺序。拒绝维护期,不安排维护的时间段,拒绝维护期最长可达 90 天。

4、Cloud Interconnect

  • 基础架构维护事件

解释说明:Cloud Interconnect 可能需要定期执行可能会影响网络的计划性维护。此外,也可能会发生可能会导致线路停机的紧急或非计划性维护事件。

影响范围:可能会导致线路停机。

大概频率:相隔的时间不固定,但通常是一年几次。

通知方式:系统会向项目所有者或技术联系人发送电子邮件。

注意:维护事件(https://cloud.google.com/network-connectivity/docs/interconnect/support/faq#infrastructure-maintenance-events)可能不会按通知发生。可能会重新安排或取消这些事件,无需另行通知。大多数通知仅适用于潜在中断,并且可以调整维护事件。在此类情况下,您可能无法执行流量重定向等操作。

解决方案:建议创建高可用性混合网络拓扑。高可用的专用互联(https://cloud.google.com/network-connectivity/docs/interconnect/concepts/dedicated-overview#redundancy) 或 高可用的合作伙伴互联(https://cloud.google.com/network-connectivity/docs/interconnect/concepts/partner-overview#redundancy)。

5、Cloud Router 路由器维护事件

解释说明:Google Cloud 会定期执行维护事件,以发布新功能并提高可靠性。在维护期间,系统会预配新的软件任务。您的本地路由器日志指示由这些软件任务管理的 BGP 会话出现故障并恢复(BGP 抖动)。

影响范围:维护事件用时预计不会超过 60 秒。但紧急或非计划性故障事件可能会导致网络短暂中断。

大概频率:时间不固定。

通知方式:通过Logs Router(过滤关键字Router Event: Router task activated)+Pub/Sub 推送到Webhook(https://www.toutiao.com/article/7042597014177169953)。

注意:对于计划维护Google Cloud会提前发邮件通知客户。但是对于紧急或非计划性故障事件。一般来说会有自动化告警和修复,我们会争取尽早解决问题,在这种情况下我们可能无法提前对客户进行通知。

解决方案:优雅重启和 BFD(https://cloud.google.com/network-connectivity/docs/router/concepts/bfd#graceful-restart-and-bfd) 。

发表评论

您的电子邮箱地址不会被公开。