互联网行业高弹性系统构建最佳实践

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 在互联网行业的业务发展中,针对业务突发性的特点,系统需要有弹性伸缩的能力。
直达最佳实践:【 https://bp.aliyun.com/detail/23
观看视频:【 https://yqh.aliyun.com/live/detail/22351
阿里云最佳实践目前已覆盖23类常用场景,有200多篇最佳实践,这其中涉及110款以上阿里云产品的最佳使用场景。目前,最佳实践已成功帮助大量客户实现自助上云。

正文:本来通过两方面来介绍,先讲解了最佳实践的原因,结合实际做了高弹性架构的搭建。
 最佳实践原理讲解
 高弹性架构搭建演示
一、最佳实践原理讲解
1)案例架构
image.png

方案的应用场景是在互联网业务发展过程当中,很多的业务具有突发性的特点。例如互联网电商的秒杀、促销等,业务的特点是时间固定,但访问量并不固定。除了提前升级配置外,客户往往希望系统本身也能够有自动弹性伸缩的能力。那么对于像互联网教育的场景,由于存在放假和工作日的区别,系统也需要有一定的弹性伸缩能力去应对高出平时几倍的访问压力。等访问减少时,业务系统能够释放冗余的资源来达到节约成本的目标。
2)负载均衡
image.png

负载均衡能访问流量,根据转发的策略,分发到后端多台云服务器ECS实例,提供流量分发的控制服务。总体来说,负债均衡扩展了应用的服务能力,增强了应用的可用性。SLB采用集群部署的方式,可实现绘画的同步,以消除服务器单点的故障来提升冗余以保证服务的稳定性,其中四诊负载均衡通过LVS的方式来实现,七层负载均衡通过淘宝网发起的外部服务器项目,它在Engines的基础上做了大量的优化。SLB多可用区高可用指标设计为四个九百分之九十九点九九,单可用区设计为三个九百分之九十九点九。
3)弹性伸缩
image.png

当云监控监测搜索ECS实例,VCPU使用率突破了80%的时候,弹性伸缩会根据配置的伸缩规则来弹性的扩张ECS的资源,自动创建合适数量的ECS实例,并自动添加ECS实力到负载均衡的后端服务器和RDS实例的访问排名的名单当中。当云监控监测到伸缩组内的ECS实例的VCPU使用率下降到30%的时候,弹性伸缩根据配置的伸缩规则来弹性的释放资源。简单来说。当你的业务升级的时候,弹性伸缩自动完成底层的资源升级,来避免访问的延时和资源超负荷的运行。当业务需求下降时,弹性伸缩自动完成底层的资源释放,来避免资源的浪费。
4)云数据库Redis
image.png

为什么要选择云数据库Redis?因为硬件部署在云端提供了完善的基础设施的规划、网络安全的保障和系统维护的服务,可以专注于业务的创新。同时云数据库Redis版也支持灵活的多种部署架构来满足不同的业务场景。比如标准版、集群版、独写分离版,标准版又细分为单副本和双副本。标准版的单副本适用于缓存的场景支持单节点集群的弹性并备,满足高QBS场景来提供超高的性价比。标准版的多副本组成架构总节点的故障,使系统自动秒级切换,备节点会接管业务全程自动切断,对业务是无影响,保证系统服务的高可用性。集群版那也分为单副本和多副本,集群版的单副本采用的是集群的架构,每个分片服务器采用单副本模式,适用于存储缓存内的业务或QBS压力较大的业务场景。集群多副本采用的是分布式的架构,每个数据分片都支持组成的高等架构,能够自动的进行容灾切换和故障迁移,集群版也提供多种的规格,可以根据业务压力的大小来选择合适的规格,还可以随着业务的发展自由的编配。
集群版还支持两种连接方式。一种是代理的模式,它是集群版的默认连接方式,可提供智能连接管理,来降低应用开发的成本。第二种是指点模式,它支持客户端绕过代理服务器直接访问后端数据分片,可降低网络开销和服务的响应时间,适用于Redis响应速度要求极高的业务。第三种是Redis的读写分离版,它与标准版的双副本架构类似,读写分离版的实例采用了储存的架构来提供高可用的设计。那主节点挂在只读的副本来实现数据的复制,来支持独性能的现行的扩展。只读副本可以有效的缓解热点Key带来的问题,适合高读写比的业务场景。
5)云数据库RDS
image.png

