更新:请参阅我在下面提供的答案,了解我最终在AWS上设置的解决方案.
我目前正在尝试使用有关如何在Digital Ocean上为我的应用服务器最佳实现全局负载平衡层的方法,还有一些我尚未整理的部分.
目标
通过将所有连接路由到SFO,NYC,LON和最终新加坡最近的"服务器集群",为我的用户提供高可用性服务.
另外,我最终希望通过编写一个可以监视,扩展和修复系统上任何服务器的守护程序来自动维护它.或者我将结合各种服务来实现相同的自动化目标.首先,我需要弄清楚如何手动完成.
堆栈
全球域名细分
一旦我完成了所有工作,我的域名将如下所示:
**GLOBAL**
global-balancing-1.myapp.com
global-balancing-2.myapp.com
global-balancing-3.myapp.com
**NYC**
nyc-load-balancing-1.myapp.com
nyc-load-balancing-2.myapp.com
nyc-load-balancing-3.myapp.com
nyc-app-1.myapp.com
nyc-app-2.myapp.com
nyc-app-3.myapp.com
nyc-api-1.myapp.com
nyc-api-2.myapp.com
nyc-api-3.myapp.com
**SFO**
sfo-load-balancing-1.myapp.com
sfo-load-balancing-2.myapp.com
sfo-load-balancing-3.myapp.com
sfo-app-1.myapp.com
sfo-app-2.myapp.com
sfo-app-3.myapp.com
sfo-api-1.myapp.com
sfo-api-2.myapp.com
sfo-api-3.myapp.com
**LON**
lon-load-balancing-1.myapp.com
lon-load-balancing-2.myapp.com
lon-load-balancing-3.myapp.com
lon-app-1.myapp.com
lon-app-2.myapp.com
lon-app-3.myapp.com
lon-api-1.myapp.com
lon-api-2.myapp.com
lon-api-3.myapp.com
Run Code Online (Sandbox Code Playgroud)
然后,如果有任何给定层上的任何应变,在任何给定的区域,我就可以旋转了一个新的液滴助阵:nyc-app-4.myapp.com,lon-load-balancing-5.myapp.com,等...
现行工作方法
(最少)三个global-balancing服务器接收所有流量.这些服务器是$geoip_city_continent_code平衡的,如本文(坦率地说令人困惑)文章所示:如何配置DNS循环负载平衡.
使用Nginx GeoIP模块和
MaxMind GeoIP数据
,任何给定请求的来源都将确定为
global-balancing.
所述load-balancing然后层将请求路由到nyc-load-balancing-1所述服务器上 …