阿里妹导读
一、引言
在当今数字化转型加速的时代,企业不仅需要快速响应市场需求,还要确保其在线服务的稳定性和高效性。面对日益增长的用户访问量和复杂的业务需求,传统的IT架构往往显得力不从心,难以灵活应对突发流量和资源管理挑战。为了解决这些问题,越来越多的企业开始转向Serverless架构,以实现更高的灵活性、更低的成本和更强的稳定性。
Serverless架构是一种新兴的云计算模式,它允许开发者专注于编写代码而不必担心底层基础设施的维护。本文介绍的Serverless高可用架构方案,可以减少资源管理和性能优化的工作量:自动化的服务托管和弹性伸缩功能,使得系统可以根据实际需求动态调整资源,有效降低了运维复杂度;按需付费的模式避免了传统架构中常见的资源闲置浪费问题,帮助企业节省大量开支;并由于高可用配置消除了单点故障的风险,确保即使在极端情况下也能持续为用户提供优质服务,提供更稳定的业务支持。
当用户访问您的应用时,DNS(域名系统)会将请求解析到应用负载均衡ALB的服务地址。作为应用的统一入口,ALB负责接收所有外部请求,并根据当前服务器负载情况,智能地将请求转发至多个Serverless应用引擎实例上的服务,从而实现了高效的流量分发。为了进一步保障系统的稳定性,采用双可用区部署策略。这意味着无论是应用负载均衡ALB、Serverless应用引擎实例,还是云数据库PolarDB MySQL Serverless集群,都分别部署在两个不同的地理区域。
这样在单个可用区发生故障时,系统能够自动切换到另一可用区继续提供服务,确保业务的连续性和可靠性不受影响。
Serverless 架构核心优势:
弹性伸缩、高可用:计算资源高可用由 Serverless 服务 SLA 保障,自动进行弹性伸缩,根据实时需求动态调整资源,适应不同的工作负载。
运维负担和成本降低:Serverless 服务维护资源,并且提供开箱即用的日志、监控、负载均衡等能力。开发和运维团队无需管理底层服务器和基础设施,降低了运维负担和成本。
资源利用率高、规格粒度细:根据系统负载自动调整资源,资源利用率高。采用按量计费模型,最小计费时间为分钟级,资源规格粒度细。企业只需为实际使用的计算和存储资源付费。
点击文末“阅读原文”,了解更多详情。
二、总体架构
总体架构图如下,本架构采用单地域双可用区部署,将业务系统、数据库部署在2个不同可用区,实现了可用区级故障灾备能力,从而保证了业务的连续性。服务和数据库都采用了阿里云Serverless产品也支持弹性伸缩。同时支持该架构还利用专有网络VPC、交换机和跨可用区安全组等基础设施,实现了私有网络下的系统通信。
具体使用到的基础设施及云服务如下:
1个专有网络VPC:为应用型负载均衡ALB、Serverless应用引擎、云数据库PolarDB MySQL版Serverless集群等云资源构建云上私有网络。
5台交换机Vswitch:按照经典架构设计3个子网平面(公网平面、业务平面、数据平面),分别部署在两个可用区,提供基本的网络分段和隔离功能。ALB横跨两个可用区部署在公网平面,两个Serverless应用引擎实例分别部署在两个可用区的业务平面,一对云数据库PolarDB MySQL版Serverless主备集群分别部署在两个可用区的数据平面。
1个公网应用型负载均衡ALB:将公网访问流量分发到不同的Serverless应用引擎实例。公网ALB通过EIP提供公网服务能力。
2个Serverless应用引擎实例:用于部署业务系统,提供应用服务。
1个云数据库PolarDB MySQL版Serverless集群:为业务系统提供数据服务。
点击“阅读原文”,直达技术架构方案。
三、方案展示
首先创建DNS实例。基于阿里云资源编排服务ROS(Resource Orchestration Service)实现,ROS模板已定义好脚本,可自动化地完成云资源的创建和配置,提高资源的创建和部署效率,实现一键部署。
(一)通过访问ALB的DNS名称,验证服务可用性
从实例列表中获取ALB实例的DNS名称。
通过浏览器访问该DNS名称,检查是否可以正常访问到示例应用。
(二)配置弹性伸缩并通过Apache Benchmark进行负载测试,验证Serverless架构的弹性和高可用性
配置弹性伸缩
打开Serverless应用引擎SAE控制台[1],点击左侧导航栏选择应用管理 > 应用列表。点击当前应用名称,进入应用详情页。
在弹性伸缩页签添加弹性策略,请按照图片进行配置。
添加完毕后,在弹性伸缩页签下的监控指标策略列表中点击启用。更多配置方式可参考配置弹性伸缩策略[2]。
进行负载测试
安装测试工具Apache Benchmark,Mac OS操作系统默认安装了该测试工具,其他操作系统安装教程请参见官方文档[3]。
请在本地终端中,使用Apache Benchmark命令进行负载测试,模拟不同的并发请求和持续时间。从应用型负载均衡ALB控制台[4]实例详情中获取DNS名称,将
替换成实际值。
ab -n 20000 -c 200 http://
/
验证弹性伸缩能力
命令执行完毕后,单击应用事件,在全部来源类型下拉列表,选择自动弹性(HorizontalPodAutoscaler),可以看到弹性伸缩原因。
在基本信息页,单击实例部署信息,可以看到实例数量的变化,运行中实例从最初的2个变成6个。
以上操作验证了Serverless架构的弹性伸缩能力。系统能够根据负载自动调整资源,确保业务的高效运行。此外,当前方案采用单地域双可用区部署,业务系统和数据库分别部署在不同的可用区,确保了系统的高可用性。即使一个可用区发生故障,另一个可用区的资源仍然能够继续提供服务,保证业务的连续性和稳定性。
点击“阅读原文”,体验搭建Serverless高可用架构,更有精美礼品等您来拿!
参考链接:
[1]https://saenext.console.aliyun.com/overview
[2]https://help.aliyun.com/zh/sae/serverless-app-engine-classic/user-guide/configure-an-auto-scaling-policy
[3]https://httpd.apache.org/docs/2.4/install.html
[4]https://slb.console.aliyun.com/alb