配置启用 Google Cloud CDN 实例详解

小助手读文章 00:00 / 00:00

此前分享过《如何配置启用 Google Cloud CDN》,对 Google Cloud CDN 进行了一些体验,但还是有一些朋友表示有疑问,这里就以实际应用再来详细说说如何配置启用 Google Cloud CDN。

需求背景

网站实际托管于别家 VPS,域名为 vircloud.net,启用了 https,并自动 http 重写。

现在需求是想要使用 Google Cloud CDN 来加速网站。

应用分析

Google Cloud CDN 只支持运行在 Google Compute Engine 的网站,不支持外部网站接入,所以想要使用 Cloud CDN 加速外部网站,可以在 Compute Engine 新建一台 VM,VM 配置反代要加速的网站,然后通过负载平衡器,Cloud CDN 加速 VM 即可。

配置实例

建立实例

打开 Google Compute,创建实例:

创建实例.png

根据自己需求选择机器类型、启动磁盘等等配置,一般反代源站的话最低配完全足够了,区域的话建议选择与网站所在机房靠近的,不然可能达不到加速的目的:

选择配置.png

创建成功后即可通过 SSH 登录实例 VM,如果登录不上,可能需要先在防火墙开放下端口:

创建防火墙规则.png

主要注意流量方向、执行的操作、目标、来源 IP、协议和端口的配置:

填写规则.png

配置反代

通过 SSH 登录 VM,然后参照《利用 Nginx 反向代理和缓存功能自建及优化 CDN 加速节点详细教程》建立源站的反代。

建立后先测试一下反代是否成功,比如在本地(不是 VM)修改 hosts 指向 VM,然后浏览器访问网站看看是否正常显示,或者 Linux 下使用 curl 命令查看响应码是否正常:

[[email protected] logs]# curl -I https://vircloud.net
HTTP/1.1 200 OK
Date: Tue, 16 Jul 2019 09:09:24 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Pingback: https://vircloud.net/action/xmlrpc
Set-Cookie: 1ace4129ed475fea40c32ab2c48ab0c2_armxmod_online=U1; path=/
Server: vcloud
Strict-Transport-Security: max-age=15552000; includeSubdomains; preload
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN

创建运行检查

Google Cloud CDN 有个运行状况检查来确定 VM 分流,针对的是有多个 VM 的情况。虽然现在支持后端 VM 只有一个的情况,但是运行状况检查还是需要配置的。

打开运行状况检查,创建运行状况检查:

创建运行状况检查.png

因为我们只有一个 VM,所以其实检查没有太大作用,做不到故障转移。需要注意的有协议、主机 HTTP 标头,其他参数视需求配置。

协议:指定 Google 检查服务以什么协议检查 VM 可用性,一般 HTTP 即可。
主机 HTTP 标头:针对一个 VM 运行多个网站的情况,如果没有指定,则检测默认网站,这里我们要加速 vircloud.net,所以我们设为 vircloud.net 即可。

填写检查规则.png

创建后,稍等片刻在 VM 网站运行日志里就可以看到 GoogleHC/1.0 的蜘蛛在检查了。

需要注意的是,有时候可能会遇到无请求方式(GET)、无协议、无 User-Agent、网站响应码为 400 的检查,这是因为检查规则没有配置好需要重新确认下,修改后需要等一会儿才会生效。

运行状况检查只认响应码为 200 的回复,也就是说,如果网站启用了 HTTPS 且自动跳转,但是你创建的运行检查却是 HTTP,那么运行状况检查得到的响应码将是 301,检查会认为网站无法正常工作。

创建实例组

实例组的作用在 Cloud CDN 种与运行状况检查作用差不多,起到故障转移的作用,通过下一步的负载平衡实现。

打开实例组,创建实例组:

创建实例组.png

因为我们先创建了实例,所以这里我们新建非托管式实例组,位置区域选择 VM 实例所在的位置区域,然后选上 VM 实例点创建:

配置实例组.png

