基于AWS云服务的容错和高可用性应用架构
AWS提供了在云端构建可靠的,容错的,高可用系统的基础设施和服务。需要开发者的特殊关注,这些特性已经设计在AWS服务中了,但需要明确和准确的使用。
Amazon EC2 提供了构建目标基础设施的模块,它们本身不是容错的,硬盘、电源、甚至机架都可能挂掉,本文中组合特性的使用能够实现容错性和高可用性。
1. 负载均衡是增加系统可用性的有效方法。如果负载均衡器后的实例失效,可以被无缝地替换掉,而不影响其他实例地运行。弹性负载均衡可以对一个地域的多个可用区上的实例进行负载均衡。
2. 可用区(AZS)是经过特别设计,可以从其他 AZs故障隔离的不同地理位置。通过将Amazon EC2 实例放到 多个 AZs, 能够预防应用的单点故障。无论在相同的物理区域内还是在不同的物理区域之间,在多个AZ上运行独立的应用都是非常重要的。如果一个可用区失效了,在其他可用区上的应用可以继续运行。当设计类似系统的时候,需要对可用区依赖有较好的理解。
3. Elastic IP 将共有IP地址在一个物理区域内的多个实例间做可编程的映射。他们与 AWS 的账号相关联,而与一个特殊的实例或者一个实例的生命周期无关。Elastic IP 可以被迅速地重新映射地址到另一个正在运行的实例,或一个刚启动一个替换实例,以实现主机或可用区故障切换。预留实例可以帮助保证这种能力可在另一个区域实现。
如果没有适当的备份,复制或重新创建数据的能力,有价值的数据就不应该只存储在一个存储实例上。EBS 提供的off-instance持续存储卷是比on-instance存储更持久的一种方式。 EBS卷在一个可用性区域内自动复制。为了进一步增加耐用性,可以在S3中创建及时快照,这是可以被复制到多个可用区的。EBS卷绑定到特定AZ,而快照是绑到特定物理地区。使用快照,在可以在同一物理区的任何可用区中创建新的. 这是处理磁盘故障或其他主机级别的问题,以及AZ相关问题的有效途径。快照是增量的,所以最好保留最近的多个快照。