使用后端存储分区设置 Cloud CDN
https://cloud.google.com/cdn/docs/setting-up-cdn-with-bucket?authuser=1
Cloud CDN 利用 Google Cloud 全球外部 HTTP(S) 负载平衡器来提供路由、运行状况检查和任播 IP 支持。由于全球外部 HTTP(S) 负载平衡器可以有多种后端实例类型(Compute Engine 虚拟机实例、Google Kubernetes Engine pod、Cloud Storage 存储分区或 Google Cloud 之外的外部源站),因此您可以选择为哪些后端(源站)启用 Cloud CDN。
本设置指南介绍如何创建一个启用了 Cloud CDN 的简单的外部 HTTP(S) 负载平衡器。该示例使用以下资源:
- 默认 Virtual Private Cloud (VPC) 网络
- 默认网址映射
- 预留的外部 IP 地址
- 作为后端的 Cloud Storage 存储分区
- 一个负载平衡器后端存储分区,用作 Cloud Storage 存储分区的封装容器
后端存储分区支持以下功能:
外部 HTTP(S) 负载平衡器使用网址映射将来自指定网址的流量定向到指定服务。下表汇总了您可以在其中托管内 容和服务的后端类型。
负载平衡器后端配置 | 典型内容类型 | 后端类型 |
后端服务 | 动态(如数据) |
|
后端存储分区 | 静态(如映像) |
|
- 1.在 Google Cloud Console 中,转到首页。
- 2.在 Google Cloud 的右侧,从下拉菜单中选择一个项目。
- 1.在 Google Cloud Console 中打开 Cloud Storage 浏览器。
- 2.点击创建存储分区。
- 3.为下表中的字段指定值,其他所有字段保留默认值:属 性值(输入值或选择指定的选项)名称为每个存储分区输入一个全局唯一的名称。如果您输入的名称不是唯一的,则会看到一条消息,提 示您尝试使用其他名称。位置类型多区域位置选择一个区域,例如 us(美国的多个区域)。默认存储类别标准访问控制统一
- 4.点击创建。
- 5.记下新创建的 Cloud Storage 存储分区的名称,以进行下一步。
要使您能够测试设置,请将图形文件从公共 Cloud Storage 存储分区复制到自己的 Cloud Storage 存储分区。
- 1.在 Cloud Shell 中运行以下命令。将
BUCKET_NAME
替换为您的 Cloud Storage 存储分区的唯一名称:gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/static/us/ - 2.在 Cloud Console 中,点击刷新,以验证图形文件已复制。
此示例使您的 Cloud Storage 存储分区可供公开读取。这是公开内容的推荐方法。如此设置时,互联网上的任何人都可以查看和列出您的对象及其元数据(不包括 ACL)。推荐做法是将特定 Cloud Storage 存储分区专用于公开对象。如需了解详情,请参阅建议的存储分区架构。重要提示:从公共 Cloud Storage 存储分区传送对象时,默认情况下,对象应用了
Cache-Control: public, max-age=3600
响应标头。这样,您可以在启用 Cloud CDN 时缓存对象。以下是将 Cloud Storage 存储分区设为公开的其他方法:
- 1.在 Google Cloud Console 中打开 Cloud Storage 浏览器。
- 2.导航到该存储分区,然后点击权限标签页。
- 3.点击添加成员。
- 4.在新成员中输入
allUsers
。 - 5.对于角色,请选择 Cloud Storage > Storage Object Viewer。
- 6.点击保存。
- 1.在 Google Cloud Console 中,转到外部 IP 地址页面。
- 2.如需预留 IPv4 地址,请点击预留静态地址。
- 3.指定名称
example-ip
。 - 4.将网络服务层级设置为优质。
- 5.将 IP 版本设置为 IPv4。
- 6.将类型设置为全局。
- 7.点击保留。
开始外部 HTTP(S) 负载平衡器配置过程
- 1.在 Google Cloud Console 中,转到负载平衡页面。
- 2.在 HTTP(S) 负载平衡下,点击开始配置。
- 3.选择从互联网到我的虚拟机,然后点击继续。
- 4.将名称设置为
http-lb
,然后转到下一步。
配置后端并启用 Cloud CDN
创建负载平衡器的后端存储分区,将其用作 Cloud Storage 存储分区的封装容器。创建或修改后端存储分区时,您可以启用 Cloud CDN。
- 1.点击后端配置。
- 2.在后端服务和后端存储分区下,点击创建或选择后端服务和后端存储分区,然后点击后端存储分区 > 创建后端存储分区。
- 3.将名称设置为
backend-bucket1
。 此名称不需要是全局唯一的,并且可以与实际 Cloud Storage 存储分区的名称不同。 - 4.在 Cloud Storage 存储分区下,点击浏览。
- 5.选择您创建的 Cloud Storage 全局唯一
BUCKET_NAME
,然后点击选择。 - 6.点击启用 Cloud CDN。重要提示:请确保您在此步骤中选择启用 Cloud CDN。忘记执行此操作会导致直接从 Cloud Storage 存储分区传送对象,而不是从 Google 的全球 CDN 缓存传送。
- 7.点击创建。
配置主机规则和路径匹配器
在主机和路径规则中,您可以保留默认设置。
配置前端
- 1.点击前端配置。
- 2.验证下表中的选项配置了这些值。属性值(输入值或选择指定的选项)协议HTTP网络服务层高级IP 版本IPv4IP 地址
example-ip
端口80如果您希望创建 HTTPS 负载平衡器而不是 HTTP 负载平衡器,您必须拥有 SSL 证书 (gcloud compute ssl-certificates list
),并且必须按如下所示填写相关字段。属性值(输入值或选择指定的选项)协议HTTPS网络服务层高级IP 版本IPv4IP 地址example-ip
端口443证书选择证书或创建新证书 - 3.点击完成。
检查配置
- 1.点击检查并最终确定。
- 2.检查后端存储分区、主机和路径规则和前端部分。
- 3.点击创建。
- 4.等待负载平衡器完成创建。
- 5.点击负载平衡器的名称 (http-lb)。
- 6.请 记下负载平衡器的 IP 地址,以便在下一个任务中使用。它被称为
IP_ADDRESS
。
- 1.在 Google Cloud Console 中,转到负载平衡页面。
- 2.点击
http-lb
,展开您刚创建的负载平衡器。在后端部分中,确认后端存储分区运行状况良好。 您的后端存储分区旁边应该有一个绿色选中标记。否则,请先尝试重新加载页面。Cloud Console 可能需要一段时间才能指示后端状况良好。 - 3.在 Cloud Console 显示后端存储分区运行状况良好后,您可以使用网络浏览器转到
http://IP_ADDRESS/static/us/three-cats.jpg
来测试您的负载平衡器。将IP_ADDRESS
替换为负载平衡器的 IP 地址。您的浏览器应该会打开一个页面,其中包含呈现图形文件的内容。
如果您连续多次重新加载
http://ip-address/static/us/three-cats.jpg
页面,则应该有多次缓存命中。以下日志条目显示了缓存命中。您可以通过在 Google Cloud Console 中打开日志查看器并按转发规则名称进行过滤来查看缓存命中。
2020-06-08 16:41:30.078 PDT
GET
304
157 B
null
Chrome 83
http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg
CLIENT_IP_ADDRESS - "GET http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg" 304 157 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"
Expand all | Collapse all{
httpRequest: {
cacheHit: true
cacheLookup: true
remoteIp: "CLIENT_IP_ADDRESS"
requestMethod: "GET"
requestSize: "577"
requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg"
responseSize: "157"
status: 304
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"
}
insertId: "1oek5rg3l3fxj7"
jsonPayload: {
@type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
cacheId: "SFO-fbae48ad"
statusDetails: "response_from_cache"
}
logName: "projects/PROJECT_ID/logs/requests"
receiveTimestamp: "2020-06-08T23:41:30.588272510Z"
resource: {
labels: {
backend_service_name: ""
forwarding_rule_name: "http-lb-forwarding-rule"
project_id: "PROJECT_ID"
target_proxy_name: "http-lb-target-proxy"
url_map_name: "http-lb"
zone: "global"
}
type: "http_load_balancer"
}
severity: "INFO"
spanId: "7b6537d3672e08e1"
timestamp: "2020-06-08T23:41:30.078651Z"
trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992"
}
为单个后端存储分区停用 Cloud CDN
- 1.在 Google Cloud Console 中,转到 Cloud CDN 页面。
- 2.在源站所在行的右侧,点击菜单 more_vert,然后选择修改。
- 3.取消选中您想要停止使用 Cloud CDN 的所有后端存储分区的复选框。
- 4.点击更新。
为某个源站的所有后端存储分区移除 Cloud CDN
- 1.在 Cloud Console 中,转到 Cloud CDN 页面。
- 2.在源站所在行的右侧,点击菜单 more_vert,然后选择移除。
- 3.点击移除进行确认。
停用 Cloud CDN 后,系统不 会使缓存失效或完全清除缓存。如果您关闭 Cloud CDN,然后重新开启 Cloud CDN,则大部分或所有缓存的内容仍可能会被缓存。为了防止缓存使用内容,您必须使该内容失效。
Last modified 2yr ago