设置互联网 NEG

本指南通过一个示例介绍了在互联网网络端点组 (NEG) 中使用自定义来源的基础知识。自定义来源是 Google Cloud 外部的互联网端点。您可以将互联网 NEG 用作外部 HTTP(S) 负载平衡器的后端,并使用 Cloud CDN 缓存来提升性能。

本指南逐步说明如何使用启用了 Cloud CDN 的后端服务(作为位于 backend.example.com 的自定义源服务器的代理)来配置全球外部 HTTP(S) 负载平衡器。

在此示例中,负载平衡器接受来自客户端的 HTTPS 请求,并将这些请求作为 HTTP/2 代理到自定义来源。此示例假设来源支持 HTTP/2。

其他选项包括:将负载平衡器配置为接受 HTTP 或 HTTP/2 请求,以及在将请求代理到自定义来源时使用 HTTPS。

设置互联网 NEG 包括以下操作:

  • 在互联网网络端点组中定义互联网端点。
  • 将互联网网络端点组添加为后端服务的后端。
  • 通过配置外部 HTTP(S) 负载平衡器的网址映射来定义要映射到此后端服务的用户流量。

准备工作

在按照本指南中的说明进行操作之前,请先熟悉以下内容:

可选:安装 gcloud

如果您希望通过命令行进行操作,请安装 gcloud 命令行工具。如需了解该工具的概念和安装信息,请参阅 gcloud 命令行工具概览

如果您之前未运行过 gcloud 命令行工具,请先运行 gcloud init,以初始化您的 gcloud 目录。

可选:创建新项目

本指南中的说明需要用到项目。 如果您还没有项目,请立即设置一个。

我们建议具有 resourcemanager.projects.create 权限的用户创建新项目,然后再按照本方法指南的其余部分操作。创建新项目可以简化本指南结束时的清理工作。

权限

若要遵循本指南,您需要创建互联网网络端点组并在项目中创建或修改外部 HTTP(S) 负载平衡器。您应该具有项目的 Owner 或 Editor 角色,或者应该同时具有以下 Compute Engine IAM 角色

任务 所需角色
创建和修改负载平衡器组件 Network Admin
创建和修改网络端点组 计算实例管理员

使用自定义来源配置负载平衡器

本指南介绍了如何配置和测试互联网网络端点组。

设置概览

此部分中的步骤介绍了如何配置以下内容:

  • 创建互联网网络端点组并附加用于定义 INTERNET_IP_PORTINTERNET_FQDN_PORT 端点的网络端点。
  • 将此网络端点组与外部 HTTP(S) 负载平衡器的后端服务相关联。
  • 为此外部 HTTP(S) 负载平衡器添加转发规则。

示例架构如下所示:

自定义来源的典型使用场景
自定义来源的典型使用场景

在该图中,www.example.com 有一个 IP 地址为 120.1.1.1 的负载平衡器前端。如果存在缓存未命中,则通过 HTTP/2 从自定义来源提取用户对 /cart/id/1223515 的请求。 所有其他传入流量都会根据网址映射定向到使用 Compute Engine 虚拟机的 Google Cloud 后端服务或定向到后端存储分区。

如需设置此示例,请创建以下资源:

  • 使用 120.1.1.1 IP 地址的转发规则会将传入的请求定向到目标代理。
    • 转发规则的 networkTier 必须是 PREMIUM
  • 目标 HTTP 代理根据网址映射检查每个请求,确定请求的相应后端服务。
    • 对于自定义源站,目标代理必须是 TargetHttpProxyTargetHttpsProxy。本示例使用 TargetHttpsProxy
  • 在后端服务上启用 Cloud CDN(可选),将允许从 Cloud CDN 缓存进行响应缓存和传送。
  • 后端服务配置会将流量定向到一个互联网 NEG。
  • 此示例包含在自定义来源期望 HTTP 请求 Host 标头的特定值时需要的用户定义的请求标头

创建网络端点组和互联网端点

控制台

  1. 在 Google Cloud Console 中,转到网络端点组页面。

    转到“网络端点组”页面

  2. 点击创建网络端点组
  3. 输入网络端点组的名称:example-fqdn-neg
  4. 对于网络端点组类型,选择网络端点组(互联网)
  5. 对于默认端口,输入 443
  6. 对于新网络端点,选择完全限定域名和端口
  7. 对于 FQDN,输入 backend.example.com
  8. 对于端口类型,选择默认,并验证端口号443
  9. 点击创建

