【阿里云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配置文件的苦逼人来说已经很不错了

相关文章
|
存储 弹性计算 负载均衡
活动实践 | ALB 实现跨地域负载均衡
本方案通过阿里云的云企业网(CEN)、转发路由器(TR)、专有网络(VPC)、云服务器(ECS)和应用型负载均衡(ALB),实现跨地域的应用负载均衡。它扩展了系统的吞吐能力,提升了可用性和安全性。用户可通过资源编排服务(ROS)一键部署,并进行负载测试验证。清理资源也简便快捷。
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
944 9
|
负载均衡
alb负载均衡按量降价了,资源包抵扣已经比按量付费的贵了,结果还是在走资源包抵扣。
ALB实例按量付费已降价,1万LCU资源包单价现为0.0485,3LCU可抵一小时标准版实例费用(原0.147现降至0.125),单LCU价格也下调至0.042。资源包价格保持不变,旧购资源包仍在抵扣中,建议调整为降价时不进行抵扣。同时,附上与不太了解情况的客服交流记录供参考。
|
负载均衡 Cloud Native 容灾
阿里云负载均衡SLB价格_ALB、NLB和CLB区别_负载均衡详细介绍
阿里云负载均衡SLB提供ALB、NLB和CLB三种类型,分别适用于7层和4层的不同场景。ALB与NLB仅支持按量付费,而CLB则额外提供包年包月选项。ALB强调7层应用处理与高级路由,NLB聚焦4层的大流量处理与SSL卸载。两者均支持自动弹性伸缩,确保高可用性和性能。CLB作为传统负载均衡,适用于特定需求。每种类型依据实例规格与使用量收费,其中公网实例还需支付网络费用。通过这些服务,用户可以实现流量分发、故障转移及提升应用系统的稳定性和扩展性。
|
5月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
652 30
|
6月前
|
存储 人工智能 Serverless
函数计算进化之路:AI 应用运行时的状态剖析
AI应用正从“请求-响应”迈向“对话式智能体”,推动Serverless架构向“会话原生”演进。阿里云函数计算引领云上 AI 应用 Serverless 运行时技术创新,实现性能、隔离与成本平衡,开启Serverless AI新范式。
680 12
|
11月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
1223 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
11月前
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
896 30
|
9月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
825 0
|
6月前
|
人工智能 运维 安全
聚焦 AI 应用基础设施,云栖大会 Serverless AI 全回顾
2025 年 9 月 26 日,为期三天的云栖大会在杭州云栖小镇圆满闭幕。随着大模型技术的飞速发展,我们正从云原生时代迈向一个全新的 AI 原生应用时代。为了解决企业在 AI 应用落地中面临的高成本、高复杂度和高风险等核心挑战,阿里云基于函数计算 FC 发布一系列重磅服务。本文将对云栖大会期间 Serverless+AI 基础设施相关内容进行全面总结。

热门文章

最新文章

相关产品

  • 函数计算