教程:如何在 Cloudflare 上设置负载均衡和智能故障切换

failover-graphic.gif

简介

Cloudflare 的负载均衡基于高度可用且具有 DDoS 功能的 Anycast DNS 网络,可提供三个主要功能:
  • 负载均衡和故障切换:在正常运行的服务器之间均匀地传输流量,如果任何服务器运行不正常,则会自动进行故障切换。
  • Health Check:设置运行状况检查以按可配置的时间间隔监视服务器,并查找特定的状态代码、响应文本和/或超时。我们将从每个数据中心检查您的服务器,因此只有您无法访问的数据中心才需进行故障切换。
  • 地理控制:将欧洲的访问者定向到您的欧洲数据中心,将美国访问者定向到北美数据中心,或深入了解并在区域级别配置流量。

先决条件

本指南要求您具备以下条件:
  • 具有负载均衡订阅的现有 Free、Pro 或 Business 帐户 - 可在Traffic应用中进行配置
  • (或)启用负载均衡的 Enterprise 帐户
  • 至少两 (2) 个源站,用于配置流量 

如果您尚未配置任何服务器,或想要测试一下,我们在 Digital Ocean 的朋友具有关于在 Ubuntu 16.04 上设置 nginx 的精彩教程,您可以关注它(两次!)。

术语

Cloudflare 的 Load Balancer 有三个主要组件:
 
  • “Health Check”或Monitor” - 用于确定服务器是否运行正常的配置。其中包括我们是否检查 HTTP 或 HTTPS,我们查找的状态代码,我们检查的间隔等。Health Check附加到Pools,因此您可以根据需要以不同方式监视不同位置或服务器组。
  • pool” - 一组源站或端点),每个源站由其 IP 地址或主机名标识。您可以根据需要配置多个pool,并配置故障切换优先级pool A -> pool B -> pool C)。如果您熟悉 DNS 术语,请将pool视为记录集” 不同的是,pool仅返回视为运行正常的地址。
  • 在 Cloudflare 术语中,Load Balancer”是您希望对流量进行负载均衡的 DNS 主机名 - 例如 www.example.com。Load Balancer 按照pool应使用的顺序定义它要使用的pool。地理路由也在 Load Balancer 级别配置。 

 

注意:您可以在许多 Load Balancer 中重复使用Monitor和pool。您的 .co.uk 域可能会使用与 .com.au 域不同的pool排序例如,伦敦服务器优先)。

我们要创建的内容

我们将配置“主动 - 被动”故障切换设置:我们将流量发送到
主动pool中的服务器,直到它失败由我们设置的阈值定义)。然后,流量将故障切换到
被动池。
 
关键部分包括:
  • 主机名:lb.moonbrookbowlsclub.com
  • (2) 台服务器:origin-server-1 和 origin-server-2
  • 一个位置之后我们将添加多个地理位置)
如果您只想配置主动 - 主动”故障切换,以便所有服务器
同时接收流量 - 这更容易。只需创建一个包含所有
服务器/端点的pool,Cloudflare 将自动(并均匀地)在所有正常运行的源站上分配负载。如果其中一台服务器出现故障,我们会将其从轮换中去除,直到它恢复正常为止。
 

创建 Load Balancer

转到 Cloudflare 控制面板中的Traffic应用,然后选择您要为其设置 Load Balancer 的站点。如果您看到Enable Load Balancing而不是Create a Load Balancer,则需要先将负载均衡服务添加到您的帐户。

 

1.png

 

单击Create a Load Balancer并提供 Load Balancer 的主机名 - Load Balancer 可用的 DNS 名称。 

注意

  • 如果您具有此名称的现有 DNS 记录,则部署后,Load Balancer 将取代该记录(更多详细信息)。
  • 主机名右侧的“橙色云”表示 Cloudflare 将代理流量,以便您可以从通常受益的相同缓存、安全和性能优势中受益。如果您需要仅 DNS 的 Load Balancer(例如,对于非 HTTP(S) 协议),则可以单击此按钮将其设置为“灰色云”(未经处理)模式(详细了解其工作原理)。

您还可以在此处启用 Session Affinity。有关此功能的更多详细信息,请参阅负载均衡:Session Affinity

单击下一步继续。 

2.png

 

接下来,我们将创建并添加pool。我们将创建两个pool:主pool和辅助“备用”pool,如果主pool出现故障,备用pool将为流量提供服务。

单击Create an origin pool,然后我们将为pool命名(名称必须是唯一的),命名并添加我们的源站地址。我们将在此处添加一个 IP 地址,但如果我们的源站有主机名(例如 someapp.googleapps.com),则可以输入该主机名。如果您之前已配置pool,则可以在此处选择并添加pool。单击Save以继续。

 

