我有一个提供静态html页面的HTTP web服务器。
在页面中,它加载图像&css来自固定域,如:
<img src="http://assets.mysite.com/1.jpg" />
实际上,有几个不同的域为相同的文件提供服务。例如
- assets-us.mysite.com
- assets-eu.mysite.com
- assets-sia.mysite.com
我希望负载平衡根据访问者的地理位置将域"assets.mysite.com"替换为其他域。
例如,当我从欧洲访问同一个url时,我得到的html是:
<img src="http://assets-eu.mysite.com/1.jpg" />
当我从日本访问同一个url时,我得到的html是
<img src="http://assets-asia.mysite.com/1.jpg" />
我更喜欢NGINX(或G-WAN)。是否可以只通过一些配置或脚本设置来实现负载平衡?这次更换对性能有何影响?
如果你的目标是尽可能好地执行,那么你应该在DNS请求时进行地理ip负载平衡-用户在查询Web服务器之前会被重定向。CDN是这样工作的。
但是,如果你不能做到这一点,并且想从Web服务器管理负载平衡,那么最好的扩展方法是使用AS(ISP使用的网络)查找表来查找用户所在的区域。
与搜索IP地址相反,这样做将极大地减少数据库大小,从而加快操作速度。IP数据库提供了更多细节,但规模要大得多。
对于G-WAN,如果您想为不同的MIME类型实现不同的逻辑,您可以编写connection handler
或content-type handler
(后者也可能简化开发,因为您不必解析请求来查找资源类型)。
如果数据库存储在本地(最好是RAM中),G-WAN C/C++/C#脚本如果实现得当,不会显著增加延迟。