云数据库RDS也提供像基础版的集群版,三个节点的企业版。
基础版是单节点实例,采用的是计算和存储分离的架构,可实现超高的性价比。高可用版采用的是一组一倍的经典高可用架构,适合80%以上的用户场景。
集群版仅向SQL Server提供,基于always on的技术,实现了最大支持一组一倍的高可用架构和七个只读的一个实例,并且支持这个横向扩展集群读的一个能力,三节点的企业版仅MySQL提供,采用的是一组两倍的三节点的架构,通过多副本来同步复制,确保数据的一致性,来提供金融级的可靠性。
二、高弹性架构搭建演示
1)搭建CADT
image.png
image.png

本实将通过CADT来搭建基础架构。首先通过产品与服务,找到CADT工具,在官方模版里搜索互联网行业高弹性系统构建。
image.png
image.png

把鼠标移动到模版图标上面,双击区域选择深圳,状态是新购。如果已有VPC,可以把状态改成已保有。
Vswitch状态默认也是新购,如果之前已创建,就把状态改成已保有。
双击autnamedslb图标,看一下主可用区和备可用区。
image.png

双击ecs看一下。
弹性伸缩组里选用的是企业版的Redis,架构类型是stander标准类型,设置下密码和安全组。
image.png

rds选MySQL类型的。
安全组也设置一下。SLB和ECS连线的配置也看一下
image.png

看一下ECS_RDS的配置,数据库帐号和密码都要设置一下。看一下EIP和SLB的配置。
image.png

点击保存,给应用取名为互联网高弹性架构,点确认。
image.png

报错,我们做了前置的较验,是忘记设置ecs的密码。
image.png

把密码设置上,点击保存。
2)部署应用
image.png

点击部署应用,进行资源验证,主要是保证资源在各个可用区里都有。
image.png

验证成功后进行部署
image.png

创建资源,这个过程可能会花一些时间,等待资源部署成功。
部署成功后,单击资源名称列下的各个资源,来查看各个资源的详情,
image.png

比如点击SLB,就跳转到SLB的控制台,监听状态还是异常的,只是部署了ecs,并没有部署任何的应用在ecs上面。
image.png

我们来到ecs的控制台。
image.png

我们点击Redis,查看详情,这个页面很重要的信息是连接地址和端口。
image.png

点击看白名单,发现Vswitch已经自动加入了白名单。
image.png

在帐号管理重置下密码。
image.png

云RDS查看下帐号,这个也是在CADT配置的帐号,
image.png

需要创建一个数据库,绑定我们的普通帐号。
image.png

拷贝数据库的连接和端口地址,这些都需要单独保存下来,后期需要更新Wordpress的配置文件。
image.png

数据库连接的安全组也在里面。
image.png

登陆我们的ecs实例。
image.png

接下来部署业务应用,需要做些下载安装的事。
image.png

现在安装的是Sysbench,为了用于CPU的压测。
image.png

安装 Apache 和 PHP 组件,需要先更新RPM包的库,程序试图去访问镜像地址。
image.png

出现time out 的问题了。
image.png
image.png

绑定弹性EIP,让我们的实例就可以访问公网。
image.png

开通绑定成功后,再来试图连接镜像地址。这次就成功的更新了RPM包的镜像仓库。
image.png

接下来安装PHP和相关的库
image.png

下载过程会花些时间,取决于我们的带宽和网速。
image.png

已经安装成功,重启Apache,设置开机默认启动。
image.png

下载云监控,后边的弹性伸缩依赖于云监控。
image.png

接下来下载Wordpress的系统,来模拟我们的业务系统,这个过程下载的速度有点慢。如果下载太慢或失败,可以试着换一个下载地址。具体地址可以在最佳实践文档里面找到。除了下载Wordpress,还要下载Redis Wordpress相关的插件,在案例里需要用Redis做数据的缓存。
image.png

现在已经下载好了Redis缓存和Wordpress安装包,直接来到Var/www/html下面,进行Wordpress配置文件的编辑。
image.png

