互联网行业高弹性系统架构最佳实践
本方案通过弹性伸缩和PolarDB的配合,实现应用和数据库两个层面的弹性。
参考链接:https://www.aliyun.com/acts/best-practice/preview?id=52159
前提条件
- 所有云产品均需在同一VPC中,如何创建VPC请参见搭建IPv4专有网络。
- 已创建64位CentOS 7系统的ECS实例,创建步骤请参见创建ECS实例。
- 已创建PolarDB MySQL集群,并在PolarDB白名单中添加VPC网段。
- 创建步骤请参见创建PolarDB MySQL数据库集群。
- 设置PolarDB白名单请参见设置集群白名单。
- 已创建同城容灾版本的云数据库Redis,并在Redis白名单中添加VPC网段。
- 已开通ESS服务,开通方式请参见开通并授权服务。
- 已创建SLB实例,创建方式请参见创建负载均衡实例。
- 已创建EIP,申请操作请参见申请新EIP。
- 已申请域名且已经完成域名备案。
应用场景
在互联网行业的业务发展中,很多业务具有突发性特点。
- 例如互联网电商的秒杀、促销等活动,这类业务的特点是时间固定,但访问量不固定。除了提前升级配置之外,客户往往希望系统本身也能有自动弹性伸缩的能力。
- 对于互联网教育的场景,由于存在放假和工作日的区别,系统也需要有一定的弹性伸缩能力去应对高出平时几倍的压力,等访问减少时,业务系统能释放冗余的资源达到节约成本的目标。
典型场景和需求:
- 业务系统波动大,以互联网行业为典型代表;
- 业务系统和数据库系统都要能实现弹性伸缩;
- 系统可用性高,弹性收缩用户感知小;
- 支持手工快速提升系统和数据库性能。
技术架构
本实践基于如下图所示的技术架构和主要流程。
方案优势
- 应用弹性:通过配置合理的弹性伸缩配置,业务高峰期到来业务压力上涨时自动增加ECS实例保障业务系统平稳运行。对于可预见的快速业务上涨,配置定时任务或者通过手动执行伸缩规则的方式可以预先备齐ECS资源。业务低谷期自动释放多余ECS资源节约成本。
- 数据库弹性:通过PolarDB在线节点配置弹性、只读节点弹性、同步克隆弹性和存储弹性四个维度的弹性,保障在大规模业务压力到来时快速应对业务压力。
- 应用高可用性:通过ESS收缩配置设置均衡分布策略,在主可用区宕机时,ESS会在备可用区开出相同资源,保障业务平稳运行。
- 缓存数据库和弹性负载均衡高可用性:通过多可用区的主备策略保障跨可用区自动容灾。
注意事项
- 跨可用区访问可能会有1-2ms的延迟。
- 数据库不能实现自动弹性伸缩,需要人工干预升降配。
- 业务系统需无状态,有状态系统需要先进行业务改造。
- PolarDB现阶段未推出同城容灾版本,若要容灾需通过DTS同步,切换时需要修改应用的数据库连接。
说明 使用DTS实时同步PolarDB请参见文档从POLARDB MySQL同步至POLARDB MySQL。
操作步骤
本例以WordPress为业务系统演示。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论