开发者学堂课程【企业运维训练营之数据库原理与实践课程 :视频 -RDS常见问题排除及 DAS 自动弹性伸缩(三)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1201/detail/18302
视频 -RDS 常见问题排除及 DAS 自动弹性伸缩
四:DAS 自动弹性伸缩讲解
第二部分介绍 DAS 自动弹性伸缩,也是关于 DAS,介绍 DAS 就是自动弹性伸缩的原理与分类,介绍 RDS, Mysql 的自动弹性伸缩类型,案例和配置,还有最后带大家实操,看 RTC, Mysql 的一个自动弹性伸缩是怎样的。
首先大自动弹性伸缩的原理与分类,我们一般在自建库我们可能需要提前规划好比如未来1到2年或者2到3年的一个业务容量,可能对这种硬件定死,但我们在使用某种云上的 RD 输入有个优点,我们可以把底层的资源看成是一个资源池,我们可以随时发起一个变配的操作。但是这种其实还是不够智能。我们就可以通过DAS的这种自动弹性伸缩,让它自动地帮我们检测到相应的比如规格不够或者像 redis,比如带宽不够。它能够帮我们去自动地去做一个扩容扩带宽的这么一个动作,来帮我们去减少一个人为的操作,可能我们收到告警,再去操作,它中间可能已经对我们业务产生的影响时间也是比较久。所以有这样自动的这种方式,也能够帮简化我们的一个日常管理。这里 DAS 自动伸缩的分类,它支持这种规格扩容。对于 redis 就是分片弹性伸缩,还有贷款扩容,存储扩容,秒级扩合,弹性策略 Service。这里面需要注意到,因为我们是主要讲 RDS 系列,大家注意对于 RDS,Mysql,它主要是支持规格扩容,存储扩容,还有秒级扩合以及 serverless, 我们的 RDS 里面也支持这种 serverless 的类型。
大家要注意的是什么?除了支持的引擎要关注,比如规格扩容,比如是有一个闪断,而且它只支持云盘实例,而且它只支持这种Mysql 的新架构的实例。所谓新架构,比如我们在内部,它基于这种 K8S 形态部署,这种相对而言是我们最新的形态,现在目前来说,如果还是老形态,也是鉴于升级到这种新形态,这样对实例的稳定性也是能够做更提供更好的支撑。怎么去确认他是不是新架构实例?我们是可以通过去调用我们 describe d b instance attribute 这么一个a、p、I 接口,去查看 kind code 的返回值,去判断它是否为我们的新架构。
关于存储扩容,大家要注意,它也是只支持云盘的,这云盘再细就是我们就支持这种 ESSD 云盘才是无损,这是无损的。注意它不支持回缩的秒级扩核,它扩核的原理其实和它的规格也是相关联的,它只支持这种本地通用型实例。之前和大家介绍过这种通用型的实例,它可能会存在 CPU,因为它没有做一个硬性的 CPU 的绑定,所以它是可能存在 CPU 竞争的一个关系。但是它有个优点,我们可以随时地通过把它底层的 CG group 打开,比如从 2 核可以限制到 4 核,能够快速地使用到更多的 CPU 核数,这种秒级扩合。它也是没有散断,也是可以自动回缩的。届时给大家演示的实验,也因为它是创建出来,实例是本地盘,所以它对应的也是这一类场景。 solve list 完全是计算和存储,都是全弹性,这就先不做过多的介绍。主要它也是支持云盘,因为你需要存储扩容,它有存储的全弹性,它也只有这种云盘能够实现。
在规格扩容,我们需要指定一个观察窗口,在观察窗口比如我们的 CPU 利用率大于70%,它就会触发一个扩容的动作。如果扩容后依然平均值大于阈值,它还会继续扩容。但是扩容的规格不会超过我们设置的规格上限,我们在基本信息这里设置,它是不能够设置回溯配置,我们需要在 DAS 那制止功能开关配置,在这里也可以去配置。
存储扩容,避免当我们磁盘打满时,我们实际就变成只读,不再提供写的功能,就锁定。这时比如对于云盘类型的实例,我们可以设置存储扩容,比如指定可用空间小于多少时就存储扩容,而这也可以指定通过指定一个上限,避免存储扩的太大。也是可以通过这去指定的。
秒级扩核我们也是可以设置,比如关车窗口, CPU 触发阈值。回缩即关车窗口设置后,比如 CPU 达到多少,它会触发一个扩容。这个扩容动作本身因为它是底层,直接改 CG group,所以它对业务上来说是一个无感的。
弹性策略是用在什么情况下?我们很多时候可能我们有几十个实例,这个时候如果一个一个配置,就很麻烦,我们可以通过去配置一个相当于弹性策略模板,后续我们就可以基于模板批量运用到多个实例,避免我们重复的劳动。
弹性策略目前有两类,一类是定时自动弹性伸缩。这种预测的它是以过去 10 天的历史数据预测未来 24 小时的指标,注意它仅预测不执行,它只给出扩容建议,不执行扩容动作,要注意。像下方给大家列出的截图,也是一个预测型的弹性伸缩,也是仅预测不执行。所以如果有人使用则需要小心它是不会实际执行的。
大家可以配置相应的事件通知,接收到通知再看是否要做相应的配置。第一次自动弹性伸缩我们需要先创建一个相应模板,指定一个应用比如周业务周期性负载,特征比较明显,每天的早上9点到下午6点,这个时间是业务高峰,我可以去配置一个定时自动弹序设备,指定到每天在这个时间段就做一次变配。
这是关于定时自动弹性伸缩的一个案例,可以看到比如它的自动弹性伸缩的配置是一个定时伸缩,它应用的策略名是什么,原规格是什么,目标规格是什么,它的开始时间,结束时间我们都能够从这得到。它也是在我们一键诊断之前大家看到位置新增弹性策略。它是可以个预测型的,一个是定时自动弹性伸缩。我们要注意它预测是在每天的 0 点到 1 点间根据过去时间数据进行预测,一天就相当于预测一次,也是基于 CPU 的预测 ,CPU 的使用率来做一个告警,比如配置为80%,如果预测到你的目标未来 20 小时会超过80%,他会给你一个扩容建议。
定时自动伸缩,这需要注意它只支持共享型云盘的实例,它会让你比如指令需要调整的规格,策略它的一个生效日期是什么?比如我只需要这个月生效,下个月就不再生效,就把时生效日期指定。如果我不是一个重复的动作,比如只指定明天需要做这个动作,我就不支持。如果是每天他需要都有这么一个动作或者每周有,每周3或者每周5有一个动作,或者每月有一个动作,可以在这做一个指令。
注意比如这定时指定按天持续时间,它是不能低于一个小时,这是需要注意的地方。
关于如何设置定时弹性伸缩,一个是在 RDS 控制台的自制中心,自制开关,另外是通过 DAS 控制台的管理和设置去对应的设置,即弹性伸缩去指定相应的实例。
下面给大家做一个补充,关于 DAS 性能扩展,之前给大家看到是 DAS 弹性伸缩,很多都是云盘,共享型云盘。对于本地盘,它没有那么多。现在 DAS 的性能扩展,它是可以支持这三种的类型。但是要注意,我们的本地盘它只能扩 CPU 和 IOPS ,不能扩内存,所以遇到这种场景,如果你需要扩内存,就不能用这种方式。
云盘的实名它是可以扩这种规格,它也是可以去配置的时候指定你的扩容的规格。在什么地方去配置,在一键诊断的自治功能开关中,我们也可以像这个是云盘的实例,你也可以在这去勾选自动弹性扩展,把 CPU 当大于多少时做一个扩容,这指定一个观察窗口期是多久,是否要需要回缩,回缩静默周期是多少,都是可以在这进行相应配置。
本地盘的实例,没有让大家指定规格,因为它只是去扩 CPU 和 IOPS,它主要的还是去通过 CPU 的指标来判断是否需要扩合。
最后通过给大家演示实验 DAS 自动性能扩展,带大家快速了解我们 DAS 的场景。因为我之前已经做过,所以这我就点击再次实验。
首先点击创建资源,创建资源就先等他创建。
我先带着大家快速了解创建资源会给我们创建什么。他会给我们创建分配一个比如子账号,在子账号下会给我们创建一台 e c s, e c s 的规格它会给你创建告知。然后在这 ECS 上创建好后,我们都是需要在 ECS 上准备 CS bench,这是一个压测的工具,会对压测做一些配置,会给我们创建一台 RDS。RDS 实例我们需要提前准备什么?我们需要在 RDS 上创建 db for test 的空的数据库,然后再创建一个数据库用户,这里面用户我们就直接创建成一个高群用户,高群账号就可以对创建的 DB first for test 库就有读写权限。
当库和用户创建好之后,我们就可以执行命令来生成一个数据,这里面它会创建 250 个表,每个表它会有 1 万条数据准备工作。他创建的表结构大概如图所示。
在我们开始压测前,执行 CS bench 之前,我们就可以先到一键诊断,有个自制功能开关然后打开,待会我会给大家演示介绍。接下来大家可以在优化与限流里面自动弹性伸缩给它打开。
如果这是创建本地盘实例,而这截图是一个云盘,所以大家等下查看不用在意,你只需要观察 CPU ,一个回缩时间,两个时间观察就行。现在可以看到已经把相应的 ECS 和 RDS 给我们创建完成,生成了子账号,信息也具备。
当我们把弹性伸缩开启后,我们可以去执行 CS bench 压测命令进行压测。执行压测后,我们就可以去观测我们的 RDS 的负载是否在对应的时间周期之内,观察配置的周期内做扩容动作。
现在来说我们先开始操作,首先我们先登录子账号,子账号的密码,我们可以复制。登录后,我们继续进入到 RDS 控制台,因为实例刚创立出来,我们可能需要刷新。
我们可以在概览里查看他给我们创建的实例在哪个位置,在哪个地域下。比如可以看到这里有一个实例,它是在上海。我们切到时令列表,切换到上海地域,就看到这个实例。我们可以和实例名比对,比如这 912 W,我们可以看到这个实例。
我们点击实例,进入到实例信息。首先我们需要创建一个数据库,数据库名就是 DB for test,我们可以直接复制,因为我指定使用 UTF 8 字符集。
我们再创建一个高群账号,比如我使用姓名把它指定成高群账号,再创建密码,我这输入阿里云 TEST 123。如果大家创建一个普通账号,一定要对 DB for test 进行授权。
创建数据库和创建账号,我们也可以一步到位,把相应的 DAS 的功能开关打开,在自治中心自制功能开关。在下面自动弹性,大家可以观察到它的 CPU 利用率,比如观测窗口,我可以稍微调整,前面让它要持续三分钟后如果还是大于70%,再进行扩容。回收窗口,我设置小值。如果比如 CPU 小于比如 30% 后,让它持续一分钟,让它自动回溯。点击确定 ,RDS 的配置就完成。
刚才带大家看的有知识中心里面,比如有异常事件,有优化事件,有弹性深入事件,等下我们可以看到这两个是因为它 CPU 打满,我们就可以看在这异常事件里,它有没有给我们诊断到弹性伸缩式里面有没有给我们做弹性伸缩扩容的动作,这是 RDS 的配置。
现在我们进入 ECS ,ECS我们需要复制 IP,密码粘贴。下图是会使用到的 ECS。
我们现在进行生成数据,首先要修改一些地方, Mysql host 需要修改为我们的 RDS 的连接地址。 port 是我们 3306 默认的。用户为我们刚创建,叫姓名user。密码是阿里云 TEST 123。这些修改好后,我们可以回车。刚才忘记安装 bench,前面还有两步没有完成。再把遗漏的动作重新执行。这时候我们再上翻,再敲,就可以看得到它在创建表,每个表它会插入 1 万条数据,它每个表它会有一个二级索引。刚才 RDS 的端口,我们可以在这来确认,比如它的连接地址和端口,我们是可以在这能够进行确认的。
等测试数据生成好后,我们就可以执行压测。我们提前准备这一部分进行修改,这已经把端口给我们指定成 3306 ,这就不用再修改,等他完成,我们就可以创建去做压测,到时我们压测可以在监控与报警这来查看我们实例 CPU 的负载,因为我们弹性伸缩监控的 CPU,我们就可以到观察 CPU 的使用率情况。比如看 CPU,虽然我们在导入数据,但它 CPU 还未达到百分之百,也没有超过我们 70% 的设定的阈值,所以它是不会做相应的扩容动作。等表创建完成,再进行压测的命令,我们再次切回我们可以观察资源使用率的情况,可以看到当我重新压测的时候,它的 CPU 很快会再次上升。
我们需要等待一段时间,比如现在大概是20:33,我们设置三分钟,所以到三十六分时,它可能会触发弹性伸缩的动作。我们需要现在需要等待。在等的过程中,我们可以先到基本信息里查看我们创建的使命是什么。比如它是一个本地盘,它的规格,本地盘,是一个 高可用型,通用型。注意这是一个通用型的,它的规格是一盒1G,连接数是300,最大 LPS 是600。
接下来我们需要注意 CPU 内存, LPS 不会改变。我们要注意这三个哪些是发生变化,它扩容后我们可以留意。我们再切回监控,可以看 CPU 现在已经是打满状态,我们再等待 2 分钟就可以查看。
目前我们在一键诊断这比如异常事件,它其实渗透事件,优化事件,它,这都是空。待会我们看这都有哪些事件产生。我们先继续等待,可能还要等1分钟。
现在他已经捕获到异常事件。我们先看异常事件,可以看到它捕获异常时间,这是没有做根因分析和建议。我们看异常快照,他是把相应的信息展示出,比如我们点击优化,可以看它的执行计划,限流就是点限流,这就是关于异常事件。现在再刷新,应该有弹性收缩事件,还未出来,需要继续等待。确认我的开关是开。现在有弹性伸缩事件,我们可以看到。我们点击详细。我们可以看到它实例的 CPU 大于70%,建议是什么?执行成功扩容。成功扩容后,我们到基本信息看现在实例的规格是怎样的。在期间我们可以压测先暂停,大家再看,因为现在还有缓存未刷新,我重新刷新。
大家注意哪些信息是有变化,大家看到 CPU 是扩核, LPS 增加了1000,所以以后大家在使用这个功能需要注意。比如每增加一核,原来是1核,它会按照翻倍去扩容。比如2核,它会翻到 4 核。比如你是八核,它给你翻至16 核,但它不会连续放核。比如现在两核变成四核后,后面它就不会再扩容。每增加一核,我们 LPS 会增加1000,所以这也是有变化。但对于内存,它是没有变化的。所以这里面大家要注意。我们扩容,它只会扩两处,一个是 CPU,一个是内存。当然是针对本地盘,如果是云盘,它是可以指定规格和最大规格。如果我们这种打满后,当我们设置的最大规格是可以持续的往上并配,直到达到我们的最大规格。所以本地盘和云盘有一些差异。这里大家需要注意。
现在压测已经暂停,我们配置的回缩时间是 1 分钟,我们等可能 2 分钟,后面看它会多出一个弹性伸缩事件,一个回缩会从 2 核回1核。
看出像这个点开我们查看这就是缩容至1核。
实验我们就讲解完成。