Scale EC2 & Geo-based load balancing

Scale EC2 & Geo-based load balancing

用AWS服务器的程序员常会遇到一个问题,国内用户访问速度慢,这个事儿的原因有很多的可能性,可以单独写一篇。

优化的方法也因具体情况可以有很多种,其中比较常见的一种是,把服务器搬到更靠近中国的区域,比如韩国首尔、日本东京、新加坡,如果也需要兼顾美国的用户,一个合理的解决办法就是美国和亚太各有服务器,根据用户的地理位置,把不同地区的访问请求分配到最近的服务器。AWS作为当前最牛逼的云服务,对这一点支持的很不错,至少配置起来非常方便,简单明了,至于效果怎么样就难说了,因为这需要具体问题具体分析,像前面说的,国内用户访问某网站速度慢,可能原因太多了。

首先假定已经有N台(N > 1)在美国的EC2服务器,选择其中1台新建一个image,其实就是一个虚拟机的镜像,在AWS有一个专门的名字叫AMI (Amazon Machine Image)

create ec2 image

在AWS每个region逻辑上和物理上都有很高的独立性,AMI默认上就有区域的限制,所以想在其他区域使用这个image就得先把image拷贝过去。

copy ami to different region

copy ami to different region

拷贝到比如Asia Pacific (Seoul)区域之后,就可以在该region用这个image开启新的EC2服务器了。

launch new instance from ami

到这一步,已经有了分别在US和Seoul的服务器,现在来设置根据用户地理位置分配请求的规则,这可以在AWS的Route 53服务中实现。

假定已经有了hosted zone(没有的话先设置),选中需要添加这个分配规则的record set,然后就可以像下图中这样选择Geolocation为Routing Policy,选中一个区域。设置好之后,只要是AWS认为某个request的IP来自于这个区域,这个请求就会被分配到Value中指定的服务器上。

create geo-based routing rule

(本文系原创,欢迎转载,请注明出处)




Jie

Written by


全职码农,兼职吃货

Updated