思考:小云如何能够让他的网站平台持续稳定的运行,确保用户随时都能够的访问?
单点故障:如果小云的业务只运行在一台服务器上,这就存在极大的风险,因为随着时间的推移,物理硬件的损坏是肯定的,而且除了硬件可能会损坏,还会有管理员的运维失误、软件故障、受到攻击等情况发生,一旦这些情况发生,由于业务只运行在一台服务器上,这就会造成业务中断,甚至数据丢失。
小云如果希望他的网站能够 7x24 小时不间断的运行并对外提供正常的服务,就需要在其网站架构的设计中加入高可用设计,尽可能的避免单点故障。
高可用架构是指计算机系统能够保证无故障持续运行的概率,通常采用百分比的方式来表示系统的高可用性等级,我们在生活中采用高可用概率=可用时间/总时间*100%来计算实现的高可用性等级,要想实现较高的高可用性等级,需要引入系统冗余的理念。
系统冗余: 既然将业务只运行在一台服务器上存在单点故障,那一个很简单的思路就是用两台、三台等多台同时提供服务,即使一台服务器(服务器A)出现故障,还可以通过其它服务器(服务器B)响应用户的访问请求。
为了避免单点故障,可以在架构中多使用冗余方案,但是这需要分别投入大量的服务器、多个机房、大量的技术投入,小云如果希望在本地机房实现各种的冗余方案,整体成本和技术难度都很大,比如:
- 小云如何第一时间知道服务器A出现了故障?通过编写健康检查脚本或软件实时进行检测。一旦脚本或软件运行出错,小云将不能实时了解服务器A的运行状态。
- 服务器A出现故障后,小云如何能够将用户访问的流量切换至服务器B?一般来说小云会让服务器A和服务器B共用一个IP,平时这个IP会挂载在服务器A上,一但服务器A检测出现问题,需要通过脚本或软件自动的将这个IP切换至服务器B上。
- 小云如何能够让服务器A、服务器B甚至更多服务器共同响应用户访问的请求?一般来说小云需要安装配置专门的负载均衡设备,这个设备可以关联多台服务器,并可以接受用户请求,根据用户的请求,自动将用户流量分发至关联的服务器中进行处理。一旦负载均衡软件运行出错,小云的网站将无法访问。
如果小云使用阿里云来实现冗余方案,整体成本和技术难度都比较小,阿里云在全球各地做了大量的投资建设机房,并投入了很多各方面的专家做了技术投入,使得小云可以在阿里云控制台中快速搭建系统容灾&系统冗余方案。如:
- 小云可以通过快照和镜像功能来完成云服务器上数据的备份,一旦服务器数据出现故障可以通过备份快速恢复数据,降低网站的损失;
- 小云可以通过自定义镜像功能快速再次部署出更多的业务服务器,使用多个相同的网站服务器同时对外提供服务,只要还有一个能够正常运行,也可以为客户提供服务。
- 小云只需要在这些服务器前面加入一个阿里云负载均衡服务(SLB),让用户先访问到负载均衡,然后由负载均衡再分发流量到具体的服务器上,SLB会通过健康检查功能发现故障ECS,并不再分配用户请求到故障ECS,同样的,一旦SLB发现故障ECS已经恢复正常,将再次分配用户请求,这些都是自动完成的,无需小云操作。而且在这个过程中,小云只需要购买资源和简单的规则配置,无需维护SLB的服务器资源和其运行安全,这些都由阿里云的专业工程师负责。
- 小云还可以购买阿里云弹性公网IP,并将SLB绑定到这个弹性公网IP上。这样做的好处是,小云可以拥有一个固定的对外服务的公网IP,不管SLB和ECS等资源如何变化,均可以通过这个IP对外提供服务,确保网站的高可用。
练习实验:高可用应用架构
https://developer.aliyun.com/adc/scenario/exp/fcdecc97027443efae06789944a11875