将 Cloud Storage 存储分区添加到负载平衡器

将 Cloud Storage 存储分区用作负载平衡器后端

本文档介绍如何修改示例 HTTP(S) 负载平衡器配置,以将针对静态内容的请求路由到 Cloud Storage 存储分区。使用 Cloud Storage 存储分区配置负载平衡器后,对以 /static 开头的网址路径的请求会发送到该存储分区,所有其他请求会发送到虚拟机实例。本文档还介绍了如何创建在两个后端存储分区之间路由流量的配置,该配置支持美国和欧盟区域。

准备工作

  1. 如果您要使用 gcloudgsutil 实用工具,可以安装这两种工具,详情请参阅快速入门:使用 gsutil 工具文档。
  2. 设置默认项目

    Console


    a. 转到 Google Cloud Platform Console 中的首页。
    转到 Google Cloud Platform 首页

    b. 在 Google Cloud Platform 的右侧,从下拉菜单中选择一个项目。

    gcloud 或 gsutil


     gcloud config set project [PROJECT_ID]
    

     gsutil config set project [PROJECT_ID]
    
    • [PROJECT_ID] - 您将用于本指南的项目。
  1. 完成指南中关于基于内容的跨区域负载平衡的操作步骤。本文档中的说明需要您使用该指南构建的资源。

配置 Cloud Storage 存储分区和负载平衡服务

以下说明假设您要将单个对象上传到每个 Cloud Storage 存储分区,然后为该对象设置权限。

要将 Cloud Storage 存储分区中的所有对象设为公开,请按照将对象群组设为可公开读取中的说明进行操作。

要使用通配符 (globs) 上传多个对象并设置其权限,请参阅通配符名称。如需详细了解如何上传对象,请参阅上传对象

配置 Cloud Storage 存储分区

创建两个 Cloud Storage 存储分区,并为每个存储分区上传一个对象。存储分区名称必须是全局唯一的。此示例会在 HTTP(S) 负载平衡示例中的实例所在的区域中创建两个多区域存储分区。

Console


