【阿里云ALB应用型负载均衡】功能体验 & 利用ALB进行Serverless与ECS分流

简介: Load Balance,负载均衡是一个大型网站永远绕不开的话题,相信略懂架构的人都了解负载均衡技术,他同时出现在服务器架构和网络架构之中,针对不同应用场景有软负载均衡和硬负载均衡产品。当单节点类型的站点无法满足业务时,我们就必须拓展服务器数量,由负载均衡提供前端访问能力,将访问流量分摊给后端服务器,而后端的服务器可横向拓展。

Load Balance,负载均衡是一个大型网站永远绕不开的话题,相信略懂架构的人都了解负载均衡技术,他同时出现在服务器架构和网络架构之中,针对不同应用场景有软负载均衡和硬负载均衡产品。当单节点类型的站点无法满足业务时,我们就必须拓展服务器数量,由负载均衡提供前端访问能力,将访问流量分摊给后端服务器,而后端的服务器可横向拓展。

       经典的负载均衡开源软件有Nginx/Tengine(七层,轻量,本身就是反代Web服务等)、Haproxy(四七层,高负载,负载算法丰富等)、LVS(四层,基于IP+TCP),以上通常配合Keepalive等VRRP完成高可用负载均衡的架构。但需要多出几台服务器来做专用负载均衡的载体,在云上环境,若把负载均衡设计在服务器上,纯纯大怨种了

 

image.png

 

 

因此,云上负载均衡云服务化就相当有优势了,阿里云负载均衡家族ALB\NLB\CLB针对性的提供了七层/四层/七+四三种负载均衡产品。而对于绝大多数互联网应用来说,ALB应用型就可以满足负载均衡的需求了。

 

一、ALB三种调度算法

负载均衡重要的特性之一就是后端调度算法,ALB应用型负载均衡这里可以看到支持三种算法:

1.加权轮询。经典负载均衡调度WRR,如Haproxy的static-rr,Nginx的weight轮询。通过调整后端服务器的权重来分配请求流量,一般后端配置高的权重会设置一点,而配置相同的云主机权重默认一致即可,均衡分配请求量。

2.加权最小连接数。寻找连接数最小的节点调度WLC,类似Nginx的least_conn,自动选择连接数少的后端服务进行分配,谁闲就让谁干活,摸鱼哒咩。

3.一致性哈希。分为源IP和URL参数两种,主要时利用哈希算法计算这两个参数来保证访问目标结果的一致性。

 

image.png

 

 

3.1.一致性哈希-源IP。源地址哈希算法SH,也是常见算法,如Nginx的ip_hash,Haproxy的source。主要负责同一个IP客户端访问相同的后端服务,解决Session持久共享的问题。

3.2.一致性哈希-URL参数。类似Nginx的url_hash,通过$uri即URL参数将同一个URL访问分配到同一个后端服务器中,解决后端某台机子作为缓存时的应用场景。

 

image.png

 

 

 

二、ALB后端会话保持两种方法

会话保持是构建负载均衡架构需要关注的内容之一,用户可不想一个网站点着点着被调度算法挪走了后端服务,反复的重新登录。虽然在调度算法里有源IP哈希一致性,但是在内网环境下NAT一个公网IP时,负载均衡收到的内网多个用户的请求还是同一个公网IP地址,还是会出现持久化问题。ALB提供了两种会话保持的方法。即植入Cookie重写Cookie,这两种方法官方手册介绍的比较简明易懂了,我就不赘述了。

  

image.png

 

 

1.植入Cookie:客户端第一次访问时,ALB会在返回请求中植入Cookie(即在HTTP/HTTPS响应报文中插入SERVERID),下次客户端携带此Cookie访问,负载均衡服务会将请求定向转发给之前记录到的后端服务器上。

来自 <https://help.aliyun.com/document_detail/446969.html>

 

image.png

 

如图,客户端返回请求被插入了SERVERID,是由ALB给的,还插入了时间戳信息

 

 

image.png

 

 

 

2.重写Cookie:当ALB发现用户自定义了Cookie,将会对原来的Cookie进行重写,下次客户端携带新的Cookie访问,ALB会将请求定向转发给之前记录的后端服务器。

来自 <https://help.aliyun.com/document_detail/446969.html>

 

image.png

 

 

需要在后端Web服务上进行配置的修改,通过Set-Cookie头直接插入相应名称的cookie

 

image.png

 

 

再测试时,请求Cookie出就带上了名称为HHH_WWW的cookie

 

image.png

 

 

 

熟悉nginx的哥哥们应该知道有个东西叫session_sticky,里面有三种cookie的mode,insert/prefix/rewrite

综合对调度算法和会话保持的体验,ALB应用型负载均衡更类似于云上的Nginx(或者淘自家的Tengine?没有深入接触过听说两者很相似)的负载均衡版,更加适合原先在本地机房以Nginx构建负载均衡架构的业务上云,用ALB替代Nginx负载均衡。当然ALB的特性优点还有很多,更加适应云原生环境,丰富的业务流量转发策略,出口大流量并可直接接入WAF、DDOS墙,灵活的健康检测策略等等。

