使用网址映射

本指南介绍如何配置 Google Cloud 网址映射。在阅读本指南之前,请先熟悉一下网址映射概念

网址映射与以下 Google Cloud 产品结合使用:

内部 HTTP(S) 负载平衡和 Traffic Director 支持高级流量管理使用场景。如需了解详情,请参阅:

配置网址映射

您可以向网址映射添加后端服务后端存储分区

外部 HTTP(S) 负载平衡器仅支持后端存储分区。

添加网址映射

控制台

如需使用 Cloud Console 添加网址映射,请执行以下步骤:

  1. 转到负载平衡页面。

    转到“负载平衡”页面

  2. 点击负载平衡器的名称
  3. 负载平衡器详情屏幕上,点击所选负载平衡器对应的修改
  4. 选择主机和路径规则
  5. 点击添加主机和路径规则
  6. 填写主机字段和/或路径字段,然后选择一个后端服务后端存储分区
  7. 主机和路径规则左侧看到蓝色对勾标记后,点击更新按钮。

gcloud

若要使用 gcloud 命令行工具添加网址映射,请使用 url-maps create 命令:

gcloud compute url-maps create URL_MAP_NAME \
   (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \
   [--description DESCRIPTION] \
   [--global | --region=REGION]

对于内部 HTTP(S) 负载平衡器,请确保在创建网址映射时添加 --region 标志。

新创建的网址映射仅匹配一个路径,即默认路径 /*。此默认路径匹配器是自动创建的。与手动创建的路径匹配器或主机规则不匹配的所有流量都将被发送到网址映射默认后端服务。

添加路径匹配器

路径匹配器将 HTTP(S) 请求路径或路径前缀(例如 /video)映射到后端服务。与指定路径匹配的所有流量都由路径匹配器中的路径规则处理。如果路径与路径规则匹配,则请求将转发到与该路径规则关联的后端。如果请求与路径匹配器 no path 规则匹配,则请求将转发到路径匹配器的默认后端。

控制台

如需使用 Cloud Console 创建路径匹配器,请执行以下步骤:

  1. 如果您目前不在主机和路径规则屏幕上,请转到负载平衡页面。

    转到“负载平衡”页面

  2. 点击负载平衡器的名称
  3. 负载平衡器详情屏幕上,点击所选负载平衡器对应的修改
  4. 主机和路径规则屏幕中,点击添加主机和路径规则或点击现有的路径字段。
  5. 输入要配置的路径,例如 /video
  6. 主机和路径规则左侧看到蓝色对勾标记后,点击更新按钮。

gcloud

要使用 gcloud 命令行工具创建路径匹配器,请使用 gcloud compute url-maps add-path-matcher 命令:

gcloud compute url-maps add-path-matcher URL_MAP_NAME \
   --default-service BACKEND_SERVICE \
   --path-matcher-name PATH_MATCHER \
   [--path-rules="PATH=SERVICE"]

该命令需要一个默认后端服务,使该命令可对其发送不匹配请求。或者,您可以使用 --path-rules 标记定义请求路径和后端服务之间的映射。以下示例将请求路径 /video//video/* 路由到 video-service 后端服务:

--path-rules="/video=video-service,/video/*=video-service"

url-maps createurl-maps add-path-matcher 命令都带有一个 --default-service 参数。在 create 中,如果路径匹配器与传入的网址均不匹配,则使用默认服务。在 add-path-matcher 中,如果路径与路径匹配器匹配,但没有任何 --path-rules 匹配,则使用默认服务。

添加主机规则

控制台

要使用 Cloud Console 创建主机规则,请执行以下步骤:

  1. 如果您目前不在主机和路径规则屏幕上,请转到负载平衡页面。

    转到“负载平衡”页面

  2. 点击负载平衡器的名称
  3. 负载平衡器详情屏幕上,点击所选负载平衡器对应的修改
  4. 主机和路径规则屏幕中,点击添加主机和路径规则或点击现有的主机字段。
  5. 输入完全限定的主机名,例如 web.example.com
  6. 主机和路径规则左侧看到蓝色对勾标记后,点击更新按钮。

gcloud

如需使用 gcloud 命令行工具创建主机规则,请使用 gcloud compute url-maps add-host-rule 命令:

gcloud compute url-maps add-host-rule URL_MAP_NAME \
    --hosts=HOSTS --path-matcher-name=PATH_MATCHER

--hosts 标志定义了一组主机,用于匹配针对这些主机发出的请求。例如,以下 --hosts 值将匹配针对 www.example.com 网域以及任何 google.com 的子网域的请求:

--hosts *.google.com,www.example.com

选择后端服务或后端存储分区

控制台

如需为网址映射选择后端服务或后端存储分区,请执行以下步骤:

  1. 如果您目前不在主机和路径规则屏幕上,请转到负载平衡页面。

    转到“负载平衡”页面

  2. 点击负载平衡器的名称
  3. 负载平衡器详情屏幕上,点击所选负载平衡器对应的修改
  4. 主机和路径规则屏幕的后端字段下拉菜单中,选择可用的后端服务或后端存储分区。
  5. 主机和路径规则左侧看到蓝色对勾标记后,点击更新按钮。

gcloud

如需使用 gcloud 命令行工具选择后端服务或后端存储分区,请使用 url-maps set-default-service 命令。

gcloud compute url-maps set-default-service URL_MAP_NAME
  (--default-backend-bucket=DEFAULT_BACKEND_BUCKET
  | --default-service=DEFAULT_SERVICE)[GCLOUD_WIDE_FLAG ...]

测试网址映射

您可以将配置测试添加到网址映射,以确保您的网址映射按预期将请求路由到后端服务或后端存储分区。

当您修改网址映射时,测试会运行,并且在测试失败时系统会显示错误消息。

  Error: Invalid value for field 'urlMap.tests': ''.
  Test failure: Expect URL '' to map to service '', but actually mapped to ''.

您可以选择向网址映射添加测试。

控制台

要通过 Cloud Console 运行测试,请执行以下操作:

  1. 转到负载平衡页面。

    转到“负载平衡”页面

  2. 点击负载平衡器的名称
  3. 负载平衡器详情屏幕上,点击所选负载平衡器对应的修改
  4. 点击主机和路径规则
  5. 主机和路径规则下,点击显示配置测试
  6. 点击添加配置测试。添加以下测试网址和后端。
    • 测试网址 example.com后端 www-service.
    • 测试网址 example.net后端 www-service.
    • 测试网址 example.net/web后端 www-service.
    • 测试网址 example.com/videos后端 video-service.
    • 测试网址 example.com/videos/browse后端 video-service.
    • 测试网址 example.net/static后端 static-service.
    • 测试网址 example.net/static/images后端 static-service.
  7. 主机和路径规则左侧看到蓝色对勾标记后,点击更新按钮。

gcloud

如要使用 gcloud 命令行工具向网址映射添加测试,请使用 gcloud compute url-maps edit 命令:

gcloud compute url-maps edit URL_MAP_NAME

这将启动文本编辑器。对于外部 HTTP(S) 负载平衡器,您的测试必须采用以下格式:

  tests:
    - host: example.com
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.net
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.com
      path: /videos
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
    - host: example.com
      path: /videos/browse
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
    - host: example.net
      path: /web
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.net
      path: /static
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service
    - host: example.net
      path: /static/images
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service

对于内部 HTTP(S) 负载平衡器,您的服务网址必须指向地区后端服务。例如:

https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices//www-service

请注意,如果您未在主机规则中指定主机,则所有主机(example.com 和 example.net)中的网址都可以匹配。如果您有追加规则,则必须创建能够同时匹配 example.com 和 example.net 的规则。

列出网址映射

控制台

您无法在 Cloud Console 中列出所有网址映射。

gcloud

如需使用 gcloud 命令行工具显示网址映射列表,请使用 url-maps list 命令。

gcloud compute url-maps list

获取有关网址映射的信息

控制台

要获取有关网址映射的信息,请执行以下步骤:

  1. 转到负载平衡页面。

    转到“负载平衡”页面

  2. 点击负载平衡器的名称
  3. 负载平衡器详情屏幕上,点击所选负载平衡器对应的修改
  4. 查看主机和路径规则

gcloud

如需使用 gcloud 命令行工具获取单个网址映射的相关信息,请使用 url-maps describe 命令。

gcloud compute url-maps describe URL_MAP_NAME

删除网址映射

仅在删除引用网址映射的所有目标代理后,您才能删除该网址映射。如需了解详情,请参阅删除目标代理

控制台

要删除网址映射,请执行以下步骤:

  1. 转到负载平衡页面。

    转到“负载平衡”页面

  2. 点击负载平衡器的名称
  3. 负载平衡器详情屏幕上,点击所选负载平衡器对应的修改
  4. 负载平衡器详情屏幕上,查看主机和路径规则
  5. 点击网址映射右侧的“X”将其删除,相应网址映射会随即消失。
  6. 主机和路径规则左侧看到蓝色对勾标记后,点击更新按钮。

gcloud

若要使用 gcloud 命令行工具删除网址映射,请使用 url-maps delete 命令。必须先删除引用该网址映射的所有目标 HTTP 代理,才能删除该网址映射。

gcloud compute url-maps delete URL_MAP_NAME [--quiet]

删除路径匹配器

控制台

如需删除路径匹配器,请执行以下步骤:

  1. 转到负载平衡页面。

    转到“负载平衡”页面

  2. 点击负载平衡器的名称
  3. 负载平衡器详情屏幕上,点击所选负载平衡器对应的修改
  4. 选择主机和路径规则
  5. 在现有网址映射的路径字段中,点击路径匹配器名称上的“x”。
  6. 主机和路径规则左侧看到蓝色对勾标记后,点击更新按钮。

gcloud

如需删除路径匹配器,请使用 gcloud compute url-maps remove-path-matcher 命令:

gcloud compute url-maps remove-path-matcher URL_MAP_NAME \
   [--path-matcher-name PATH_MATCHER]

删除主机规则

控制台

要删除主机规则,请执行以下步骤:

  1. 如果您目前不在主机和路径规则屏幕上,请转到负载平衡页面。

    转到“负载平衡”页面

  2. 点击负载平衡器的名称
  3. 负载平衡器详情屏幕上,点击所选负载平衡器对应的修改
  4. 选择主机和路径规则
  5. 在现有网址映射的主机字段中,点击主机名称上的“x”。
  6. 主机和路径规则左侧看到蓝色对勾标记后,点击更新按钮。

gcloud

要从网址映射中删除主机规则,请使用 gcloud compute url-maps remove-host-rule 命令:

gcloud compute url-maps remove-host-rule URL_MAP_NAME --host=HOST

例如,要从名为 my-map 的网址映射中移除包含主机 google.com 的主机规则,请运行以下命令:

gcloud compute url-maps remove-host-rule my-map --host google.com

后续步骤