CloudFlare能否自动切换到另一个后端服务器?

19

我正在寻找一种快速切换到不同数据中心的简单方法,CloudFlare在这方面提供了任何特殊的内容(例如健康检查)还是只像标准DNS服务?

3个回答

16
更新:CloudFlare启动了Traffic Manager功能的封闭测试,该功能允许进行故障转移:

https://www.cloudflare.com/traffic-manager/


AWS故障转移:
以下解决方案似乎在你将后端系统托管在AWS上时运作良好:
  1. 我使用AWS Route 53区设置了一个单独的域名(例如failover-example.com)。Route 53允许您对后端服务器(例如负载均衡器)进行健康检查,并进行DNS故障转移。 AWS将从DNS记录列表中删除不健康的后端系统。
  2. 在cloudflare中,我为example.com记录设置了一个CNAME指向failover-example.com,并在example.com上启用了cloudflare代理。
结果是浏览器将example.com的IP地址解析为cloudflare IP地址。 Cloudflare查询AWS DNS服务器以查找failover-example.com。 Cloudflare从解析的IP地址获取内容并将内容返回给浏览器。
在我的测试中,切换到其他后端系统大约需要20秒。
需要单独的域名,因为当CNAME是example.com的子域名时,cloudflare不会通过代理路由流量。
我试图将故障转移可视化。理论上,故障转移适用于任何支持DNS故障转移的服务,而不仅仅是Route53: enter image description here 浏览器始终连接CloudFlare,因此后端系统的DNS故障转移永远不会影响用户的浏览器。

浏览器内部DNS记录的缓存如何与此建议相结合?即使所有DNS记录的TTL非常低,像Chrome这样的浏览器也可能需要15分钟或更长时间才能进行故障转移。(参考:http://www.joshwright.com/tips/intro-to-automated-failovers) - Andrew Bucklin
1
我已经更新了帖子,并添加了可视化内容,以使其更加清晰。通常情况下,DNS故障转移可能会有问题。但是在这种情况下,它可以正常工作,因为CloudFlare似乎尊重TTL。 - Thomas Hunziker
1
我认为由于您的域名的IP从CloudFlare IP不会改变,因此您不必担心浏览器缓存DNS。我现在将实施此操作;同时使用AWS API编写一些额外的脚本来根据集群中服务器的负载调整每个记录的权重。感谢您指引我正确的方向! - Andrew Bucklin
1
最近有一些更新,允许根据CloudWatch指标操纵Route 53条目:https://aws.amazon.com/about-aws/whats-new/2015/09/amazon-route-53-announces-calculated-and-latency-measurement-health-checks/ 最终您不需要任何自定义脚本。这取决于您的架构。 - Thomas Hunziker
1
@ThomasHunziker 如果 Route 53 在此架构中出现故障会发生什么?CF 仍然从后端系统 A 获取内容吗?它不需要 A/AAAA 记录吗? - Cesc
显示剩余3条评论

14

目前我们没有自动容错恢复机制(这是我们正在研究的内容)。当然,我们可以支持您区域文件中的额外DNS条目,但在这种情况下,您当前需要手动进行更改。


9
Cloudflare已经研究了将近6个月,但仍无法实现自动故障转移。加油,你不就是nginx吗? - Phương Nguyễn
我们的产品管道中有很多其他事情可能比这更重要。此外,我认为我们还没有确定哪些计划将具备该功能。在此期间,您仍然可以编写某种脚本来通过API处理此问题。 - damoncloudflare
1
@damoncloudflare 在最近的一次宕机后,我认为自动故障转移应该成为Cloudflare的头等大事。http://www.cloudflarestatus.com/incidents/m8hf8q8vs81d - Kelsey Hannan
@Kelseydh 在这种情况下,您的站点如何自动故障转移会有所帮助? 他们的大多数客户可能不需要或使用全球DNS故障转移,或者已经有本地负载平衡。 - Mani Gandham
@ManiGandham 我对DNS故障转移的理解有限...但我知道的是,当我们使用Cloudflare作为DNS时,我的应用程序宕机了数个小时,可能是因为他们没有自动故障转移来从另一个服务器解析DNS。尽管你可能认为,我不认为大多数Web应用程序实际上都具有自动故障转移保护 - 所有客户端始终希望保持正常运行时间,无论他们是否需要。许多开发人员只是将应用程序放在Heroku上,设置Cloudflare以提高速度,并假设他们已经得到了保障。Cloudflare的业务与确保他们的业务紧密相连... - Kelsey Hannan
你链接的那个事件并不是CloudFlare的错 - 而是另一个只提供DNS服务的DNS提供商的问题。如果DNS本身与CloudFlare不兼容(在我们与他们的历史中还没有发生过),那么您将不得不更改您的名称服务器 - 对于任何人来说,这都不是一个简单的故障转移设置。除了与DNS相关的问题外,您可以通过使用另一个第三方服务或仅使用CF的API通过健康检查切换记录来处理所需的服务器故障。 - Mani Gandham

14

我选择了基于blog.booru.org文章的DIY解决方案。通过CF API更新DNS只需要一分钟,您就可以恢复业务。 - Arie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接