三、实践-利用ALB将传统ECS访问流量切换至Serverless集群,实现云原生化改造

假设我现在是这样一个场景:

一家小型的创业型移动电商平台,业务的技术框架大致为CentOS+Nginx+PHP+Mysql+Redis。初期构建采用了云服务的模式,配置了ECS+RDS主从+Redis+OSS的架构,通过域名发布给用户所使用。就如同所有成长中的中小型企业来说,业务访问量逐渐增长,原先架构的缺点也逐步暴露出来。

 

image.png

 

 

ALB作为七层应用型负载均衡,是在云上扩展业务能力的最好方式之一,ALB通常的用法需要构建后端ECS云服务器组,几台相同的ECS动态伸缩来提供后端的负载能力。但是这里,我决定让这个“小型电商平台”用ALB完成流量无缝切换,逐步引入Serverless,拥抱云原生。

 

至于选择FC函数计算而不使用ECS弹性伸缩的原因大致有这几点:

1、单体ECS改造为弹性伸缩组有停机风险。ECS需要创建自定义镜像来作为伸缩组的来源,创建镜像基于快照技术,但在创建镜像时ECS无法正常提供服务,会存在缓存数据不写盘的情况,导致数据不一致甚至不可用。

2、弹性伸缩策略和能力。当出现业务并发高峰时,弹性伸缩的反应时间和策略就是决定业务是否正常的关键。众所周知,发布一个Pod容器是要比发布一台虚拟机快很多,K8S等云原生带来的动态Scale能力是IaaS层无法比拟的。

3、费用。FC函数的计费粒度比ECS更加精细,使用ECS伸缩组的费用总的来说要高与FC函数计算的弹性扩展,包括其他存储等潜在费用。

4、前后端业务配置里没有特点的固定IP地址,且本身支撑服务如数据都是云服务的环境,只需云上网络互通即可

 

同时,根据这个电商平台现有访问情况发现,80%的用户是通过手机移动端来进行访问,也就是说出现高并发的访问量是由移动端产生,PC端的访问较少,因此我决定在ALB监听转发策略将移动端的流量切换到FC函数计算中,PC端的访问暂时由ECS继续提供,待运行一段时间并完成后续测试后全面将流量切换到Serverless。

 

image.png

 

 

 

1.准备工作

实践开始之前,需要修改一下代码,直接了当区别的区分谁提供了后端计算服务。

 

image.png

 

 

 

image.png

 

 

 

 

修改Serverless dev相关配置,发布FC应用,这里不是Serverless主场不多做介绍,确保函数正常运行

 

image.png

 

 

 

2.ALB实例创建

先购买一下活动提供的ALB资源包

 

image.png

 

 

 

进入负载均衡的控制台,选择【创建应用型负载均衡】,到开通页面。

ALB的应用场景非常多,可以在后端架构里,也可以在前端供用户访问,在后端内网环境下我们ALB的网络实例类型就要选择私网,但我们这里直接将ALB的网络提供给用户访问,因此选择【公网】。

这里需要注意VPC需要和原本的业务服务器在同一VPC下,分别选用两个可用区,可用区要和原有的后端云服务一致。

最后【确认订单】后【立即开通】即可。

 

image.png

 

 

3.ALB后端服务设置

根据规划,规划两个后端服务器组,一个FC组和一个ECS组

 

image.png

 

进入负载均衡的控制台,选择【创建服务器组】,

创建第一个ECS服务器组:选择【服务器组类型】为服务器类型,也就是我们这里的ECS;选择ECS对应的【VPC】

 

image.png

 

添加后端服务器,选择正在运行业务的ECS即可

 

 

image.png

 

 

配置后端服务器的端口和权限。配置业务的前端访问端口

 

image.png

 

 

 

创建第二个FC函数计算组:选择【服务器组类型】为函数计算类型;直接选择函数计算所在的资源组

 

image.png

 

 

添加后端服务器,直接选择对应的FC服务和函数即可,操作非常简便

 

image.png

 

这样我们完成了ECS和FC函数计算服务器组的配置

 

image.png

 

 

 

4.ALB监听及转发规则设置

最后,创建好的负载均衡实例,进入业务配置向导,分别完成【配置监听】、【选择服务器组】、【审核配置】

这里创建过程有点冗余,就简述带过了。

我这里业务监听继续使用默认80端口协议HTTP,开启所有HTTP头字段功能,设置默认转发为ECS对应的服务器组

 

image.png

 

 

 

添加转发规则

主流手机的客户端访问web服务时,请求头中User-Agent会带Mobile关键字。这里就用这个关键字来设置转发规则,使移动端访问流量切到后端FC业务组中,由FC来实现动态扩容。

 

image.png

 

 

接上一步创建监听,点击【转发规则】,创建一条规则

选择条件为【HTTP标头】,配置键值【User-Agent】,设置值为【*Mobile*】

设定转发动作为重定向,重定向域名为Serverless函数计算的域名

 

image.png

 

 

 

5.ALB业务提供域名设置及测试

最后,ALB需要由域名CNAME指向,修改完域名即可全部生效

 