gcloud

  1. 创建互联网网络端点组,并将 --network-endpoint-type 设置为 internet-fqdn-port(可通过其访问您的来源的主机名和端口):

    gcloud compute network-endpoint-groups create example-fqdn-neg \
        --network-endpoint-type="internet-fqdn-port" --global
    
  2. 将您的端点添加到网络端点组。如果未指定端口,则端口选择默认为端口 80(HTTP) 或 443(HTTPS 和 HTTP/2),具体取决于后端服务中配置的协议。请务必添加 --global 标志:

    gcloud compute network-endpoint-groups update example-fqdn-neg \
        --add-endpoint="fqdn=backend.example.com,port=443" \
        --global
    
  3. 列出已创建的互联网网络端点组:

    gcloud compute network-endpoint-groups list --global
    

    输出:

    NAME                LOCATION   ENDPOINT_TYPE        SIZE
    example-fqdn-neg    global     INTERNET_FQDN_PORT   1
    

  4. 列出该网络端点组内的端点:

    gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \
        --global
    

    输出:

    INSTANCE   IP_ADDRESS   PORT   FQDN
                                   backend.example.com
    

使用现有负载平衡器

以下示例会更新现有负载平衡器。

如果您还没有外部 HTTP(S) 负载平衡器,请跳过此部分并转到使用新的负载平衡器

在现有负载平衡器中,默认服务是 Google Cloud 服务。此示例会通过添加路径匹配器以向与互联网网络端点组相关联的 images 后端服务发送对 cart/id/1223515 的所有请求,修改现有网址映射。

控制台

创建后端服务并添加互联网 NEG

  1. 在 Google Cloud Console 中,转到负载平衡页面。

    转到“负载平衡”页面

  2. 如需将后端服务添加到现有负载平衡器,请选择您的外部 HTTP(S) 负载平衡器,点击菜单 ,然后选择修改
  3. 点击后端配置
  4. 创建或选择后端服务和后端存储分区下拉菜单中,选择后端服务 > 创建后端服务
  5. 将后端服务的名称设置为 images
  6. 对于后端类型,选择互联网网络端点组
  7. 选择您要用于连接负载平衡器和互联网网络端点组的协议。对于此示例,选择 HTTP/2
  8. 新后端 > 互联网网络端点组下,选择 example-fqdn-neg,然后点击完成
  9. 选择启用 Cloud CDN
  10. 保留默认的缓存模式TTL 设置。
  11. 高级配置自定义请求标头下,点击添加标头
    1. 对于标头名称,输入 Host
    2. 对于标头值,输入 backend.example.com
  12. 点击创建
  13. 保持窗口打开以继续。

将后端服务附加到现有网址映射

  1. 点击主机和路径规则
  2. 右侧列的第一行或前几行有 Google Cloud 服务,其中一行已填充了主机路径的默认规则 Any unmatched (default)
  3. 确保在右侧列中选择含有 images 的行。如果不存在,请点击添加主机和路径规则,然后选择 images。 填充其他字段,如下所示:
    1. 主机中输入 *
    2. 路径中输入 /cart/id/1223515

检查并最终确定

  1. 点击检查并最终确定
  2. 比较您的设置与您打算创建的内容。
  3. 如果看起来都正确,请点击创建以创建您的外部 HTTP(S) 负载平衡器。

gcloud

  1. 为 NEG 创建新的后端服务。

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --protocol=HTTP2
    
  2. 将后端服务配置为向请求添加自定义请求标头 Host: backend.example.com

    gcloud compute backend-services update images \
       --custom-request-header "Host: backend.example.com" --global
    
  3. 使用 backend-services add-backend 命令向后端服务添加互联网 NEG:

    gcloud compute backend-services add-backend images \
      --network-endpoint-group "example-fqdn-neg" \
      --global-network-endpoint-group \
      --global
    
  4. 通过创建新的匹配规则,将新的后端服务附加到负载平衡器的网址映射,以将请求定向到该后端:

    gcloud compute url-maps add-path-matcher EXAMPLE_URL_MAP \
      --default-service=GCP_SERVICE_EXAMPLE \
      --path-matcher-name=CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE \
      --backend-service-path-rules=/CART/ID/1223515=IMAGES
    

    替换以下内容:

    • EXAMPLE_URL_MAP:现有网址映射的名称
    • GCP_SERVICE_EXAMPLE:现有默认后端服务的名称
    • CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE:此新路径规则的名称
    • /CART/ID/1223515:路径
    • IMAGES:附加互联网 NEG 的新后端服务的名称

使用新的负载平衡器

以下示例会创建一个外部 HTTP(S) 负载平衡器,它将您的互联网网络端点组用作默认服务(任何主机、任意路径)。

如果您已有要修改的现有外部 HTTP(S) 负载平衡器,请跳过此部分并转到使用现有负载平衡器

控制台

