互联网应用可能会遇到极大的使用波动。虽然大多数企业应用不会面临这一挑战,但许多企业必须处理另一种爆发性工作负载:批量作业或 CI/CD 作业。
此架构模式依赖于跨多个计算环境的应用的冗余部署。其目标是提高容量和/或弹性。
虽然您可以通过超量预配资源,在基于数据中心的计算环境中支撑爆发性工作负载,但这种方法性价比不高。对于批量作业,您可以通过延长其执行时间段来优化使用,但如果这些作业对时间要求较高,则延迟作业并不切实可行。
云爆发模式的理念是将私有计算环境用于基线负载,并在需要额外容量时临时爆发到云。
在上图中,当本地专用环境中的数据容量达到上限时,系统可以在需要时从 Google Cloud 环境获得额外容量。
这种模式的主要驱动因素是节省资金,以及减少响应规模要求变化所需的时间和工作。使用此方法,您只需为处理额外负载时使用的资源付费。这意味着您无需超量预配基础设施。您可以利用按需云资源,并根据需求和任何预定义的指标扩缩云资源。因此,您的公司可以避免在高需求时期发生服务中断。
云爆发方案的一个潜在要求是工作负载可移植性。如果您允许将工作负载部署到多个环境,则必须将环境之间的差异抽象化。例如,借助 Kubernetes,您可以在使用不同基础设施的各种环境中实现工作负载级别的一致性。如需了解详情,请参阅 GKE Enterprise 混合环境参考架构。
设计考虑事项
云爆发模式适用于交互式和批处理工作负载。但是,在处理交互式工作负载时,必须确定如何跨环境分发请求:
您可以将传入的用户请求路由到在现有数据中心中运行的负载均衡器,然后让负载均衡器在本地资源和云资源之间分发请求。
此方法要求负载均衡器或现有数据中心中运行的其他系统也跟踪在云中分配的资源。负载均衡器或其他系统还必须启动资源的自动扩缩。使用此方法,您可以在活动程度较低的时段停用所有云资源。但是,实现跟踪资源的机制可能会超出您的负载均衡器解决方案的功能范围,从而增加整体复杂性。
您可以将 Cloud Load Balancing 与混合连接网络端点组 (NEG) 后端搭配使用,而不是实现跟踪资源的机制。您可以使用此负载均衡器将内部客户端请求或外部客户端请求路由到位于本地和 Google Cloud 中,且基于不同指标(例如基于权重的流量拆分)的后端。此外,您还可以根据 Google Cloud 中工作负载的负载均衡响应容量来扩缩后端。如需了解详情,请参阅全球外部应用负载均衡器的流量管理概览。
此方法具有多项其他优势,例如利用 Google Cloud ArmorDDoS 防护功能、WAF 和使用 Cloud CDN 在云边缘缓存内容。不过,您需要调整混合网络连接的大小以处理额外流量。
正如工作负载可移植性中所强调的,应用可以通过最少的更改移植到不同的环境,以实现工作负载一致性,但这并不意味着应用在两种环境中都能同样良好地运行。底层计算、基础设施安全功能或网络基础设施的差异以及与依赖服务的邻近性通常决定了性能。通过测试,您可以获得更准确的情况,并了解预期性能。
您可以使用云基础设施服务构建一个环境来托管不具有可移植性的应用。在高需求时期重定向流量时,使用以下方法处理客户端请求:
- 使用一致的工具监控和管理这两个环境。
- 确保工作负载版本控制保持一致,并确保数据源为最新。
- 您可能需要添加自动化功能来预配云环境,并在需求增加且云工作负载需要接收应用的客户端请求时重新路由流量。
如果您打算在低需求时期关停所有 Google Cloud 资源,则主要使用 DNS 路由政策进行流量负载均衡可能并不总是最优做法。这主要是因为:
- 资源可能需要一些时间进行初始化,然后才能响应用户。
- DNS 更新在互联网上的传播往往比较慢。
因此:
- 即使没有资源可用于处理用户的请求,用户也可能会被路由到 Cloud 环境。
- 当 DNS 更新在互联网上传播时,用户可能会暂时继续被路由到本地环境。
借助 Cloud DNS,您可以选择与您的解决方案架构和行为相符的 DNS 政策和路由政策,例如地理定位 DNS 路由政策。Cloud DNS 还支持对内部直通式网络负载均衡器和内部应用负载均衡器进行健康检查。在这种情况下,您可以将其与基于此模式的整体混合 DNS 设置进行整合。
在某些情况下,您可以使用 Cloud DNS 在 Google Cloud 上分发客户端请求并进行健康检查,例如在使用内部应用负载均衡器或跨区域内部应用负载均衡器时。在此情况下,Cloud DNS 会检查内部应用负载均衡器的整体健康状况,而内部应用负载均衡器本身会检查后端实例的健康状况。如需了解详情,请参阅管理 DNS 路由政策和健康检查。
您还可以使用 Cloud DNS 水平分割。Cloud DNS 水平分割是一种针对相同域名,为 DNS 查询发起方的特定位置或网络设置 DNS 响应或记录的方法。此方法通常用于满足这样的要求,即应用可提供专用体验和公开体验,每种体验都具有独特的特点。这种方法还有助于在各个环境中分配流量负载。
考虑到这些考量因素,云爆发通常更适合批量工作负载,而不是交互式工作负载。
优点
云爆发架构模式的主要优势包括:
- 云爆发可让您重复使用数据中心和私有计算环境中的现有投资。这种重复使用可能是永久性的,也可能是在现有设备到期更换之前有效,届时您可以考虑完整迁移。
- 由于您不再需要维持多余的容量来满足峰值需求,因此您可以提高私有计算环境的使用和成本效益。
- 云爆发可让您及时运行批量作业,而无需超量预配计算资源。
最佳做法
实现云爆发时,请考虑以下最佳做法:
- 为了确保在云中运行的工作负载能够以与在本地环境中运行的工作负载一样的方式访问资源,请使用网状模式并遵循最小权限安全访问原则。如果工作负载设计允许,您可以仅允许从云访问本地计算环境,反之则不行。
- 如需最大限度地降低各环境之间的通信延迟,请选择地理位置靠近您的私有计算环境的 Google Cloud 区域。如需了解详情,请参阅 Compute Engine 区域选择最佳实践。
- 如果仅将云爆发用于批量工作负载,请将所有 Google Cloud 资源设为私有,以减小安全攻击面。禁止从互联网直接访问这些资源,即使您使用 Google Cloud 外部负载均衡来提供工作负载的入口点也是如此。
选择与您的架构模式和目标解决方案行为相符的 DNS 政策和路由政策。
- 在此模式中,您可以永久应用 DNS 政策设计,也可以在高需求时期需要使用另一个环境的额外容量时应用 DNS 政策设计。
- 您可以使用地理定位 DNS 路由政策为区域级负载均衡器设置全球 DNS 端点。此策略有许多地理定位 DNS 路由政策的应用场景,包括将 Google Cloud 与存在 Google Cloud 区域的本地部署搭配使用的混合应用。
如果您需要为同一 DNS 查询提供不同的记录,可以使用水平分割 DNS,例如来自内部和外部客户端的查询。
如需了解详情,请参阅混合 DNS 的参考架构。
为了确保 DNS 更改快速传播,请使用合理的较短存留时间值来配置 DNS,以便在需要来自云环境的额外容量时,可以将用户重新路由到备用系统。
对于对时间要求不高且不将数据存储在本地的作业,请考虑使用 Spot 虚拟机实例,这些实例比常规虚拟机实例便宜很多。但前提条件是,如果虚拟机作业被抢占,系统必须能够自动重启作业。
在适用的情况下使用容器实现工作负载可移植性。此外,GKE Enterprise 可以成为实现该设计的关键技术。如需了解详情,请参阅 GKE Enterprise 混合环境参考架构。
监控从 Google Cloud 发送到其他计算环境的所有流量。此流量依照出站数据传输费用计费。
如果您计划长期使用此架构,并且出站数据传输量较大,请考虑使用 Cloud Interconnect。Cloud Interconnect 有助于优化连接性能,并可能降低满足特定条件的流量的出站数据传输费用。如需了解详情,请参阅 Cloud Interconnect 价格。
使用 Cloud Load Balancing 时,您应在适用的情况下使用其应用容量优化功能。这样做可帮助您应对全球分布式应用中可能出现的一些容量挑战。
通过在环境之间建立通用身份,对使用您的系统的用户进行身份验证,以便系统能够跨环境边界安全地进行身份验证。
为了保护敏感信息,强烈建议对所有传输中的通信进行加密。如果需要在连接层进行加密,根据所选的混合连接解决方案,有多种选项可供选择。这些选项包括 VPN 隧道、通过 Cloud Interconnect 实现的高可用性 VPN 和 MACsec for Cloud Interconnect。