直达最佳实践:【 https://bp.aliyun.com/detail/23】
观看视频:【 https://yqh.aliyun.com/live/detail/22351】
阿里云最佳实践目前已覆盖23类常用场景,有200多篇最佳实践,这其中涉及110款以上阿里云产品的最佳使用场景。目前,最佳实践已成功帮助大量客户实现自助上云。
正文:本来通过两方面来介绍,先讲解了最佳实践的原因,结合实际做了高弹性架构的搭建。
最佳实践原理讲解
高弹性架构搭建演示
一、最佳实践原理讲解
1)案例架构
方案的应用场景是在互联网业务发展过程当中,很多的业务具有突发性的特点。例如互联网电商的秒杀、促销等,业务的特点是时间固定,但访问量并不固定。除了提前升级配置外,客户往往希望系统本身也能够有自动弹性伸缩的能力。那么对于像互联网教育的场景,由于存在放假和工作日的区别,系统也需要有一定的弹性伸缩能力去应对高出平时几倍的访问压力。等访问减少时,业务系统能够释放冗余的资源来达到节约成本的目标。
2)负载均衡
负载均衡能访问流量,根据转发的策略,分发到后端多台云服务器ECS实例,提供流量分发的控制服务。总体来说,负债均衡扩展了应用的服务能力,增强了应用的可用性。SLB采用集群部署的方式,可实现绘画的同步,以消除服务器单点的故障来提升冗余以保证服务的稳定性,其中四诊负载均衡通过LVS的方式来实现,七层负载均衡通过淘宝网发起的外部服务器项目,它在Engines的基础上做了大量的优化。SLB多可用区高可用指标设计为四个九百分之九十九点九九,单可用区设计为三个九百分之九十九点九。
3)弹性伸缩
当云监控监测搜索ECS实例,VCPU使用率突破了80%的时候,弹性伸缩会根据配置的伸缩规则来弹性的扩张ECS的资源,自动创建合适数量的ECS实例,并自动添加ECS实力到负载均衡的后端服务器和RDS实例的访问排名的名单当中。当云监控监测到伸缩组内的ECS实例的VCPU使用率下降到30%的时候,弹性伸缩根据配置的伸缩规则来弹性的释放资源。简单来说。当你的业务升级的时候,弹性伸缩自动完成底层的资源升级,来避免访问的延时和资源超负荷的运行。当业务需求下降时,弹性伸缩自动完成底层的资源释放,来避免资源的浪费。
4)云数据库Redis
为什么要选择云数据库Redis?因为硬件部署在云端提供了完善的基础设施的规划、网络安全的保障和系统维护的服务,可以专注于业务的创新。同时云数据库Redis版也支持灵活的多种部署架构来满足不同的业务场景。比如标准版、集群版、独写分离版,标准版又细分为单副本和双副本。标准版的单副本适用于缓存的场景支持单节点集群的弹性并备,满足高QBS场景来提供超高的性价比。标准版的多副本组成架构总节点的故障,使系统自动秒级切换,备节点会接管业务全程自动切断,对业务是无影响,保证系统服务的高可用性。集群版那也分为单副本和多副本,集群版的单副本采用的是集群的架构,每个分片服务器采用单副本模式,适用于存储缓存内的业务或QBS压力较大的业务场景。集群多副本采用的是分布式的架构,每个数据分片都支持组成的高等架构,能够自动的进行容灾切换和故障迁移,集群版也提供多种的规格,可以根据业务压力的大小来选择合适的规格,还可以随着业务的发展自由的编配。
集群版还支持两种连接方式。一种是代理的模式,它是集群版的默认连接方式,可提供智能连接管理,来降低应用开发的成本。第二种是指点模式,它支持客户端绕过代理服务器直接访问后端数据分片,可降低网络开销和服务的响应时间,适用于Redis响应速度要求极高的业务。第三种是Redis的读写分离版,它与标准版的双副本架构类似,读写分离版的实例采用了储存的架构来提供高可用的设计。那主节点挂在只读的副本来实现数据的复制,来支持独性能的现行的扩展。只读副本可以有效的缓解热点Key带来的问题,适合高读写比的业务场景。
5)云数据库RDS
云数据库RDS也提供像基础版的集群版,三个节点的企业版。
基础版是单节点实例,采用的是计算和存储分离的架构,可实现超高的性价比。高可用版采用的是一组一倍的经典高可用架构,适合80%以上的用户场景。
集群版仅向SQL Server提供,基于always on的技术,实现了最大支持一组一倍的高可用架构和七个只读的一个实例,并且支持这个横向扩展集群读的一个能力,三节点的企业版仅MySQL提供,采用的是一组两倍的三节点的架构,通过多副本来同步复制,确保数据的一致性,来提供金融级的可靠性。
二、高弹性架构搭建演示
1)搭建CADT
本实将通过CADT来搭建基础架构。首先通过产品与服务,找到CADT工具,在官方模版里搜索互联网行业高弹性系统构建。
把鼠标移动到模版图标上面,双击区域选择深圳,状态是新购。如果已有VPC,可以把状态改成已保有。
Vswitch状态默认也是新购,如果之前已创建,就把状态改成已保有。
双击autnamedslb图标,看一下主可用区和备可用区。
双击ecs看一下。
弹性伸缩组里选用的是企业版的Redis,架构类型是stander标准类型,设置下密码和安全组。
rds选MySQL类型的。
安全组也设置一下。SLB和ECS连线的配置也看一下
看一下ECS_RDS的配置,数据库帐号和密码都要设置一下。看一下EIP和SLB的配置。
点击保存,给应用取名为互联网高弹性架构,点确认。
报错,我们做了前置的较验,是忘记设置ecs的密码。
把密码设置上,点击保存。
2)部署应用
点击部署应用,进行资源验证,主要是保证资源在各个可用区里都有。
验证成功后进行部署
创建资源,这个过程可能会花一些时间,等待资源部署成功。
部署成功后,单击资源名称列下的各个资源,来查看各个资源的详情,
比如点击SLB,就跳转到SLB的控制台,监听状态还是异常的,只是部署了ecs,并没有部署任何的应用在ecs上面。
我们来到ecs的控制台。
我们点击Redis,查看详情,这个页面很重要的信息是连接地址和端口。
点击看白名单,发现Vswitch已经自动加入了白名单。
在帐号管理重置下密码。
云RDS查看下帐号,这个也是在CADT配置的帐号,
需要创建一个数据库,绑定我们的普通帐号。
拷贝数据库的连接和端口地址,这些都需要单独保存下来,后期需要更新Wordpress的配置文件。
数据库连接的安全组也在里面。
登陆我们的ecs实例。
接下来部署业务应用,需要做些下载安装的事。
现在安装的是Sysbench,为了用于CPU的压测。
安装 Apache 和 PHP 组件,需要先更新RPM包的库,程序试图去访问镜像地址。
出现time out 的问题了。
绑定弹性EIP,让我们的实例就可以访问公网。
开通绑定成功后,再来试图连接镜像地址。这次就成功的更新了RPM包的镜像仓库。
接下来安装PHP和相关的库
下载过程会花些时间,取决于我们的带宽和网速。
已经安装成功,重启Apache,设置开机默认启动。
下载云监控,后边的弹性伸缩依赖于云监控。
接下来下载Wordpress的系统,来模拟我们的业务系统,这个过程下载的速度有点慢。如果下载太慢或失败,可以试着换一个下载地址。具体地址可以在最佳实践文档里面找到。除了下载Wordpress,还要下载Redis Wordpress相关的插件,在案例里需要用Redis做数据的缓存。
现在已经下载好了Redis缓存和Wordpress安装包,直接来到Var/www/html下面,进行Wordpress配置文件的编辑。
在这个配置文件里,也是实验里比较核心的配置文件,需要更新数据库的相关配置,比如数据库的名字、用户、主机的地址、Redis的配置,这些信息都是在我们全面操作过程中提醒大家去复制粘贴的内容。
我们重新启动Apache服,跳转到SLB的控制台,现在监听状态是正常的。
通过EIP地址来访问我们的网站。
先创建标题、用户、密码。
点击登陆,输入刚才的用户名和密码。
点击插件,启用Redis插件。
点击settings,状态已经是Connected
下面创建一篇文章,标题是hi Alibaba,发布。
来到RDS的控制台,登陆数据库,主要是想看看我们之前的数据有没有成功地写入相应的表里面,采用之前的帐号、密码登陆。
第一次登陆的话可能会报错,需要加白名单,点击测试连接。成功之后登陆。
重新登陆后,找到posts里面的表,打开表,可以看到刚刚落表成功的hi Alibaba。
接下来去Redis,选择密码登陆的方式,密码就是我们之前重置的密码。
这里报错的原因,可能是因为本地地址没有加入到白名单里面。
创建一个白名单,添加上本地地址。
再来测试一下,现在连接成功。
第一次登陆有点慢,登陆成功后,RDS里有没有缓存,看一下我们之前刷新的页面。
找到posts,在这里能找到我们的hi alibaba这条信息。
现在基于ecs实例创建一个自定义镜像,基于镜像创建弹性伸缩组。
直接去弹性伸缩,创建一个伸缩组,从零开始创建,最大实例5个,最小实例1个,这里的冷却时间非常重要,在这个时间内我们的报警任务是会被拒绝的。冷却时间设置为300接近5分钟有点久。任务被触发后,如果在300秒内任仍然被触发的话,它就会直接拒绝你的任务,我们把冷却时间改为100。
选择之前创建的专有网络和交换机。推荐可以使多个交接机,最多能选到10个,关联之前的负载均衡,关联RDS数据库存实例,点继续。
配置弹性伸缩ESS,这里选择g6.large实例,这是多选,再选择高主频通用型hfg6实例,最多可以选8个规格实例,我们也可以选择抢占式实例,它的折扣会更好一些,最低能达到一折。
在这里发现镜像还没有同步过来。
可能我们的镜像还在创建过程中,刷新一下页面,现在才54%。
我们再返回镜像看一下,现在有了。
选择对应的安全组。
看一下安全组的规则,像443、80,外部应用常见的端口。
伸缩配置完成之后启用配置。
点击确认。
看一下实例列表,手动添加一个实例进去。
配置一下伸缩规则,名称scaling-up,增加一台ECS,点击确认。
再增加一条规则,名称scaling-down,减少一台ECS,占击确认。
接着配置任务,配置报警任务,我们也支持定时任务和其它类型的任务,名字叫cpu_busy,阈值80%,触发规则scaling-up。
再创建一个cpu_idle,cpu空闲的时间小于50%的时候,触发我们的scaling-down。
看一下实例列表,总数是一个,是我们之前手动增加的一个实例。
接下来通过Workbench来登陆ecs。
登陆之后需要通过sysbench来提高CPU的利用率。
我们来看一下监控数据,CPU的使用率还比较低。
现在看CPU的数据已经上去了。
再开一个窗口top,来看一下整个系统的状况。
看一下伸缩活动,这是最开始手动增加的ECS。再等3分钟,CPU的平均负载大于80%的时候,应该会触发一个scaling-up的伸缩活动。
负载是在不断增加的。
现在出现了报警的状态,任务已经被触发。
正在执行增加一台ecs的动作,可以看到已经自动创建成功了ecs,总数增加了一台,变成了两台ecs实例。
我们删掉sysbench的进程。
我们再等大约3分钟,可以看到报警任务的状态都变成正常了。
再等一段时间就发现有其它的伸缩活动,比如冷却时间内是不能执行报警类的伸缩活动的。
我们的idle闲置也出现了报警,
我们再看一下Remove这个操作,已经成功地执行了。
根据业务流量高峰和低谷的不同,可以自动地进行伸缩,这就是我们的弹性伸缩。