创建后端服务并添加互联网 NEG

  1. 在 Google Cloud Console 中,转到负载平衡页面。

    转到“负载平衡”页面

  2. 点击创建负载平衡器
  3. HTTP(S) 负载平衡中,点击开始配置
  4. 选择从互联网到我的虚拟机
  5. 输入新负载平衡器的名称。此名称将成为新网址映射的名称。在此示例中,将其命名为 example-url-map
  6. 点击后端配置
  7. 创建或选择后端服务和后端存储分区下拉菜单中,选择后端服务 > 创建后端服务
  8. 将后端服务的名称设置为 images
  9. 对于后端类型,选择互联网网络端点组
  10. 选择您要用于连接负载平衡器和互联网网络端点组的协议。对于此示例,选择 HTTP/2
  11. 新后端 > 互联网网络端点组下,选择 example-fqdn-neg,然后点击完成
  12. 选择启用 Cloud CDN
  13. 高级配置自定义请求标头下,点击添加标头
    1. 对于标头名称,输入 Host
    2. 对于标头值,输入 backend.example.com
  14. 点击创建
  15. 保持窗口打开以继续。

将后端服务附加到新的网址映射

  1. 点击主机和路径规则
  2. 确保在右侧列中选择含有 images 的行。前两列已经填充了默认规则 Any unmatched (default)
  3. 不关闭窗口继续操作。

添加前端

  1. 点击前端配置
  2. 对于名称,输入 example-forwarding-rule
  3. 对于协议,选择 HTTPS
  4. 点击证书下拉列表。
    1. 如果您已经拥有要用作主要 SSL 证书的自行管理的 SSL 证书资源,请从下拉菜单中选择该证书。
    2. 否则,请选择创建新证书
    3. 选择上传我的证书创建 Google 托管的证书
    4. 如果您选择上传我的证书,请完成以下步骤:
      1. 填写名称 example-ssl
      2. 在相应的字段中上传您的公钥证书(.crt 文件)、证书链(.csr 文件)、私钥(.key 文件)。
      3. 点击创建
    5. 如果您选择创建 Google 托管的证书,请在网域下输入网域,然后点击创建
  5. 如需添加除了主要 SSL 证书资源之外的其他证书资源,请执行以下操作:
    1. 点击其他证书 > 添加证书
    2. 证书列表中选择一个证书,或点击创建新证书并按照之前的说明操作。
  6. 点击完成
  7. 不关闭窗口继续操作。

检查并最终确定

  1. 点击检查并最终确定
  2. 比较您的设置与您打算创建的内容。
  3. 如果看起来都正确,请点击创建以创建您的外部 HTTP(S) 负载平衡器。

gcloud

  1. 为 NEG 创建新的后端服务。

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --protocol=HTTP2
    
  2. 将后端服务配置为向请求添加自定义请求标头 Host: backend.example.com

    gcloud compute backend-services update images \
       --custom-request-header "Host: backend.example.com" --global
    
  3. 使用 backend-services add-backend 命令向后端服务添加互联网 NEG:

    gcloud compute backend-services add-backend images \
      --network-endpoint-group "example-fqdn-neg" \
      --global-network-endpoint-group \
      --global
    
  4. 创建一个网址映射,将后端服务指定为值 --default-service

    gcloud compute url-maps create example-url-map \
       --default-service images \
       --global
    
  5. 创建证书资源。

    1. 创建自行管理的 SSL 证书资源:

      gcloud compute ssl-certificates create example-ssl \
        --certificate CRT_FILE_PATH \
        --private-key KEY_FILE_PATH
      
    2. 创建由 Google 管理的 SSL 证书资源:

      gcloud beta compute ssl-certificates create example-ssl \
      --domains DOMAIN
      
  6. 创建新的目标 HTTPS 代理,并附加网址映射和 SSL 证书:

    gcloud compute target-https-proxies create example-target-https-proxy \
      --url-map=example-url-map \
      --ssl-certificates=example-ssl \
      --global
    
  7. 创建全球转发规则,用于配置全球任播 IP 地址。负载平衡器监听已配置端口上的任播 IP 地址。客户端可以通过 Google Cloud 网络连接到后端。

    gcloud compute forwarding-rules create example-forwarding-rule \
       --ip-protocol=TCP \
       --ports=443 \
       --global \
       --target-https-proxy=example-target-https-proxy
    

测试

检索转发规则的 IP 地址,然后使用浏览器或命令行工具(例如 curl)连接它。

gcloud compute forwarding-rules list

如需问题排查方面的帮助,请参阅排查自定义来源和互联网网络端点组问题

后续步骤

  • 如需检查 Cloud CDN 是否正在从缓存传送响应,请参阅查看日志
  • 如需了解哪些内容可缓存或不可缓存,请参阅缓存概览
  • 如需查找 Cloud CDN 的入网点,请参阅缓存位置