阿里云(www.aliyun.com)创建于2009年,是全球领先的云计算及人工智能科技公司,为200多个国家和地区的企业、开发者和政府机构提供服务。截至2017年3月,阿里云付费云计算客户达87.4万。阿里云致力于以在线公共服务的方式,提供安全、可靠的计算和数据解决能力,让计算和人工智能成为普惠科技。
但是对于很多刚刚接触阿里云的客户来说,经常会被这庞大的产品系统、众多的服务弄得眼花缭乱,感觉无法下手,不知道该怎样选择适合自己的产品服务。针对这个问题,我用一系列说明文章,分门别类的对阿里云的各种产品服务进行详情,帮助您可以快速、安全、高效的使用阿里的各项云服务。
第六篇 阿里云负载均衡SLB
什么是负载均衡?
负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后台多台云服务器(Elastic Compute Service,简称 ECS)的流量分发控制服务。
负载均衡服务通过设置虚拟服务地址,将位于同一地域的多台ECS实例虚拟成一个高性能、高可用的应用服务池;再根据应用指定的方式,将来自用户端的网络请求分发到云服务器池中。负载均衡服务是ECS面向多机方案的一个配套服务,需要同ECS结合使用。
负载均衡服务会检查云服务器池中ECS实例的健康状态,自动隔离异常状态的ECS实例,从而处理了单台ECS实例的单点问题,提高了应用的整体服务能力。在标准的负载均衡功能之外,负载均衡服务还具有TCP与HTTP抗DDoS攻击的特性,加强了应用服务的防护能力。
组成部分
负载均衡服务由负载均衡实例、监听和后台服务器三个部分组成。如下图所示,来自用户端的请求经过负载均衡实例后,监听会将请求根据配置的监听规则分发给后台增加的云服务器ECS实例解决。
负载均衡实例 (Server Load Balancer Instance)
假如您想使用负载均衡服务,必需先创立一个负载均衡实例。一个负载均衡实例可以增加多个监听和后台服务器。
监听 (Listener)
在使用负载均衡服务前,您必需为负载均衡实例增加一个监听,指定监听规则和转发策略,并配置健康检查。
针对不同的需求,您可以单独配置四层(TCP/UDP)或者七层(HTTP/HTTPS)监听。
后台服务器(Backend Server)
一组接收前台请求的ECS实例。您可以单独增加ECS实例到服务器池,也可以通过虚拟服务器组或者主备服务器组来批量增加和管理。
默认后台服务器是在实例维度上维护的,即负载均衡实例下的所有监听都只能够将请求转发到相同ECS实例的相同端口上。虚拟服务器组功能实现了监听维度的转发。您可以针对不同的监听创立不同的虚拟服务器组,即负载均衡实例中的不同监听可以将请求转发到不同端口的后台服务器上。
此外,七层负载均衡服务支持域名、URL转发策略,可以将来自不同域名或者者URL的请求转发给不同的后台服务器解决。
阿里云负载均衡服务提供以下功能:
协议支持
当前提供四层(TCP协议和UDP协议)和七层(HTTP和HTTPS协议)的负载均衡服务。
健康检查
支持对后台ECS进行健康检查。负载均衡服务会自动屏蔽异常状态的ECS,待该ECS恢复正常后自动解除屏蔽。
会话保持
提供会话保持功能。在会话的生命周期内,可以将同一用户端的会话请求转发到同一台后台ECS上。
调度算法
支持轮询、加权轮询(WRR)、加权最小连接数(WLC)三种调度算法。
轮询:按照访问次数依次将外部请求依序分发到后台ECS上。
加权轮询:客户可以对每台后台服务器设置权重值。权重值越高的服务器,被轮询到的次数(概率)也越高。
加权最小连接数:除了根据对每台后台服务器设定的权重值来进行轮询,同时还考虑后台服务器的实际负载(即连接数)。当权重值相同时,当前连接数越小的后台服务器被轮询到的次数(概率)也越高。
域名URL转发
针对七层协议(HTTP协议和HTTPS协议),支持按设定的访问域名和URL将请求转发到不同的虚拟服务器组。
多可用区
支持在指定可用区创立负载均衡实例。在多可用区部署的地域还支持主备可用区,当主可用区出现故障时,负载均衡可自动切换到备可用区上提供服务。
访问控制
通过增加负载均衡监听的访问白名单,仅允许特定IP访问负载均衡服务。
安全防护
结合云盾,可提供5G以下的防DDoS攻击能力。
证书管理
针对HTTPS协议,提供统一的证书管理服务。证书无需上传到后台ECS,解密解决在负载均衡上进行,降低后台ECS的CPU开销。
带宽控制
支持根据监听设置其对应服务所能达到的带宽峰值。
实例类型
提供公网和私网类型的负载均衡服务。您可以根据业务场景来选择配置对外公开或者对内私有的负载均衡服务,系统会根据您的选择分配公网或者私网服务地址。
公网类型的负载均衡默认使用经典网络;私网类型的负载均衡服务可以选择使用经典网络或者专有网络。
监控
提供丰富的监控数据,实时理解负载均衡运行状态。
管理方式
提供控制台、API、SDK多种管理方式。
高可用
采用全冗余设计,无单点,支持同城容灾。搭配DNS可实现跨地域容灾,可用性高达99.95%。
根据应用负载进行弹性扩容,在流量波动情况下不中断对外服务。
低成本
与传统硬件负载均衡系统高投入相比,成本可下降60%。私网类型实例免费使用,无需一次性采购昂贵的负载均衡设施,无需运维投入。
安全
阿里云对开源四层负载均衡LVS的管理软件Keepalived进行了全面优化,使得基于LVS的四层负载均衡具有接近于实时防御的能力。结合云盾,可提供5G以下的防DDOS攻击能力。
采用Tengine作为负载均衡基础板块的七层负载均衡具有多维度的CC攻击防御能力。
负载均衡采用集群部署,可实现会话同步,以消除服务器单点故障,提升冗余,保证服务的稳固性。阿里云当前提供四层(TCP协议和UDP协议)和七层(HTTP和HTTPS协议)的负载均衡服务。
四层采用开源软件LVS(Linux Virtual Server)+ keepalived的方式实现负载均衡,并根据云计算需求对其进行了个性化定制。
七层采用Tengine实现负载均衡。Tengine是由淘宝网发起的Web服务器项目,它在Nginx的基础上,针对有大访问量的网站需求,增加了很多高级功能和特性。
如下图所示,各个地域的四层负载均衡实际上是由多台LVS机器部署成一个LVS集群来运行的。采用集群部署模式极大地保证了异常情况下负载均衡服务的可用性、稳固性与可扩展性。
LVS集群内的每台LVS都会进行会话,通过组播报文同步到该集群内的其它LVS机器上,从而实现LVS集群内各台机器间的会话同步。如下图所示,当用户端向服务端传输三个数据包后,在LVS1上建立的会话A开始同步到其它LVS机器上。图中实线表示现有的连接,图中虚线表示当LVS1出现故障或者进行维护时,这部分流量会走到一台可以正常运行的机器LVS2上。因此负载均衡集群支持热更新,并且在机器故障和集群维护时最大程度对客户透明,不影响客户业务。
注意:对于连接未建立(三次握手未完成),或者者已建立连接但未触发会话同步机制,热更新不保证连接不中断,需要依靠用户端重新发起连接。
场景一:应用于高访问量的业务
假如您的应用访问量很高,您可以通过配置监听规则将流量分发到不同的ECS实例上。此外,您可以使用会话保持功能将同一用户端的请求转发到同一台后台ECS,提高访问效率。
场景二:横向扩张系统
您可以根据业务发展的需要,通过随时增加和移除ECS实例来扩展应用系统的服务能力,适用于各种Web服务器和App服务器。
场景三:消除单点故障
您可以在负载均衡实例下增加多台ECS实例。当其中一部分ECS实例发生故障后,负载均衡会自动屏蔽故障的ECS实例,将请求分发给正常运行的ECS实例,保证应用系统仍能正常工作。
场景四:同城容灾 (多可用区容灾)
为了提供更加稳固可靠的负载均衡服务,阿里云负载均衡已在各地域部署了多可用区以实现同地域容灾。当主可用区出现机房故障或者不可用时,负载均衡依然有能力在非常短的时间内(大约30s中断)切换到另外一个备可用区恢复服务能力;当主可用区恢复时,负载均衡同样会自动切换到主可用区提供服务。
使用负载均衡时,您可以将负载均衡实例部署在支持多可用区的地域以实现同城容灾。此外,建议您结合自身的应用需要,综合考虑后台服务器的部署。假如您的每个可用区均至少增加了一台ECS实例,那么此种部署模式下的负载均衡服务的效率是最高的。
如下图所示,在负载均衡实例下绑定不同可用区的ECS实例。正常情况下,客户访问流量将转发至主可用区内的ECS实例;当可用区A发生故障时,客户访问流量将转发至备可用区内的ECS实例。此种部署既可以避免由于单个可用区的故障而导致对外服务的不可用,也可以通过不同产品间可用区的选择来降低推迟。
假如您采取如下图所示的部署方案,即在负载均衡实例的主可用区下绑定多台ECS实例,而在备可用区没有任何ECS实例。当主可用区发生故障时会造成业务中断,由于备可用区没有ECS实例来接收请求。这样的部署方式很显著是以牺牲高可用性为代价来获取低延时。
场景五:跨地域容灾
您可以在不同地域下部署负载均衡实例,并分别挂载相应地域内不同可用区的ECS。上层利用云解析做智能DNS,将域名解析到不同地域的负载均衡实例服务地址下,可实现全局负载均衡。当某个地域出现不可用时,暂停对应解析就可实现所有客户访问不受影响。配置介绍参考结合云解析实现跨地域负载均衡。
使用多种情况,请根据自己情况选择,如有问题,可以咨询阿里云的构架师。