在美国创建 Cloud Storage 存储分区。

  • 在 Google Cloud Platform Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器
  • 点击创建存储分区
  • 为您的存储分区输入一个独一无二的名称
    • 请勿在存储分区名称中添加敏感信息,这是因为存储分区命名空间是全局性的,并会公开显示。
  • 存储类别中选择标准
  • 位置设为美国
  • 点击创建
  • 重复这些步骤,创建第二个存储分区,这次在位置下选择欧盟

    输入 us 存储分区。

    创建 static 文件夹。

    1. 在存储分区中,点击创建文件夹
    2. 输入 static 作为文件夹名称。
    3. 点击创建

    从本地目录上传对象。

    1. 在该文件夹中,点击上传文件
    2. 浏览到文件系统中的对象,然后选择对象。
    3. 点击打开

    将对象设为可公开读取,以便通过负载平衡来提供该对象。

    1. 点击与您要设为公开的对象关联的菜单图标。

      菜单图标是对象行最右侧的三个垂直点。

    2. 从该菜单中选择修改权限

    3. 点击添加一项

    4. 为 allUsers 添加权限。

      • 为“实体”选择用户
      • 为“名称”输入 allUsers
      • 为“访问权限”选择读取者
    5. 点击保存

    公开共享后,“公共访问权限”列中会显示一个链接图标。您可以点击此图标获取该对象的网址。

    这次在 eu 存储分区中重复这些步骤。

    gsutil


    1. 创建 Cloud Storage 存储分区。

    2. 打开一个终端窗口。
    3. 使用 gsutil mb 命令创建一个存储分区并为其指定一个唯一的名称:
      gsutil mb gs://my-awesome-bucket/
      

      在上述命令中,使用了名为“my-awesome-bucket”的存储分区。您必须选择您自己的全局唯一存储分区名称。

      如果成功,此命令会返回以下内容:

      Creating gs://my-awesome-bucket/...
      
    4. 您刚刚创建了一个存储分区,现在可以在其中存储您的内容了!

    重复这些步骤,这次运行 gsutil mb -l eu gs://my-awesome-bucket/,以将位置指定为 eu

    输入 us 存储分区。

    1. 从本地目录上传对象。如果该文件位于另一个目录中,请提供完整路径。

      gsutil cp [OBJECT_NAME] gs://[EXAMPLE_BUCKET]/static/[OBJECT_NAME]
      
      • [EXAMPLE_BUCKET] - 您已创建的存储分区
      • [OBJECT_NAME] - 要上传的对象的文件名
    2. 将对象设为可公开读取,以便通过负载平衡来提供该对象。

      gsutil acl ch -u AllUsers:R gs://[EXAMPLE_BUCKET]/static/[OBJECT_NAME]
      
      • [EXAMPLE_BUCKET] - 您已创建的存储分区
      • [OBJECT_NAME] - 您上传的对象的文件名

    这次在 eu 存储分区中重复这些步骤。

    为您的 Cloud Storage 存储分区创建后端存储分区

    此过程假定您已完成 HTTP(S) 负载平衡示例。

    创建两个新后端存储分区(指向您之前创建的 Cloud Storage 存储分区),而不是像视频内容那样为静态内容创建后端服务。

    Console


    1. 转到 Google Cloud Platform Console 中的“负载平衡”页面。
      转到“负载平衡”页面
    2. web-map 行中点击修改
    3. 点击后端配置旁边的向右箭头。
    4. 点击创建或选择后端存储分区,然后选择创建后端存储分区
    5. 输入名称 static-bucket-us
    6. Cloud Storage 存储分区旁边,选择浏览
    7. 查找并选择您之前创建的 us 存储分区。
    8. 点击选择
    9. 点击创建以创建后端存储分区。
    10. 请勿针对负载平衡器点击更新

    重复这些步骤,创建第二个后端存储分区,这次在名称字段中输入 static-bucket-eu,然后选择您之前创建的 eu 存储分区。

    gcloud


    gcloud compute backend-buckets create static-bucket \
        --gcs-bucket-name [EXAMPLE_BUCKET]
    
    • [EXAMPLE_BUCKET] - 您创建的 us 存储分区

    重复此命令,这次将 EXAMPLE_BUCKET 替换为您创建的 eu 存储分区。

    修改 web-map 网址映射

    将规则添加到您现有的 web-map 网址映射中,该映射会将 /static/* 映射到在上述步骤中创建的后端存储分区中。这样可将包含 /static/* 的所有请求路由到您的 Cloud Storage 存储分区。

    Console


    1. 点击主机和路径规则旁边的向右箭头。
    2. 在第三行的主机字段中输入 *。
    3. 路径字段中输入 /static/us/*
    4. 后端字段中输入 static-bucket-us
    5. 针对负载平衡器点击更新

    重复这些步骤,在路径字段中输入 /static/eu/*,在后端字段中输入 static-bucket-eu

    gcloud


    为美国添加路径规则:

    gcloud compute url-maps add-path-matcher web-map \
        --default-service web-map-backend-service \
        --path-matcher-name bucket-matcher \
        --backend-bucket-path-rules="/static/us/*=static-bucket-us"
    

    为欧盟添加路径规则:

    gcloud compute url-maps add-path-matcher web-map 
    --default-service web-map-backend-service
    --path-matcher-name bucket-matcher
    --backend-bucket-path-rules="/static/eu/*=static-bucket-eu"

    从您的 Cloud Storage 存储分区中获取资源

    Console


    1. 转到 Google Cloud Platform Console 中的“地址”页面。
      转到“地址”页面
    2. 找到 lb-ip-1 对应的行并记下外部地址字段中的 IP 地址。
    3. 根据负载平衡器使用的协议,在浏览器中输入 http://[IP_ADDRESS]/static/[REGION]/[OBJECT_NAME]https://[IP_ADDRESS]/static/[REGION]/[OBJECT_NAME],然后按 Enter 键。尝试输入 useu 作为 [REGION]

    gcloud


    1. 查找您的全局转发规则的 IP 地址。

      gcloud compute forwarding-rules list
      
    2. 您要查找的地址就是您在运行 HTTP(S) 负载平衡示例时创建的规则的地址。测试您的 Cloud Storage 存储分区是使用 curl 还是通过访问浏览器中的网址来接收流量。

      curl http://[IP_ADDRESS]/static/[REGION]/[OBJECT_NAME]
      

      curl -k https://[IP_ADDRESS]/static/[REGION]/[OBJECT_NAME]
      
      • [IP_ADDRESS] - 您的全局转发规则的 IP 地址
      • [OBJECT_NAME] - 您上传的示例对象的名称
      • [REGION] - useu。请分别尝试使用一下。

    此命令以 [EXAMPLE_BUCKET] Cloud Storage 存储分区中的 [OBJECT_NAME] 做出响应。

    如果您将对象存储在名为 static/[FOLDER_NAME]/[FOLDER_NAME]/[OBJECT_NAME] 的存储分区中,则可以使用网址 http://[IP_ADDRESS]/static/[FOLDER_NAME]/[FOLDER_NAME]/[OBJECT_NAME] 检索该对象。

    后续步骤

    此页内容是否有用?请给出您的反馈和评价:

    发送以下问题的反馈:

    此网页
    负载平衡