3.png

 

我们还将添加第二个pool,方式类似于我们的第一个pool,只需单击添加pool

注意:如果您使用的是 Free、Pro 或 Business 计划,则最多可以添加 5 个Pools。

 6.png

 

默认情况下,pool将按创建日期排序。您可以通过拖动左边的数字来对pool重新排序。现在,我们将保持顺序不变,然后单击Next继续。

 

7.png

 

现在,我们将创建Health Check/Monitor。Health Check描述了我们将如何检查源站状态,并且不会绑定到特定服务器。Health Check与Pool绑定后,便会开始Health Check:它将自动计算该pool中的所有源站地址,并对其进行检查。因此,我们可以在两个pool中共享这个设置。这也意味着Monitor的更改会自动反映在使用它的所有pool中。依次单击Health CheckAttach Health Check,即可创建我们的第一个Health Check。

Health Check只能在 80 和 443 端口上运行。
9.png
 
 
 
虽然Health Check可配置性很高,但默认设置(HTTP 和源站的“根”路径)现在也可以正常使用。单击Next将运行状况检查附加到主池。
 
注意:如有必要,我们可以添加自定义标头、更改超时和重试次数,以及检查特定的响应正文。如果源站响应时未提供该正文,我们会将其标记为不正常。
 
10.png
  
 
Health Threshold定义在pool本身被标记为不正常之前,必须保持正常运行状态的源站数量。我们此处只有 1 个源站,因此我们将其保留为 1。您可以选择我们发送健康检查的特定区域。我们还将输入希望接收状态(正常与不正常)通知的电子邮件地址;如果与更大的团队分享,则是邮件列表地址(例如 Google Group)或 PagerDuty 地址
 
完成后单击Save
 
11.png
 
我们将重复这些步骤以将运行状况检查添加到辅助pool。
 
附加健康检查后,当我们开始进行第一次检查时,状态将暂时为Unknown
 
仪表板将每 60 秒轮询一次更新的运行状况,如果运行状况检查失败,您应该看到绿色Healthy状态或红色Critical状态。如果您看到失败,可以将鼠标悬停在工具提示上并查看失败的确切原因。在我们的知识库中可以找到失败原因和解决步骤。
 
现在单击Next继续。 
 
如果您还在订阅中启用了 Geo Routing,则可以按地理区域配置特定的流量策略和故障切换排序 - 例如将所有欧洲流量定向到您的欧盟数据中心pool,然后故障切换到北美pool,而北美则相反。当您希望访问者访问距其最近的源站(并因此提高性能!)时,这非常有用。
 
再次单击Next继续执行最后一步。
 
13.png
 
最后一步是检查负载均衡配置,并确定是否需要进行任何更改。您可以在此处编辑任何配置。如果您满意,则可以保存为草稿以保存工作但不使用 Load Balancer,或者保存并部署以立即开始负载均衡该主机名。
 
14.png
 
随即将显示在您的控制面板中并开始负载均衡流量。
 

15.png

您可以深入了解构成 Load Balancer 的pool和源站,以检查个别状态和/或禁用特定pool或源站(例如,用于计划维护)。
 
注意:禁用pool将对其所属的所有 Load Balancer 禁用它,因此在有多个 Load Balancer 时,请谨慎禁用pool。

16.png

在帐户中共享 Load Balancer

通过创建 CNAME 记录,例如可以在 DNS 应用中将 "www.example.com" CNAME "lb.moonbrookbowlsclub.com",还可以与帐户中的其他站点共享您的 Load Balancer。如果要与多个其他域共享相同的配置,这非常有用,并且每次都不必重新创建 Load Balancer。
 
lb-guide-dns-cname.png
 
您还可以为每个域配置单独的 Load Balancer,并重复使用相同的Monitor和pool。如果要更改不同域的故障切换顺序,此功能可能非常有用 - 例如“example.co.uk”可能具有与“example.com”或“example.com.au”不同的故障切换优先级。 
 

滚动:

下一步是什么?
  • 添加更多源站:您可以将多个源站添加到同一个pool中,我们将在该pool的所有正常源站中均匀分配负载。
  • 配置 Geo Routing:如果我们在全球范围内或在美国的不同海岸拥有多台服务器,则可以使用 Geo Routing 将用户导向至 Cloudflare 中最近的服务器以提高性能。

您还可以参阅负载均衡知识库文章以获取更多提示和配置建议。

 

Not finding what you need?

95% of questions can be answered using the search tool. This is the quickest way to get a response.

由 Zendesk 提供技术支持