1.要解决的问题
横向扩展架构是一项常见技术,但是在那些开始于小规模的系统中,其架构往往不会使用多个服务器来提供多服务器服务。
在这种情况下,采取措施来处理增加的负载可能非常耗时。
2.云模式的说明
这个模式让你在建立系统时无需考虑负荷分配,但却很容易实现系统的负载分配。现存服务器将被用作为主服务器,并依此准备一个机器映像用于增加新服务器。在机器映像中,会提前执行内容同步和数据库同步连接。这样使得你只需要创建机器映像就可以通过横向扩展来实现负载分配。
3.实施
使用负载均衡服务(ELB)和亚马逊机器映像(AMI)。
创建一个具有内容同步等这类机制的AMI用于克隆,并且设置为能够分配负荷。如果负载过大,则依据这个用于克隆的AMI来创建一台EC2实例。使EC2实例服从于ELB的负载分配,这样可以让你无需对现有系统进行重大改变就可以实现横向扩展。
(步骤)
- 开启ELB(对于只有一个EC2实例的结构),并将EC2置于它的管控之下。
- 依据目前正在运行的EC2实例创建一个用于克隆的EC2实例。
- 根据需要,定期使用rsync等这类功能,将用于克隆的EC2与主EC2进行文件同步。
- 根据负载(或者当预期会有一个高负载量),按克隆要求启动所需数量的EC2实例,并添加至ELB之下。
4.配置
5.好处
这让你无需修改现有系统就可以通过横向扩展来实现负载分配。
6.注意事项
- 主EC2实例将成为单一故障点(SPOF)。
- 如果一个数据库运行在主EC2实例上,不要将这个数据库运行在克隆EC2实例上,而是将主EC2实例作为数据库连接地址。
- 如果需要上传或修改文件,请使用主EC2实例。(例如通过使用Apache的mod_proxy进行代理,仅从URL合适的克隆虚拟服务器转到主虚拟服务器等。)
7.其他
参见NFS共享模式和NFS复制模式。