image.png

 

 

 

效果

直观访问,手机访问流量由Serverless承担,PC访问流量由ECS承担,实际上哪个提供的计算服务在用户侧体验应该是无感的。

后续也可以调整监听和策略,全面无缝迁移到FC函数中。

 

image.png

 

四、ALB实践-传统负载均衡应用场景

既然有免费体验ALB的机会,还是试一下传统的应用场景,即:

ALB后端服务器组为分别在两个可用区的两套ECS云服务器集群,在创建ALB实例的时候选用至少两个可用区的原因也是希望避免业务的单点故障,若一个可用区的集群健康检测出了问题就可以直接踢出并告警。

每个可用区的后端服务器都是多台ECS,运行的为相同的业务代码,使用默认的轮询算法可以分摊请求流量。

简单的设置即可高可用、高性能,跟自己在本地搭建Nginx+Keepalived相比,确实轻松不少

 

image.png

 

 

ALB实例上面已经购买好了,过程略略略

直接新创建服务器组,选择【创建服务器组】,

选择【服务器组类型】为服务器类型;选择ECS集群对应的【VPC】;负载调度算法为【加权轮询】

 

image.png

 

勾选要加入服务的后端ECS云服务器

 

image.png

 

 

配置后端ECS监听的端口和权重,权重一致时就是平均轮询,一台一台按顺序均匀的提供服务。

 

image.png

 

 

进入到ALB实例中,配置监听,再按步骤添加配置

 

image.png

 

 

使用curl测试就能看到经典的轮询算法,每次访问,ALB将每个可用区的每台ECS均匀的响应请求。

 

image.png

 

 

其他:

本来想拿PTS打一下网站压测的,突然发现这玩意还挺贵的,试了一下RPS每秒请求1000次,压测1分钟,测试结果是毫无波澜。

 

image.png

 

每秒1000请求量压测对于固定IP模式的ALB每秒QPS10w真是蚂蚁见大象了,对不起小丑是我自己,测个寂寞

 

image.png

 

 

总的来说

ALB的性能和配置流程是良好的。图形化的操作对于我这个以前动不动就敲Nginx负载均衡+反代,或是Haproxy+Keepalived的.conf配置文件的苦逼人来说已经很不错了

相关文章
|
10月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
831 10
|
10月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
869 8
|
10月前
|
运维 安全 Ubuntu
阿里云渠道商:服务器操作系统怎么选?
阿里云提供丰富操作系统镜像,涵盖Windows与主流Linux发行版。选型需综合技术兼容性、运维成本、安全稳定等因素。推荐Alibaba Cloud Linux、Ubuntu等用于Web与容器场景,Windows Server支撑.NET应用。建议优先选用LTS版本并进行测试验证,通过标准化镜像管理提升部署效率与一致性。
|
10月前
|
存储 监控 安全
阿里云渠道商:云服务器价格有什么变动?
阿里云带宽与存储费用呈基础资源降价、增值服务差异化趋势。企业应结合业务特点,通过阶梯计价、智能分层、弹性带宽等策略优化成本,借助云监控与预算预警机制,实现高效、可控的云资源管理。
|
10月前
|
弹性计算 运维 安全
区别及选择指南:阿里云轻量应用服务器与ECS云服务器有什么区别?
阿里云轻量应用服务器适合个人开发者、学生搭建博客、测试环境,易用且性价比高;ECS功能更强大,适合企业级应用如大数据、高流量网站。根据需求选择:轻量入门首选,ECS专业之选。
659 2
|
10月前
|
弹性计算 ice
阿里云4核8G云服务器配置价格:热门ECS实例及CPU处理器型号说明
阿里云2025年4核8G服务器配置价格汇总,涵盖经济型e实例、计算型c9i等热门ECS实例,CPU含Intel Xeon及AMD EPYC系列,月费159元起,年付低至1578元,按小时计费0.45元起,实际购买享折扣优惠。
3764 1
|
10月前
|
存储 机器学习/深度学习 人工智能
硅谷GPU单节点服务器:技术解析与应用全景
“硅谷GPU单节点服务器”代表了在单个物理机箱内集成强大计算能力,特别是GPU加速能力的高性能计算解决方案。它们并非指代某个特定品牌,而是一类为处理密集型工作负载而设计的服务器范式的统称。
|
10月前
|
存储 弹性计算 安全
阿里云渠道商:新手如何选择阿里云ECS实例?
阿里云ECS凭借弹性扩展、稳定可靠与安全防护,助力企业高效上云。本文系统解析实例规格选择关键因素:业务场景匹配、性能评估、成本优化、地域部署与扩展规划,结合计费模式与实际需求,提供科学选型建议,助您精准匹配资源,提升云上效能。(238字)
|
10月前
|
存储 弹性计算 安全
阿里云渠道商:新手怎么选阿里云ECS实例规格?
本文深入解析阿里云ECS的弹性、稳定与安全优势,详解实例规格选择的关键因素,涵盖应用场景、性能需求、成本预算、地理位置与扩展性,助力用户精准选型,优化业务部署与成本效益。

热门文章

最新文章

相关产品

  • 函数计算