本教程作为入门示例,介绍如何利用 Cloudflare 的全球流量管理。
以下各节将指导您设置主动-被动故障转移负载均衡器,以 Cloudflare Pages 作为端点之一,同时详细介绍负载均衡仪表板工作流以及一些重要的字段值和故障排查。
如果您正在将生产网站或应用迁移到 Pages,或只是想在主源站不可用时拥有备份或个性化网页,此设置会很有用。
请确保您:
- 熟悉 Cloudflare Load Balancing 组件。
- 拥有域并将 Cloudflare 用作主 DNS 提供商。
- 已使用 Cloudflare Pages 部署网站或应用。
- 已在账户中启用 Load Balancing。
虽然您可以在 Create Load Balancer(创建负载均衡器) 工作流中创建所有组件,但单独使用 Manage Monitors(管理监视器) 和 Manage Pools(管理池) 部分更容易在将组件组合到负载均衡器之前测试和排查每个组件的配置。
监视器定义端点被视为健康或不健康的标准。首先按以下方式设置监视器。
-
在 Cloudflare 仪表板中,前往 Load Balancing(负载均衡) 页面。
Go to Load Balancing ↗ -
选择 Monitors(监视器) 选项卡,然后 Create monitor(创建监视器)。
-
为监视器指定描述性名称,并确认其他字段填写如下:
| Field | Value |
|---|---|
| Type | HTTP |
| Path | / |
| Port | 80 |
-
在 Advanced health check settings(高级健康检查设置) 下,保持默认值并启用 Follow Redirects(跟随重定向) 选项。
使用 Cloudflare Pages 等服务时,健康监视器的请求——以及访客的请求——可能在到达目标之前被重定向。启用此选项可防止监视器在端点实际只是被重定向(例如使用
301代码)时报告不健康。
- 选择 Save(保存) 确认。
池保存健康监视器请求和访客请求将导向的位置信息。
为支持上述用例,假设您只有一个生产网站源站和一个 Cloudflare Pages 实例源站,创建两个池,每个池一个端点:
-
在 Cloudflare 仪表板中,前往 Load Balancing(负载均衡) 页面。
Go to Load Balancing ↗ -
选择 Pools(池) 选项卡,然后 Create monitor(创建监视器)。
-
对于第一个池,首先填写字段:
- 池名称(必须唯一)。建议:
primary - 描述以提供更多名称详情。建议:
production website
-
保持 Endpoint Steering(端点导向) 选择不变。由于每个池只有一个端点,此导向方法在此情况下不会产生影响。
-
添加源站服务器作为端点,信息如下:
-
端点名称(必须唯一)。建议:
my-website。 -
端点 IP 地址或主机名。
-
端点权重,可设置为
1。由于每个池只有一个端点,端点权重在此情况下没有影响。 -
通过选择 Add host header(添加主机标头) 添加主机名。
- 使用以下信息完成第一个池的配置:
- 保持 Health Threshold(健康阈值) 为
1。由于每个池只有一个端点,这是此字段的唯一可能值。 - 选择上一步配置的 Monitor(监视器)。
- 选择 Health Check Regions(健康检查区域),选择 Cloudflare 应从哪些位置发送监视器请求以定期测试端点健康状态。
-
选择 Save(保存)
-
使用以下值为第二个池重复此过程:
| Field | Value |
|---|---|
| Pool name | secondary |
| Description | Pages version |
| Endpoint steering | <default> |
| Endpoint name | my-pages-website |
| Endpoint address | <your custom domain or Pages subdomain> |
| Weight | 1 |
| Host (Add host header) | <your custom domain or Pages subdomain> |
| Health threshold | 1 |
| Monitor | <monitor defined on previous step> |
| Health check regions | <select region of your choice> |
在设置负载均衡器之前:
-
在 Cloudflare 仪表板中,前往 Load Balancing(负载均衡) 页面。
Go to Load Balancing ↗ -
前往 Pools(池) 选项卡。
-
在列表中找到您创建的池,检查状态是否为
Healthy。您可能需要刷新页面。 -
展开每个池条目,确认其中端点的健康状态也是
Healthy。
基本原则是,如果您的生产网站和 Cloudflare Pages 项目都已上线且可通过浏览器直接访问,监视器也应该能够收到 200 作为 HTTP 响应。
修订池和监视器配置以确认它们遵循上述说明。如果仍有问题,请参阅故障排查或 FAQ。
确认端点和监视器设置正确并返回预期健康状态后,创建负载均衡器:
-
在 Cloudflare 仪表板中,前往 Load Balancing(负载均衡) 页面。
Go to Load Balancing ↗ -
选择 Create load balancer(创建负载均衡器)。
-
在 Hostname(主机名) 页面上,配置以下内容并选择 Next(下一步)。
-
在 Add a Pool(添加池) 页面上,配置以下内容并选择 Next(下一步)。
- 选择之前创建的第一个池并选择 Add Pool(添加池)。
- 对第二个池执行相同操作,并根据需要重新排序。对于本教程,您的生产网站池将是第一个(
primary),Cloudflare Pages 池将是第二个(secondary)。 - 如果需要,更新 Fallback Pool(回退池)。对于本教程,您可以将其留为指向备用池。
-
在 Monitors(监视器) 页面上,查看附加到池的监视器和预期健康状态,并选择 Next(下一步)。
-
在 Traffic Steering(流量导向) 页面上,确保选择了 Off(关闭)。这意味着负载均衡器将遵循 Add a Pool(添加池) 部分(上面步骤 3)建立的顺序,实现主动-被动故障转移 配置。
-
对于本教程,将 Custom Rules(自定义规则) 选项留空。
-
在 Review(审核) 页面上,查看配置并选择 Save as Draft(保存为草稿)。
类型为 LB 的 DNS 记录将在 DNS > Records(记录) ↗ 下创建,使用您定义的主机名,相应的负载均衡器将添加到 Load Balancing(负载均衡) ↗
如果您为负载均衡器使用了临时主机名,请按照以下步骤部署和测试。
-
在 Cloudflare 仪表板中,前往 Load Balancing(负载均衡) 页面。
Go to Load Balancing ↗ -
在 Load Balancers(负载均衡器) 列表中,找到在测试主机名(如
lb)下创建的负载均衡器并启用它。 -
在浏览器中,请求临时主机名(
lb.example.com)。您应该看到托管在主源站服务器上的网站或应用。 -
返回 Manage Load Balancers(管理负载均衡器) 列表,展开测试负载均衡器,并禁用主池。
-
在浏览器的新隐身窗口中,再次请求临时主机名。这次您应该看到托管在备用源站服务器上的网站或应用。
设置负载均衡器并确认一切正常工作后,您可以将负载均衡器放在线上域或子域上:
-
确认生产主机名具有正确的 DNS 记录优先级顺序,并受 SSL/TLS 证书覆盖。
如果您有 Enterprise 账户,还要评估应用是否有任何排除路径。例如,您可能不希望负载均衡器分配指向
/admin路径的请求。对于任何例外,设置 Origin rule。 -
通过编辑现有负载均衡器的 Hostname(主机名) 配置负载均衡器以接收生产流量。