如何使用Cloudflare在GCP和AWS之间负载均衡网站?
学习如何使用Cloudflare负载均衡器(LB)在AWS(Amazon Web Services)和GCP(Google Cloud Platform)之间分配流量。
大多数Web应用程序需要在同一数据中心的服务器/服务之间进行负载均衡。
然而,如果您正在运行全球范围内需要全天候运行时间的关键任务应用程序,那么您需要一个cloud load balancer。
不仅仅是uptime,还可能是许多其他因素。
例如:
- 主动-被动或主动-主动的数据中心要求
- 灾难恢复计划
- 利用多个数据中心从最近的位置服务请求
- 合规性
Cloudflare提供本地和全局负载平衡选项,有助于将流量路由到多个数据中心。
一些Cloudflare LB的特点是:
- 内置健康检查,因此您可以快速关闭故障服务器。
- 健康检查失败时触发故障转移
- 通过将流量路由到最近的服务器来减少延迟
- DNS级别和支持HTTP(S),TCP和UDP
- 会话粘性以确保请求发送到相同的服务器
您可以通过Cloudflare仪表板或API配置整个内容。
从技术上讲,以下说明适用于在Azure,DigitalOcean,阿里巴巴等任何云平台上进行负载平衡。但我选择了GCP和AWS进行演示。
AWS和GCP设置详细信息
我在GCP和AWS平台上提供了一个服务器,具体如下。
- Installed Nginx
- 添加了包含自定义文本的
index.html
以显示页面是从相应的服务器提供的 - 启动了Nginx,可以从两个服务器访问该页面
让我们转移到Cloudflare来实施负载平衡。
激活Cloudflare负载均衡器
我有一个可用的域名(bloggerflare.com),我将在此实验中使用它。
注意:Cloudflare的负载平衡器不是免费的,pricing起价为每月5美元。
我假设您已经在Cloudflare上拥有一个帐户;如果没有,请按照我在中解释的方式创建并添加域名。
- 登录Cloudflare并选择要启用负载平衡的域
- 转到流量选项卡并启用负载平衡
- 根据要求配置功能。我将进行最小配置。
如果您希望请求被重定向到最近的位置,则必须启用地理路由。
- 确认订阅并启用它。
正如您所看到的,您可以从每月5美元起使用两个源服务器和一分钟的健康检查间隔开始。
基础设施现在非常实惠。五年前,你能想象到每月只需5美元即可获得云负载平衡器吗?
这表明Cloudflare LB已激活并准备配置。
创建Cloudflare负载均衡器
确认订阅需要几秒钟的时间,并将您带回Traffic页面。
- 点击创建负载均衡器
- 输入要设置负载均衡的域。
- 展开会话亲和性并选择通过Cloudflare Cookie,如果您需要启用会话粘性
- 输入一个池名称,它是流量应重定向到的源(服务器)
- 接下来,您可以配置健康检查。
健康检查是必要的。当健康检查失败时,Cloudflare将停止向有故障的源发送流量。
- 如果您的源站侦听端口为80,则可以选择HTTP或https来使用443端口。
Cloudflare还允许您配置高级健康检查设置,例如:
- GET或HEAD方法
- 预期的HTTP status code
- 响应体中的内容验证
- 健康或不健康之前的尝试次数
- 标头名称验证
最后,保存配置并进行部署
- 负载均衡器将执行健康检查,并在几秒钟内,您将看到状态为健康。
太棒了,这就完成了Cloudflare负载均衡器已准备好接受来自世界的流量并将其转发到配置的源服务器。
测试负载均衡器
让我们进行基本测试以查看是否正常工作。
- 首先,尝试访问该域名。
太棒了!
负载均衡器将请求转发到Google Cloud VM并获得响应。我可以在Nginx中看到该请求。
162.158.167.174 - - [19/Dec/2017:10:25:41 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
- 让我关闭GCP上的Nginx并再次访问页面。
- 好了,页面已从AWS提供。
我可以看到负载均衡器将GCP池成员下线。
默认情况下,在Nginx访问日志中将显示Cloudflare IP,如果您需要恢复客户端IP,则可以check out this guide。
结论
实施Cloudflare负载均衡器非常简单,可以在15分钟内启动。如果您想要在多个数据中心或源服务器之间实现高可用性,请尝试并了解其工作原理。