1. 企业背景
在“互联网+”时代,创新层出不穷,许多企业伴随着业务的良好运营,数据量和访问量都出现快速增长。然而,在传统的信息化建设中,业务系统通常采用单机部署的模式,往往不能跟上业务的发展,系统会出现各种故障,如下:
- 服务能力滞后:客户端请求急剧增加,服务端配置较低,导致应用加载缓慢,严重影响系统的对外服务能力;
- 系统稳定性差:用户访问量较大,服务配置升级、扩容较难,容易出现服务端负载过大,导致业务系统出现宕机,影响对外服务的连续性。
其实,业务系统的高性能、连续性和高可用一直都是企业的生命线,我们很难想象系统由于访问过高导致突然宕机会出现什么后果,如游戏、支付等。因此,对于高并发、大流量的访问,我们需要实时做好充分的应对方案。
2.阿里云集群解决方案
2.1 负载均衡简介
生活中,假如我们的手机使用的是联通号码,如果出现通讯相关的疑问,如查询话费余额、安装宽带,我们就会呼叫10010,接着会收到后台一位客服工作人员的对应服务,如果此时有人也呼叫10010,则联通同样会有对应的客服提供服务。其外,如果是浙江号码,对应的是浙江区域的客服,如果是辽宁号码,对应的则是辽宁区域的客服,换而言之,我们呼叫的是10010,而10010则可以通过设定的规则和策略将用户转发给后台不同的客服来提供服务,而不仅仅是一个人提供服务,从而提高对用户服务的满意。
与拨打10010类似,企业在信息化建设中也需要考虑如何保障系统运行的高效性、稳定性和可靠性。在传统中,企业往往采用单台服务器部署应用,一旦访问过多,单台服务器负载过高,则会导致服务器宕机,系统出现瘫痪。于是,我们开始考虑能否用多台服务器对外提供服务,这样就可以提高服务端的服务能力。但是,出现一个问题:用户访问只需要一个流量入口,如果后端有多台服务器,那么,如何将流量分发至后端多台服务器呢?
迎合市场需求,负载均衡应运而生,作为客户端和服务端的中间层,它作为用户的所有访问请求入口,然后基于设定的转发规则和转发策略,将访问流量分发至后端服务器进行计算和分析,最后将结果返回至客户。如此以来,负载均衡不仅可以解决服务器单节点宕机导致服务不可用的问题,而且可以将多台服务器并行工作,从而提供对外的服务能力,应对高并发、大流量的请求访问。
或许,有些人不是很理解,为什么选择多台服务器对外提供服务,而不是选择升级单台服务器的配置。其实,这是“1+1>2”的过程。如下图所示,2台2core 4G的服务器和单台4core 8G的服务器在性能上几乎没有差别,然而,如果4core 8G的服务器出现故障,业务系统是否正常对外提供服务?如果由于业务激增,访问量急剧增加,那么4core 8G的服务器是否可以快速升级而不影响业务系统的正常对外提供服务?答案是,显然不能。基于负载均衡的业务集群化部署,一方面可以通过多台服务器提供服务,消除单点故障,另外一方面可以通过快速扩容后台服务器个数,提高对外的访问服务能力。
在传统的解决方案中,负载均衡的功能可以由硬件设备实现,如F5,但是价格昂贵,可能一台就几十万,同时F5也有自己的性能瓶颈,一旦达到性能上限后,需要购买更多的设备,且硬件扩展性受到了限制。
2.2 阿里云负载均衡服务
为了解决企业对负载均衡高性能、低成本的需求,阿里云推出负载均衡服务(Server Load Balancer,简称SLB),SLB是对多台云服务器进行流量分发的负载均衡服务,将后端多台服务器做一个池化,共同对外提供服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性,并且SLB还可以跨可用区部署。
阿里云负载均衡SLB由三部分组成,分别是负载均衡实例、监听和后端服务器。
- 负载均衡实例:一个负载均衡实例是一个运行的负载均衡服务,用来接收流量并将其分配给后端服务器;
- 监听:监听用来检查客户端请求并将请求转发给后端服务器,监听也会对后端服务器进行健康检查;
- 后端服务器:一组接收前端请求的ECS实例,可以单独添加ECS实例到服务器池,也可以通过虚拟服务器组或主备服务器组来批量添加和管理;
阿里云负载均衡采用集群部署,通过控制系统可进行统一资源管控,支持四层(TCP和UDP协议)和七层(HTTP和HTTPS协议)。其中,四层基于“LVS+keepalived”的实现,不仅可以保障系统的冗余性,提高整体可用性,而且LVS自生攻击防御来提高整体安全性;七层基于Tengine实现,在nginx的基础上做了优化,增加很多高级功能和特性。
相较于传统硬件负载均衡和其他软件负载均衡,阿里云负载均衡有着无可比拟的优势,包括如下:
-
安全
- SLB基于LVS在四层做了全面优化,能够提供最高5G的DDOS防护能力;
- SLB基于ngix在七层做了优化,具备多维度的CC防护能力;
-
高可用
- SLB采用模块全集群部署模式,无单点故障,支持同城容灾和异地容灾,可用性高达99.95%;
- 基于SLB的应用集群部署,可以根据业务发展进行动态扩容,在流量波动较大情况下不中断对外服务;
-
低成本
-
SLB提供预付费和按量付费两种计费模式,根据业务场景购买,进一步降低成本;
- 与传统硬件负载均衡相比,该部分成本能够节约60%以上;
- 与传统硬件负载均衡相比,该部分成本能够节约60%以上;
-
为了满足业务多样的需求,阿里- 云负载均衡服务SLB提供了丰富的功能,具体如下:
-
多协议支持
- 支持TCP/UDP协议和HTTP/HTTPS协议;
- 针对HTTPS协议提供集中化式的证书管理,满足用户安全、可靠的传输要求;
-
多层次容灾机制
- 提供健康检查机制,系统定时检测后端服务器运行状况,一旦发现其异常,则不会向其转发流量,保证业务可用性;
- SLB采用多可用区部署,一旦主可用区出现故障,备可用区自动切换;
- SLB集群部署,各机器之间会话同步,支持热升级;
-
灵活的调度
- 支持轮询、加权轮询、最小连接数和hash调度算法,用户可基于实际需求进行选择;
- 支持根据不同的URL和域名进行转发,提供应用系统的灵活性;
- 超性能保障
针对负载均衡实例,首家提出性能保障的云计算厂商,能够满足高性能需求的大客户,从此性能不再是瓶颈;
3.SLB应用场景
基于阿里云负载均衡服务的功能特性,其应用场景是非常丰富,主要概括为五大场景需求:高并发访问量的业务、扩展应用程序、消除单点故障(高可用性)、同城容灾和异地容灾。其中,高并发访问量的业务和扩展应用程序都是从业务层考虑,当业务访问量增加时,如何通过增加后端服务器的个数来提供对外服务能力,消除单点故障(高可用性)、同城容灾和异地容灾则是从应用容灾为出发点,实时保障业务的连续性、稳定性。
某互联网金融异地容灾案例分析
随着《网络安全法》的颁布,国家对网络安全极为重视,监管力度逐步加强。互联网金融作为重要的平台,网络安全尤其显得重要,一旦出现业务的中断则会给客户企业巨大的损失。金融平台经常发行某些活动,访问量会急剧增加,很容易将业务系统压垮,导致业务出现中断。为了解决业务连续性,该金融平台提出异地容灾的需求,我们给出阿里云异地容灾解决方案,如图所示。
业务系统采用异地三中心的部署架构,青岛和北京分别基于SLB部署一套业务系统,数据通过DTS和其他数据传输方式进行数据同步,其中,青岛采用全部署的方式,承载主要的业务访问,北京最小化部署一套业务系统,保证青岛可用区出现故障时该业务能够对外提供服务即可。用户访问经过DNS智能解析,流量导入青岛业务系统,如果青岛业务系统出现故障,DNS监控系统能够实时感知,秒级切换至北京的业务系统,此时再扩容北京系统ECS个数,满足访问需求,保证业务访问的稳定性。