本页面适用于 Apigee,但不适用于 Apigee Hybrid。
查看 Apigee Edge 文档。
本文档介绍了如何检查和升级将北向流量路由到 Apigee 的 Compute Engine 托管式实例组。
概览
某些 Apigee 部署会通过在项目中运行的 Compute Engine MIG 将代理流量从负载均衡器路由到 Apigee 运行时端点,包括北向负载均衡和使用 Private Service Connect 进行主动健康检查。Apigee 不管理这些 MIG。作为安全性和可靠性最佳实践,您必须自行跟踪、管理和升级这些 MIG 及其虚拟机,以与 Compute Engine 操作系统生命周期保持同步。
当操作系统达到服务终止时,Compute Engine 会移除新虚拟机的映像系列别名。MIG 中的现有虚拟机将继续运行,并在实时主机维护事件中存活。但是,如果 MIG 尝试在自动扩缩、自动修复或滚动替换期间创建新虚拟机,则虚拟机创建会失败,因为系统无法再找到来源映像系列。如果健康状况良好的代理虚拟机不可用,负载均衡器会返回 HTTP 502 Bad Gateway 错误,并且 API 流量会停止。
准备工作
本文档中的命令仅为示例。您的部署可能会使用不同的网络标记、机器类型、磁盘大小、元数据或虚拟机数量。请先检查现有配置,然后调整命令标志以匹配您的环境。
将示例命令中的以下占位符替换为环境中的值:
-
PROJECT_ID:部署 MIG 和实例模板的 Google Cloud 项目 ID。 -
REGION:MIG 的 Compute Engine 区域。 -
EXISTING_MIG_NAME:现有 MIG 的名称。 -
OLD_TEMPLATE_NAME:附加到EXISTING_MIG_NAME的实例模板的名称。 -
NEW_TEMPLATE_NAME:您创建的新实例模板的名称。 -
VPC_NAME:MIG 使用的 VPC 网络的名称。 -
VPC_SUBNET:MIG 使用的REGION中的 VPC 子网的名称。 -
IMAGE_FAMILY:Compute Engine 操作系统详情中受支持的操作系统映像系列。 -
IMAGE_PROJECT:包含IMAGE_FAMILY的映像项目。 -
APIGEE_ENDPOINT:在现有实例模板的ENDPOINT元数据中配置的目标 IP 地址。 -
STARTUP_SCRIPT_URL:在现有实例模板的startup-script-url元数据中配置的 Cloud Storage 网址。
检查 MIG 和实例模板
Apigee 路由 MIG 通常使用 apigee-mig-proxy 标记和 ENDPOINT 元数据。完成以下步骤,检查 MIG 和实例模板:
-
列出项目中的 MIG,并找出附加的实例模板:
gcloud compute instance-groups managed list --project=PROJECT_ID \ --format="table(name,region.basename(),zone.basename(),instanceTemplate.basename())"
-
检查现有实例模板的来源操作系统映像。如果模板是区域级模板,请添加
--region=REGION:gcloud compute instance-templates describe OLD_TEMPLATE_NAME \ --project=PROJECT_ID \ --format="value(properties.disks[0].initializeParams.sourceImage)"
-
检查
OLD_TEMPLATE_NAME的机器类型、磁盘配置、网络、子网、标记和元数据,以便在创建新模板时匹配这些设置。如果模板是区域级模板,请添加--region=REGION:gcloud compute instance-templates describe OLD_TEMPLATE_NAME \ --project=PROJECT_ID \ --format="yaml(properties.machineType,properties.disks,properties.networkInterfaces,properties.tags,properties.metadata)"
创建新的实例模板并执行滚动更新
使用受支持的操作系统映像系列创建新的实例模板,并在 MIG 上启动滚动更新。将 --max-surge 与 --max-unavailable=0 搭配使用,可在排空和移除旧实例之前预配和验证新虚拟机,这样即使新虚拟机因资源缺货或配置错误而无法启动,也能防止流量中断。
-
创建新的实例模板。以下命令是一个示例;请调整网络、子网、标记、机器类型、磁盘大小和元数据,以匹配现有模板配置:
gcloud compute instance-templates create NEW_TEMPLATE_NAME \ --project=PROJECT_ID \ --region=REGION \ --network=VPC_NAME \ --subnet=VPC_SUBNET \ --tags=https-server,apigee-mig-proxy,gke-apigee-proxy \ --machine-type=e2-medium \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --boot-disk-size=20GB \ --no-address \ --metadata=ENDPOINT=APIGEE_ENDPOINT,startup-script-url=STARTUP_SCRIPT_URL
此命令会在
projects/PROJECT_ID/global/instanceTemplates/NEW_TEMPLATE_NAME创建一个全球级实例模板。如果您希望创建区域级实例模板,请添加--instance-template-region=REGION,并在下一步中使用projects/PROJECT_ID/regions/REGION/instanceTemplates/NEW_TEMPLATE_NAME。 -
在 MIG 上启动滚动更新。根据 MIG 的大小和配额,根据需要调整
--max-surge:gcloud compute instance-groups managed rolling-action start-update EXISTING_MIG_NAME \ --project=PROJECT_ID \ --region=REGION \ --version=template=projects/PROJECT_ID/global/instanceTemplates/NEW_TEMPLATE_NAME \ --max-surge=3 \ --max-unavailable=0
-
验证 MIG 中的所有虚拟机是否都运行
NEW_TEMPLATE_NAME并报告RUNNING状态:gcloud compute instance-groups managed list-instances EXISTING_MIG_NAME \ --project=PROJECT_ID \ --region=REGION