在这个配置文件里,也是实验里比较核心的配置文件,需要更新数据库的相关配置,比如数据库的名字、用户、主机的地址、Redis的配置,这些信息都是在我们全面操作过程中提醒大家去复制粘贴的内容。
image.png

我们重新启动Apache服,跳转到SLB的控制台,现在监听状态是正常的。
image.png

通过EIP地址来访问我们的网站。
image.png

先创建标题、用户、密码。
image.png

点击登陆,输入刚才的用户名和密码。
image.png

点击插件,启用Redis插件。
image.png
image.png

点击settings,状态已经是Connected
image.png

下面创建一篇文章,标题是hi Alibaba,发布。
image.png

来到RDS的控制台,登陆数据库,主要是想看看我们之前的数据有没有成功地写入相应的表里面,采用之前的帐号、密码登陆。
image.png

第一次登陆的话可能会报错,需要加白名单,点击测试连接。成功之后登陆。
image.png

重新登陆后,找到posts里面的表,打开表,可以看到刚刚落表成功的hi Alibaba。
image.png

接下来去Redis,选择密码登陆的方式,密码就是我们之前重置的密码。
image.png

这里报错的原因,可能是因为本地地址没有加入到白名单里面。
image.png

创建一个白名单,添加上本地地址。
image.png

再来测试一下,现在连接成功。
image.png

第一次登陆有点慢,登陆成功后,RDS里有没有缓存,看一下我们之前刷新的页面。
image.png

找到posts,在这里能找到我们的hi alibaba这条信息。
image.png

现在基于ecs实例创建一个自定义镜像,基于镜像创建弹性伸缩组。
image.png

直接去弹性伸缩,创建一个伸缩组,从零开始创建,最大实例5个,最小实例1个,这里的冷却时间非常重要,在这个时间内我们的报警任务是会被拒绝的。冷却时间设置为300接近5分钟有点久。任务被触发后,如果在300秒内任仍然被触发的话,它就会直接拒绝你的任务,我们把冷却时间改为100。
image.png

选择之前创建的专有网络和交换机。推荐可以使多个交接机,最多能选到10个,关联之前的负载均衡,关联RDS数据库存实例,点继续。
image.png

配置弹性伸缩ESS,这里选择g6.large实例,这是多选,再选择高主频通用型hfg6实例,最多可以选8个规格实例,我们也可以选择抢占式实例,它的折扣会更好一些,最低能达到一折。
image.png

在这里发现镜像还没有同步过来。
image.png

可能我们的镜像还在创建过程中,刷新一下页面,现在才54%。
image.png

我们再返回镜像看一下,现在有了。
image.png

选择对应的安全组。
image.png

看一下安全组的规则,像443、80,外部应用常见的端口。
image.png

伸缩配置完成之后启用配置。
image.png

点击确认。
image.png

看一下实例列表,手动添加一个实例进去。
image.png

配置一下伸缩规则,名称scaling-up,增加一台ECS,点击确认。
image.png

再增加一条规则,名称scaling-down,减少一台ECS,占击确认。
image.png

接着配置任务,配置报警任务,我们也支持定时任务和其它类型的任务,名字叫cpu_busy,阈值80%,触发规则scaling-up。
image.png

再创建一个cpu_idle,cpu空闲的时间小于50%的时候,触发我们的scaling-down。
image.png

看一下实例列表,总数是一个,是我们之前手动增加的一个实例。
image.png

接下来通过Workbench来登陆ecs。
image.png

登陆之后需要通过sysbench来提高CPU的利用率。
image.png

我们来看一下监控数据,CPU的使用率还比较低。
image.png

现在看CPU的数据已经上去了。
image.png

再开一个窗口top,来看一下整个系统的状况。
image.png

看一下伸缩活动,这是最开始手动增加的ECS。再等3分钟,CPU的平均负载大于80%的时候,应该会触发一个scaling-up的伸缩活动。
image.png

负载是在不断增加的。
image.png

现在出现了报警的状态,任务已经被触发。
image.png

正在执行增加一台ecs的动作,可以看到已经自动创建成功了ecs,总数增加了一台,变成了两台ecs实例。
image.png