负载平衡

Google Cloud CDN 基于负载平衡实现,所以我们需要先创建负载平衡策略。

打开负载平衡,创建 HTTP(S) 的负载平衡器:

创建负载平衡器.png

负载平衡器需要配置三个部分:后端、主机和路径、前端:

配置负载平衡器.png

我们一一来看看配置。

后端配置

后端配置是指要指定 VM 来源,也就是我们创建的反代,通过后端服务来实现。

需要注意的是协议、实例组、端口号,其中协议可以是 HTTP,也可以是 HTTPS,这里选择 HTTPS:

配置后端服务.png

直接在此时勾上 Cloud CDN,运行状况检查选择上面配置的检查规则,我们还可以添加自定义标头,意思是后端源站可以看到这时候配置的标头:

配置后端服务.2.png

主机和路径规则

因为我们只有一个后端,所以这里保持默认即可:

配置主机和路径规则.png

前端配置

前端配置这里就是配置外部要怎么访问我们的后端服务。与后端配置一样,可以配置 HTTP,也可以配置 HTTPS,配置 HTTPS 的话需要添加 SSL 证书,也可以使用谷歌签发的证书,这里配置为 HTTPS。IP 地址的话,支持 IPv4,也支持 IPv6,因为后面我们还要实现 HTTPS 重写,重写需要静态 IP,而负载平衡器静态 IP 支持一个,所以看自己需要要使用 IPv4 还是 IPv6:

配置前端服务.png

配置好后点创建。

HTTPS 重写

Google Cloud CDN 尚不支持直接 301 或 302 重写!也就是前端要么 HTTP,要么 HTTPS做不到 HTTP 自动跳转 HTTPS。

因此要实现 HTTPS 重写,需要分别创建 HTTP 和 HTTPS 负载平衡器,即重复上一步的负载平衡器创建步骤,只是从 HTTPS 变成 HTTP,然后 IP 使用的还是上一步保留的静态 IP:

负载平衡器.png

CDN 测试

到这里,如果前面几步没出问题,Google Cloud CDN 已经启用成功,测试一下:

[email protected]:~# curl -I http://vircloud.net
HTTP/1.1 301 Moved Permanently
Date: Tue, 16 Jul 2019 11:51:00 GMT
Content-Type: text/html
Content-Length: 185
Location: https://vircloud.net/
Server: vcloud
Via: 1.1 google

[email protected]:~# curl -I https://vircloud.net
HTTP/2 200 
date: Tue, 16 Jul 2019 11:51:44 GMT
content-type: text/html; charset=UTF-8
vary: Accept-Encoding
x-pingback: https://vircloud.net/action/xmlrpc
set-cookie: 1ace4129ed475fea40c32ab2c48ab0c2_armxmod_online=U2; path=/
strict-transport-security: max-age=15552000; includeSubdomains; preload
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
server: vcloud
via: 1.1 google
alt-svc: quic=":443"; ma=2592000; v="46,43,39"

可以看到已经成功获得源站响应,且添加了 via: 1.1 google 标头,表示由 Google Cloud CDN 提供的加速服务。

至于 alt-svc 标头,是我在 HTTPS 前端配置时 ,启用了 QUIC 协商。

CDN 价格

Google Cloud CDN 各地区价格不一样,但相对都是比较贵的,以台湾地区一个月(31 天)为例:

本实例创建的两条负载平衡规则,收费 $18.6;
负载平衡器入站数据,$0.008/GB;
CDN 出站数据,前 10TB 收费 $0.2/GB;
CDN 缓存数据,$0.06/GB;


你可能还需要:

1、《如何配置启用 Google Cloud CDN


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 Googlegcegoogle cloud enginegoogle cloud platformgcpcdn教程经验 的文章

 本文最后更新于 2019/07/18 12:00:00,可能因经年累月而与现状有所差异

 引用转载请注明:VirCloud's Blog > 经验 > 配置启用 Google Cloud CDN 实例详解