本文档提供了技术指南和最佳实践,以帮助您在 Google Distributed Cloud (GDC) 气隙环境中跨多个可用区设计和部署高可用性 (HA) 工作负载。该指南概述了关键的架构模式、服务配置和运营注意事项,以最大限度地减少停机时间并确保业务连续性。
本文档中的策略适用于以下技术专业人员:
设计弹性基础设施和应用架构的云架构师。
DevOps 工程师和站点可靠性工程师,负责为高可用性工作负载实施部署策略、自动化、监控和突发事件响应。
构建与高可用性模式集成的容错应用的开发者。
如需了解详情,请参阅 GDC 气隙环境文档的受众群体。
高可用性的重要性
在现代分布式系统中,规划高可用性至关重要。停机可能会严重扰乱业务运营、导致收入损失,并造成不良的用户体验。
对于在私有数据中心中使用 GDC 运行的工作负载,可用性通常与核心运营成功直接相关,尤其是对于延迟敏感型或任务关键型应用。从一开始就设计 HA 对于构建弹性可靠的服务至关重要。
GDC 可在网闸隔离的环境中提供超大规模功能,支持多个断开连接的数据中心或可用区。多可用区应用的高可用性取决于多可用区服务,例如负载均衡和异步存储。如需详细了解可用于实现高可用性的重要服务,请参阅本文档的可伸缩性和负载均衡和使用异步存储在各可用区部署高可用性应用部分。
在本地提供超大规模功能
GDC 可将 Google Cloud 基础设施和服务扩展到边缘和您的数据中心。GDC 提供全代管式硬件和软件解决方案,让您能够在 GDC 集群和其他Google Cloud 服务上运行 Google Kubernetes Engine (GKE),从而更靠近数据的生成和使用位置。
本文档重点介绍以多可用区拓扑配置的 GDC 宇宙。在此配置中,一个宇宙包含同一位置内的多个物理隔离的可用区。
这些可用区具有独立的电源、制冷和网络,可防范局部物理基础设施故障。可用区之间的低延迟、高带宽网络连接可实现数据复制和快速故障切换,为构建高可用性应用奠定基础。
可伸缩性和负载均衡
除了基本组件冗余之外,有效管理流量和实现无缝伸缩对于保持高可用性至关重要,尤其是在负载条件各不相同的情况下。GDC 提供了多种机制来实现负载均衡和精细的流量管理。
用于南北向流量的外部负载均衡器
如需将应用向 GKE on GDC 集群外部的用户或系统(南北向流量)公开,请使用 GDC 的受管外部负载均衡功能。外部负载平衡器 (ELB) 服务提供这些功能,并可与 Kubernetes 无缝集成。
提供高可用性和可伸缩性的 ELB 服务的主要特征如下:
托管服务:作为 GDC 特有的服务运行,旨在实现气隙环境中的高可用性和弹性。
外部访问:从 GDC 管理的池中预配稳定的外部 IP 地址,为外部客户端提供一致的入口点。
负载均衡器与 Kubernetes 集成:当您创建没有特定内部注释的 Kubernetes
Servicetype: LoadBalancer时,会自动预配和配置负载均衡器。可用区感知:在 GDC 宇宙中所有可用区内运行的健康应用 pod 之间分配传入流量。ELB 依靠 Pod 就绪性探测来确定后端健康状况。
可伸缩性:随着应用在节点和可用区之间横向扩缩,处理外部流量的分配。
为了实现外部入站流量的高可用性,以便在区域或实例发生故障时自动将客户端请求路由到其他位置,我们建议使用外部负载平衡器。
如需了解详情,请参阅配置外部负载平衡器。
用于东西向流量的内部负载均衡器
对于在同一 GKE on GDC 集群内运行的服务之间的通信(东西向流量),GDC 提供内部负载均衡器 (ILB)。ILB 对于解耦内部服务以及提供高可用性且可伸缩的内部通信路径至关重要。
提供高可用性和可伸缩性的 ILB 服务的主要特征如下:
内部访问:预配一个稳定的内部 IP 地址,该地址只能从 GDC 网络内部(例如集群节点或其他内部服务)访问。
负载均衡器与 Kubernetes 集成:通过创建具有特定注解的
type: LoadBalancer类型的 KubernetesService来预配负载均衡,以指明它必须是内部的。例如networking.gke.io/load-balancer-type: "Internal"。可用区感知:将流量分配到所有可用区中通过就绪状态探测识别出的健康后端 Pod。这种分布方式可防止在某个可用区出现问题时发生内部通信故障。
服务发现和解耦:通过 kube-dns 和 CoreDNS 集成提供稳定的内部 IP 地址和 DNS 名称。服务可以相互发现和通信,从而无需客户端知道各个 pod 的 IP 地址。
可伸缩性:通过在所有可用的健康副本之间分配流量,有助于伸缩内部后端服务。
使用 ILB 进行内部服务到服务通信可使内部流量在可用区发生故障时保持弹性,并提供有效的伸缩,从而补充外部 ELB 和底层计算分布提供的高可用性。此策略通常用于分层应用,其中前端 API 必须与 Kubernetes 集群中的后端 API 或数据库进行通信。
如需了解详情,请参阅配置内部负载平衡器。
跨可用区部署具有异步存储的高可用性应用
借助 GDC,您可以在更靠近数据源的位置运行基础设施和应用。如需部署具有弹性数据源的高可用性应用,请实现异步存储复制,以实现数据持久性和灾难恢复。
可用区表示单个宇宙中的不同故障网域。 通过在可用区之间分布应用组件和复制数据,您可以显著提高应用针对局部硬件故障或维护事件的恢复能力。
如需了解详情,请参阅使用多区域存储空间保护数据。
后续步骤
如需部署一项服务,使其作为一组虚拟机 (VM) 分布在各个可用区中,并使用异步复制的块存储,请参阅部署高可用性虚拟机应用。
如需了解如何使用异步复制的永久性卷在 Kubernetes 上跨可用区部署服务作为容器化应用,请参阅部署高可用性容器应用。
如需详细了解可用区和宇宙,请参阅 GDC 空气隔离环境中的可用区。