一、弹性架构概述:
- 为什么需要弹性?
物理设备缺乏灵活性
采购不灵活
粒度不灵活
复用不灵活
运维不灵活
- 虚拟化的优势与劣势
优势
点即可得
可大可小
即创即销
劣势
人工调度
规模受限
- 云计算平台的优势
自动调度
规模巨大
时间灵活性
空间臭活性
- 什么是弹性架构
定义:
弹性架构是指随着业务的变化能够进行灵活的、自动的弹性伸缩的一种按需分配的架构
弹性架构的核心重要指标:
- ECS以水平扩展的方式提高了整体服务的支撑能力,这是性能提升的体现,同时多个ECS提供服务,这在客观上消除了单点故障,高可用性也可得到了体现。
- 将应用与数据各自分层处理,这样就解放了ECS的CPU与IO压力,这也是提升性能的体现
- ECS放在SLB后端,这样ECS可以不分配公网IP,而SLB是由阿里云来保证它的稳定与安全的,这样ECS上的成用也提高了安全性
基础架构存在的问题:
- 后端的ECS集群的扩容或缩容是重要人工讲行干预的这是十分不人性化的,尤其是当业务压力增大的时候,人工处理的方式往往存在一定的滞后性,对于业务面言。这种扩缩显得不平滑。
- 整个架构放在经典网络里面,由于经典网络是其于三层IP网络部署的,因此隔离性与安全性还是存在隐患的,尤其是像ARP,广播风暴这种网域网问题并不能完全克服。
- 就静态资源来说,还存在着由于用户所在地区与服务器所在地区的远近不同所导致的连接品质差异,以及用户体验差异这样的问资源按需分配。
弹性架构的特点:
资源的弹性
资源按需分配
随时对基础设施扩容或缩容
业务的弹性
支持浪涌型业务
应对波峰波谷
服务的弹性
无需变更软硬件设计
根据服务请求自动扩大或缩小系统服务处理能力
弹性架构的典型场景
游戏
上线前预估用户10W-100W,以最大规模采购,造成资源浪费
爆发期时用户实际达到200W,现有资源无法及时扩展和部署
下行期用户减少到50W,原有资源浪费
电商
促销期订单增长10倍,访问量增长100倍
数据库压力延增导致宕机
设备采购需满足最大要求
平日资源闲置
移动APP
服务具有周期性,例如每晚19:00-24:00的高峰时段,访问量为非高峰时段的10倍以上。
传统扩展无法满足分钟级别的快速部署上线
弹性架构的扩展方式
垂直扩展
1.升级原有硬件
2.通过增加单个系统成员的负荷来提高整个系统的能力
水平扩展
1.增加新硬件
2.通过增加更多的系统成员来提高整个系统的能力
二、基础设施层的弹性架构
计算的弹性
纵向的弹性,即单个服务器的配置变更,利用横向的扩展和所见,配合阿里云的弹性伸缩,可以做到定时定量的伸缩,或者按照业务的负载进行伸缩。
存储的弹性
阿里云拥有很强的存储弹性,当存储量增多时,对于传统IDC方案,您只能不断的增加服务器,而这样扩展服务器数据是有限的,阿里云提供海量的存储,可以按需购买,为存储提供最大保障。
网络的弹性
云上的网络也具有非常大的灵活性,阿里云的专有网络中,所有的网络配置与线下IDC机房的配置可以是完全想通的,并且可以有更多的可能性,可以实现各机房之间的互联互通、安全域隔离以及灵活的网络配置和规划
三、网络层的弹性架构
云上云下融合的阿里云网络
阿里云网络的弹性实现
阿里云网络产品的弹性能力
垂直方向
1.部分产局如EIP等可实现不停机升降级带宽
2.部分产品如SLB/NAT等可实现升降配水平方向
水平方向
1.VPC支持增加交换机数以实现网格容纳能力的水平扩展
2.底层能力自动延展,不必担心单机性能瓶药
四、应用层的弹性架构
应用层系统的垂直扩展:
定义:将业务处理流程上不同部分分离部署,实现系统伸缩性,在一个复杂系统中,由于天然存在的分工(开发、运维等不同工种),按模块分离是比较容易想到与实现的,传统做法是采用一台高配机器将所有的模块都部署在同一台服务器上。
垂直扩展--传统实现的弊端
1.购买升级所需的硬件,耗时比较长
2.升级要长时间的停机,请成服务的停止
3.硬性升级过程两随着业务发展不断重复
4.硬性利用率不高
垂直扩展--阿里云实现
ECS层面:当业务波峰资源不足时,随时调整配置,重启机器即可生效,十分钟内完成扩展
RDS:当业务波峰资源不足时,随时调整配置,不重启机器即可生效,分钟内完成扩展,配置即生效
应用层资源的水平扩展
定义:将不同的业务模块分离部署,实现系统伸缩性粒度更细,但管理起来更复杂
传统实现
ECS层面,单个应用服务器扩容为多个相同功能的应用服务器
数据库层面
单个数据库服务器扩容为多个相同功能的数据库服务器
面临的问题
购买新硬件,成本担入大
硬性上线周期长
硬件利用率不高
阿里云实现
1.当业务波峰资源不足时,在管理控制台创建新的实例
2通过镜像的功能可以快速都置应用环境,10分钟内可启用或者释放百台ECS
- 当业务对资源实降低时,随时进行实例的调整,充分利用硬性资源
水平扩展 -- 负载均衡的介绍
DNS服务:通过DNS域名解析格清求分发到不同的应用服务器
缺点:
1.更新不及时
DNS缓存的时间比较长,修改DNS配置后,还是有很多用户会继续访问修改前的IP,这样的访回会失败,达不到负载均衡的目的,并且也影响用户正常使用业务
2.扩展性差
DNS负载均衡的控制权在域名商那里,无法根据业务特点针对其做更多的定制化功能和扩展特性
3.分配策略比较简单
DNS负载均衡支持的算法少:不能区分服务器的差异(不能根据系统与服务的状态来判断负载,也无法感知后端服务器的状态,对DNS负载均衡的一些缺点,对于时延和故障敏感的业务有一些公司自己实现了HTTP-DNS的功能,及时用HTTP协议实现一个私有DNS系统,这样的方案和通用的DNS优缺点正好相反。
传统负载均衡实现
硬件负载均衡:通过单独的硬件设备来实现负载均衡功能这类设备和路由器、交换机类似,可以理解为一个用于负载均衡的基础网络
优点:
1.功能强大:全面支持各层级的负载均衡,支持全面的负载均衡算法,支持全局负载均衡。
2.性能强大:软件负载均衡支持到10万级并发已经很厉害了,硬件负载均衡可以支持100万以上的井发。
3.稳定性高:商用硬件负载均衡,经过了良好的严格测试,经过大规横便用,稳定性高
4.支持安全防护:硬件均衡设备除具备负载均衡功能外,还具备防火墙,防DDoS攻击等安全功能
缺点:
- 价格昂贵
- 扩展能力差,硬件设备,可以根业务进行配置,但无法进行扩展和定制
阿里云负载均衡实现
与传统硬件型负载均衡自建方案相比
安全稳定:系统安全性和稳定性很高,可胜任生产要求
功能强大:提供4层和7层的负载均衡,无论是Web服务器还是中间服务器,都可完美支持
无单点故障:集群部署、无单点故障,并且多可用区,从而保证高可用
与开源的负载均衡自建方案相比
按需计费:只为使用的流量付费
无限扩容:无性能、容量的限制,且自动扩容
配置简单:调用API或使用Portal都可以随时配置负载均衡,立即生效,灵活简单
弹性架构的案例
项目背景:
某礼物是一家行业领先的创立礼品导购网站,创立于2014年,公司位于北京市海淀区,并在上海、义乌、深圳设有分支机构向。公司主要商业模式为从淘宝、天猫、京东、亚马逊等各大电商精选品质好物,解决用户选礼难、送礼难的困扰。公司近两年业务发迅猛,同时触角逐渐延伸到线下代工工厂当点中去,希望借此完成业务模式升级。目前的IT基础架构仍然使用传
统方式,所有软硬件资源位于北京某IDC的双线机房,此架构记不适应飞速发展的互联网化的业务需求,成为公司发展的极大制约。
原始业务架构:
架构特点:全部是自建方案,中间件实现均为采用开源方案。
应用层:
- 购买硬件负载均衡设备F5来实现负载均衡。
- 前端服务器已实现无状态华,初步完成应用与数据分离。
数据库:
- 使用mysql数据库,版本为5.5。
- 订单分销相关业务表数据量较大,目前是代码实现的初步垂直分离(按月底归档数据)。
3、自建MySQL主从同步,以硬编码的方式实现了初步的读写分离(代码性能较差,较不稳定)。
4、以当前业务的发展增速判断,对于分库分表的需求较为强烈。
静态资源
- 购买硬件负载均衡设备F5来实现负载均衡。
- 静态资源服务器分为两类:文件服务器与图片服务器。
- 文件服务器主要用于公司内部的文件存储,水位和压力较小
- 图片服务器用于存放商品的图片、模特图等,水平和压力较大,并且增长迅速,扩容不便
原始架构痛点分析
应用层
- 负载均衡器处理能力有上限
- 负载均衡器在高并发访问时无法快速弹性部署
数据库层
- 数据库服务器垂直扩展周期长
- 主数据库服务器水平扩展难度高
静态数据层
- 存储容量扩容需人工干预
- 存储能力扩容有上限
云上架构设计方案
应用层
SLB(负载均衡软实现),利用SLB的弹性扩容
web服务器原有的应用部署在ECS(4核8G)上
使用ECS镜像快速部署新的web服务器
使用弹性伸缩AutoScaling应对类似情人节等节日的访问量PV数倍增加的情况
定时任务:在节日前一天零点自动创建两台4核8GECS,并在节日二天零点自动释放
预警任务:当CPU负载超过60%的时候增加2台4核8G的ECS:当CPU负载降到30%的时候,减少一台4核8G的ECS
数据库层
主从数据库自动同步
可以快速部置只读数据库
通过DTS将数据导入到云上RDS
静态数据层弹性实现
把原有的静态非结构化胶据迁移到OSS上的4个Bucket进行存储
存储资源的自动弹性扩展
存储空间可无限扩容
4个bucket的权限都设置为public-read
五、CADT部署弹性架构实验(ACE考试重点)
实验背景:
杭州某电商公司的网站在初创时间流量很少,初期是自己购买服务器搭建网站,但是在促销活动日,类似双11等购物节的时候流量的增加,是平时的5-10倍,所购买服务器无法满足突发流量的需求,现在迁移到阿里云上,通过弹性伸缩架构的设计满足客户的相关需求。
需求:
1.根据客户需求CADT设计方案架构图
2.ECS服务器搭建Wordpress.发布阿里云官网截图,通过浏览器访问SLB公网IP能够成功访问WP主页
3.WP成功发布后生产共享镜像WP,作为ESS弹性扩容的模版
4.设置ESS策略和告警信息,告警信息分为cpu busy和cpu_idle两种场景,当监控制CPU利用率大于80%时触发cpu busy告警并自动增加2台ECS服务器,当cpu利用率小于50%时触发cpu idle告警并减少2台ECS服务。
实验辅助工具:
ECS中压测命令:
yum install sysbench
Sysbench cpu --cpu-max-prime=2000000 --threads=2 --time=1000 run
注释:
Cpu-max-prime 参数是sysbench cpu 测试中用于制定最大质数。这个参数制定了计算质数的范围,即程序将计算从2到指定最大质数的所有质数。在此例中,该参数设置为2000000,意味着程序计算从2到2000000之间的所有质数。
作业提交要求:
1.CADT架构图截图
2.资源部署或功截图
3.Wordpress部署成功,并发布图片截,作业提交要求
4.压测后,ECS CPU利用率瞬时飘升载
5.Cpu_busy报警截图
6.触发弹性伸缩后的实例截图