升级 Apigee 托管式实例组

本页面适用于 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 和实例模板:

  1. 列出项目中的 MIG,并找出附加的实例模板:

    gcloud compute instance-groups managed list --project=PROJECT_ID \
      --format="table(name,region.basename(),zone.basename(),instanceTemplate.basename())"
    
  2. 检查现有实例模板的来源操作系统映像。如果模板是区域级模板,请添加 --region=REGION:

    gcloud compute instance-templates describe OLD_TEMPLATE_NAME \
      --project=PROJECT_ID \
      --format="value(properties.disks[0].initializeParams.sourceImage)"
    
  3. 检查 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 搭配使用,可在排空和移除旧实例之前预配和验证新虚拟机,这样即使新虚拟机因资源缺货或配置错误而无法启动,也能防止流量中断。

  1. 创建新的实例模板。以下命令是一个示例;请调整网络、子网、标记、机器类型、磁盘大小和元数据,以匹配现有模板配置:

    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。

  2. 在 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
    
  3. 验证 MIG 中的所有虚拟机是否都运行 NEW_TEMPLATE_NAME 并报告 RUNNING 状态:

    gcloud compute instance-groups managed list-instances EXISTING_MIG_NAME \
      --project=PROJECT_ID \
      --region=REGION
    

后续步骤