我们删掉sysbench的进程。
image.png

我们再等大约3分钟,可以看到报警任务的状态都变成正常了。
image.png

再等一段时间就发现有其它的伸缩活动,比如冷却时间内是不能执行报警类的伸缩活动的。
image.png

我们的idle闲置也出现了报警,
image.png

我们再看一下Remove这个操作,已经成功地执行了。
image.png

根据业务流量高峰和低谷的不同,可以自动地进行伸缩,这就是我们的弹性伸缩。

相关实践学习
基于云监控实现的监控系统
通过阿里云云监控功能给非阿里云主机安装监控插件,从而实现对非阿里云主机的各项指标进行监控和管理,在配置报警规则和报警人的情况下,能对特定的场景做出报警反应通知到报警人的手机上。
相关文章
|
4月前
|
运维 安全 网络安全
云端安全之盾:云计算与网络安全的协同演进运维自动化之路:从传统到现代化的转变
【8月更文挑战第23天】在数字化浪潮下,云计算以其灵活性和可扩展性成为企业数字化转型的重要推手。然而,随着云服务的快速发展,网络安全威胁也日益增多。本文将探讨云计算与网络安全如何相互促进,共同成长,以确保信息安全,并分析云服务提供商采取的安全策略以及企业在采用云服务时应注意的安全实践。
|
4月前
|
存储 弹性计算 分布式计算
云计算演进问题之洛神云网络支持海量用户同时使用如何解决
云计算演进问题之洛神云网络支持海量用户同时使用如何解决
|
消息中间件 运维 Kubernetes
《快递行业云上技术服务白皮书》——4. 快递行业技术服务最佳实践——4.1 核心业务上云最佳实践——4.1.2 云原生应用架构优势(上)
《快递行业云上技术服务白皮书》——4. 快递行业技术服务最佳实践——4.1 核心业务上云最佳实践——4.1.2 云原生应用架构优势(上)
217 0
|
监控 Kubernetes Cloud Native
《快递行业云上技术服务白皮书》——4. 快递行业技术服务最佳实践——4.1 核心业务上云最佳实践——4.1.2 云原生应用架构优势(下)
《快递行业云上技术服务白皮书》——4. 快递行业技术服务最佳实践——4.1 核心业务上云最佳实践——4.1.2 云原生应用架构优势(下)
201 0
|
运维 Cloud Native 中间件
《边缘云技术演进与发展白皮书》——五、边缘云分布式云管系统技术演进——01 分布式云管架构演进—— 4.云管第四阶段:生态支撑
《边缘云技术演进与发展白皮书》——五、边缘云分布式云管系统技术演进——01 分布式云管架构演进—— 4.云管第四阶段:生态支撑
192 0
|
监控 测试技术
《云上大型赛事保障白皮书》——第二章 云上大型赛事保障体系——2.4 云上大型赛事保障方法论——2.4.2 保障目标体系构建
《云上大型赛事保障白皮书》——第二章 云上大型赛事保障体系——2.4 云上大型赛事保障方法论——2.4.2 保障目标体系构建
|
数据中心 云计算 UED
《云上大型赛事保障白皮书》——第一章 大型赛事云上数字化转型——1.2 上云优势
《云上大型赛事保障白皮书》——第一章 大型赛事云上数字化转型——1.2 上云优势
202 0
|
存储 缓存 Kubernetes
在线教育行业云上技术服务白皮书-在线教育行业云计算应用场景-阿里云离线与在线业务容器化
在线教育行业云上技术服务白皮书-在线教育行业云计算应用场景-阿里云离线与在线业务容器化
104 0
|
大数据 云计算
在线教育行业云上技术服务白皮书-在线教育行业云计算应用场景-某客户上云部署方案
在线教育行业云上技术服务白皮书-在线教育行业云计算应用场景-某客户上云部署方案
|
存储 机器学习/深度学习 运维
在线教育行业云上技术服务白皮书-在线教育行业云计算应用场景-阿里云大数据收集、存储与分析平台
在线教育行业云上技术服务白皮书-在线教育行业云计算应用场景-阿里云大数据收集、存储与分析平台
162 0