Google Cloud Load Balancing 提供了强大的流量分发能力,通常与 GCE 托管实例组 (MIGs) 结合使用,将流量均匀地分发到一组健康的虚拟机实例上。然而,在某些场景下,我们可能需要比实例组更精细的控制粒度,或者希望将负载均衡的目标扩展到 GCE 实例之外。网络端点组 (Network Endpoint Group, NEG) 正是为此而设计的,它允许将独立的网络端点(IP 地址和端口组合)作为负载均衡器的后端。本文将重点探讨 Zonal NEG 如何与 GCE 实例结合,实现更灵活、更精细的负载均衡。
一、 网络端点组 (NEG) 概览
NEG 定义了一组网络端点。GCP 支持多种 NEG 类型,适用于不同场景:
Zonal NEGs (区域级 NEG): 端点是同一区域、同一可用区内的 GCE 虚拟机的内部 IP 地址和端口号,或者内部网络负载均衡器的 IP 地址和端口。这是与 GCE 实例最直接相关的 NEG 类型。
Internet NEGs: 端点是互联网上的 IP 地址和端口(可以是 GCP 外部的服务器),通常与 Cloud CDN 结合用于自定义源站。
Serverless NEGs: 端点指向 Cloud Run, App Engine 或 Cloud Functions 服务。允许 HTTP(S) 负载均衡器将流量直接路由到这些 Serverless 服务。
Hybrid Connectivity NEGs: 端点是本地数据中心或通过 VPN/Interconnect 连接的其他云环境中的服务器 IP 地址和端口。用于混合云负载均衡。
Private Service Connect NEGs: 端点指向通过 Private Service Connect 发布的托管服务。
本文主要关注 Zonal NEGs 在 GCE 场景下的应用。
二、 Zonal NEGs for GCE 的优势与用例
相比直接使用实例组作为后端,将 GCE 实例注册到 Zonal NEG 中作为负载均衡器的后端,可以带来以下优势和新的可能性:
端口级负载均衡: 实例组通常是将流量发送到实例的某个固定端口。而 NEG 允许将同一个 GCE 实例的不同端口注册为不同的端点,并将它们关联到不同的后端服务。这使得可以在单个 VM 上运行多个服务,并通过负载均衡器将流量精确路由到特定服务的端口。例如,一个 VM 同时运行 Web 服务(端口 80)和 API 服务(端口 8080),可以将 VM_IP:80 和 VM_IP:8080 作为两个独立的端点加入不同的 NEG。
容器化工作负载 (GCE 上的容器): 当直接在 GCE 实例上运行容器(未使用 GKE)时,每个容器可能监听不同的端口。使用 Zonal NEG,可以将每个容器的 VM_IP:Container_Port 注册为端点,实现对容器粒度的负载均衡和健康检查。
更精细的健康检查: 负载均衡器对 NEG 中的每个端点(IP:Port)独立进行健康检查。这比对整个实例进行健康检查更精确,能够更快地将流量从仅某个端口不健康的实例上移开。
集成第三方服务发现/编排: 可以通过自动化脚本或控制器,根据第三方服务发现系统(如 Consul)或自定义编排逻辑,动态地将 GCE 实例的 IP 和端口添加到 Zonal NEG 中或从中移除。
与 Traffic Director 集成 (服务网格): Zonal NEGs 是将基于 GCE 的服务接入 Traffic Director(GCP 的托管服务网格控制平面)的关键方式。Traffic Director 使用 NEG 来了解服务实例的位置,并配置 Envoy 代理进行高级流量管理(如精细路由、熔断、故障注入)。
三、 配置流程
创建 Zonal NEG:
在 GCP 控制台或使用 gcloud compute network-endpoint-groups create 命令创建 NEG。
指定 NEG 的名称、区域 (Region)、可用区 (Zone)、所属 VPC 网络和子网。
关键: 选择 NEG 类型为 GCE_VM_IP_PORT。
可以指定默认端口,如果在添加端点时不指定端口,则使用此默认端口。
将 GCE 实例端点添加到 NEG:
使用 gcloud compute network-endpoint-groups update [NEG_NAME] --add-endpoint 命令将 GCE 实例的 ip=[VM_INTERNAL_IP],port=[SERVICE_PORT] 添加到 NEG 中。
可以手动添加,但更常见的是通过自动化脚本(如 GCE 启动脚本、配置管理工具)或自定义控制器来动态管理 NEG 中的端点。
将 NEG 作为后端添加到负载均衡器的后端服务:
创建或编辑一个后端服务 (Backend Service)。
在“后端”(Backends) 部分,选择 "网络端点组" 作为后端类型。
选择之前创建的 Zonal NEG。
配置健康检查,确保其针对 NEG 端点的 IP 和端口进行检查。
完成负载均衡器配置: 配置前端(转发规则、目标代理等)。
云服务新选择!一万网络助您畅享谷歌云超值折扣!专业代购团队,正规渠道采购,量大从优!企业级方案定制+7×24小时技术支持,让上云更简单、更省钱!立即咨询一万网络热线:4000-968-869,开启数字化转型加速引擎!
四、 注意事项与权衡
手动管理复杂性: 如果不采用自动化,手动维护 Zonal NEG 中的端点列表(尤其是在实例 IP 变化或频繁启停时)会非常繁琐且容易出错。自动化是关键。
与 MIGs 的关系: Zonal NEG 通常用于补充或替代 MIGs 作为后端。对于简单的、同构的实例组,使用 MIGs 可能更简单。当需要端口级控制、容器化负载均衡或与 Traffic Director 集成时,NEG 更具优势。有时也可以将 MIG 配置为自动将其成员实例注册到 NEG 中。
健康检查配置: 需要仔细配置健康检查,确保其正确探测 NEG 端点的服务端口,而不是仅仅检查实例是否存活。
仅限区域内: Zonal NEG 及其端点都限制在单个可用区内。对于跨可用区或跨区域的负载均衡,需要在每个可用区创建 NEG,并将它们都添加到(通常是区域级或全局级的)后端服务中。
五、 性能考量
使用 NEG 本身通常不会对网络性能产生负面影响。负载均衡的整体性能仍然取决于负载均衡器类型、后端 GCE 实例的处理能力以及网络配置。
总结
Google Cloud 的网络端点组 (NEG),特别是 Zonal NEG,为 Google Compute Engine 实例提供了超越传统实例组的、更精细化的负载均衡能力。通过允许将特定的 IP 地址和端口组合作为后端端点,NEG 支持了端口级路由、容器化工作负载的直接均衡、更精确的健康检查,并为集成服务网格(如 Traffic Director)奠定了基础。虽然手动管理 NEG 端点可能较为复杂,推荐使用自动化方式,但在需要更高级、更灵活的流量控制场景下,Zonal NEG 是 GCE 网络架构工具箱中一个非常有价值的补充,能够帮助构建更强大、更适应性强的云端应用。
云服务新选择!一万网络助您畅享谷歌云超值折扣!专业代购团队,正规渠道采购,量大从优!企业级方案定制+7×24小时技术支持,让上云更简单、更省钱!立即咨询一万网络热线:4000-968-869,开启数字化转型加速引擎!
Copyright © 2013-2020 idc10000.net. All Rights Reserved. 一万网络 朗玥科技有限公司 版权所有 深圳市朗玥科技有限公司 粤ICP备07026347号
本网站的域名注册业务代理北京新网数码信息技术有限公司的产品