1.要解决的问题
你可以使用多种方法提高不同层面上的可用性。例如,你可以在磁盘层设置RAID,或是在网络层提供备用线路。
这同样也适用于服务器,你可以使用多个物理服务器进行冗余。然而,要知道仅仅是简单地增加服务器数量不一定能建立冗余的结构。因为提供冗余所需的材料,如物理服务器和负载均衡器,这涉及相当大的费用,有时出于成本考虑,最好的方式就是不管它。
2.云模式的说明
利用AWS云提供多个并行的虚拟服务器,并使用负载均衡器来适当地分配负荷。这就是所谓的“多服务器”。虽然在本地系统也能做到这些,但在AWS云中你可以更容易地构建大量这种环境。
在过去负载均衡器本身就是一个昂贵的设备,但使用AWS云,你就不需要承担购置和维护负载均衡器的费用了。AWS云中,负载均衡器也是以按使用付费为基础。为了实现冗余,你可以将配置从单个高性能服务器转换为多个处理能力稍低的服务器。
3.实施
使用AWS负载均衡器服务“ELB”。一旦ELB从EC2实例获取了处理请求,ELB就会将处理任务适当地分配给其他绑定的实例。 你可以使用ELB健康检查功能(一个确认EC2实例是否正常运行的功能)。所以,即使一个EC2实例失效,你也可以使用剩下的EC2实例来确保持续性地处理。
(步骤)
- 创建EC2实例并设置操作系统等。
- 应用印章模式来创建多个EC2实例。
- 启动ELB并绑定多个EC2实例。
- 设置一些选项以便使用健康检查功能来检查绑定的EC2实例。
4.配置
5.好处
即使有一个EC2实例失效,整个系统还是能持续运转。
ELB和自动扩展的结合可以保证运行一个固定数量的虚拟服务器(EC2实例),即使出现实例失效。例如,如果设置为最少保证有三个虚拟服务器运行,那么一旦有一个虚拟服务器失效,系统将会自动增加另外一个虚拟服务器来保证有三个服务器正常运行。在这种情况下,你必须预先指定AMI,然后设定将以此AMI来创建新的EC2实例。
6.注意事项
由于多个EC2实例被使用在ELB之上,所以费用将比使用单个EC2要高。
有数据必须被中间件或应用程序共享时,要谨慎使用此模式。例如,如果必须在多个EC2实例中共享会话信息时,你就需要使用一个会话数据库或StickeySession来共享会话。
是使用一个N+1配置(保证一个备用虚拟服务器总是可用的)。例如,如果需要三个虚拟服务器来达到所需的处理能力, 那么就配置四个服务器来增加一个备用服务器以处理任一虚拟服务器宕机的情况。
注意,当你要提供数据库的冗余,你可能要解决数据同步的问题。
多服务器模式通过提供冗余架构来增加系统的可用性,但是还有另外一个技术,就是你可以使用浮动IP模式来快速恢复失效。
7.Q&A
Q1:这个多服务器模式使用到了哪些其他模式?
A1:在创建多个EC2实例时,应用到了之前的Stamp模式,以快速创建多个环境相同的或特定的EC2实例。
Q2:当需要在多个服务器之间共享数据,如会话信息时,该如何进行模式选择?
A2:参见StateSharing模式。
Q3:如果要提供数据库层面的冗余,该如何解决数据同步的问题?
A3:参见数据库复制模式。
Q4:如何使用浮动IP模式来增加系统的可用性或快速恢复失效?
Q3:参见浮动IP模式。