开发者学堂课程【企业运维之弹性计算原理与实践:【视频】-《ECS 基础入门》】学习笔记(三),与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1039/detail/15277
【视频】-《ESC 基础入门》
内容介绍:
一、课程介绍
二、什么是 ECS
三、ECS 基本概念
四、ECS 基础组件
五、ECS 运维最佳实践
六、ECS 常见问题排错
七、ECS 基础概念-小结
八、实验
六、ECS 常见问题排错
下面讲 ECS 常见的问题排查,重点讲 ECS 的生命周期。很多客户问的问题是实例创建失败,或者是实例停止不了、释放不了这些情况。
1、ECS 生命周期
(1)总结 ECS 本身的生命周期是什么样的?当 VM 收到创建实例的请求之后,会进入一个 pending 的状态。总共有七个状态,分别是 pending、starting、running、stopping、stopped、destroying、destroyed,destroying 和 destroyed 是释放,释放用的相对没那么多。中间态就是稳态,稳态就是理想态,理想态并不是中间的过程,而是最后达到一个理想的结果,中间态有pending、starting、stopping,这几个是中间态,就是还没有达到真正理想的状态,在这个状态下很可能会出现一些问题。可能会出现以下问题,从创建实例到 pending 的过程当中,后台会查看这台实例到底有没有欠费;其次是后台到底有没有资源可以开,比如说这里面会涉及到两大块,会有账号的费用,这台 ecs 是否欠费,有没有性控的一些要求等等。
(2)第二块叫资源的调度,比如申请一个巨大规格的实例,资源的调度可能不太够,暂时在所选的区域没有发现合适的集群、合适的节点去调度给所创建的资源,这个时候可能会处于pending 状态,pending是一个中间状态,后面可能会变成 feel bel,可能会报错。如果是这样的情况下,一般控制台会给一个报错信息,比较明显的报错信息,如果没有的话会报一个 interl,或库存不足。这样情况下,一般来说会有一个request ID,request ID 可以记下来提交给阿里云售后的人员,到底 request ID 后台是用来做什么的,通过 request ID 作为唯一标识来去判断整体创建的,只通过这个去做判断。
(3)第一步过了之后就到了starting,starting 代表后台的控制面,收到了创建的请求,需要正式开始去建,在已经得到的调度,在上面去加载镜像,去创建 VPC,把网卡 report 后台的资源组装起来,这个过程是这台实例在 starting 的状态。这个过程会出现的问题,比如说 starting 失败,可能会进入 stop,甚至是进入 file 的状态。一般会有哪些问题?这个机器在关机的过程中发现这台虚拟机所在的物理机硬件出现问题,这是有可能的;还有一些可能就是速度机上的软件,有一些进程出现了异常,导致这台机器开不起来,没有办法正常启动;还有一种情况是用到自定义镜像,自定义镜像本身没有配置好,没有装相应的驱动,没有自定义一些脚本,最后导致这台实例没有正常的处于理想的 running 的状态。无论是 Linux 还是 Windows,自带一些阿里云的进程,这些进程会保它的心跳,根据心跳判断这台实例到底有没有起来,比如说在Windows 当中一直处于转圈的状态,在这种状态下真正的服务是没有提起来的,这种情况下一直处于 starting 的状态,没有进入到最后稳定的 running 的状态,就会导致超时创建超过多长时间,会显示 file、stop 的状态
(4)如果这些都顺利完成了,可以进入到正常的 running 状态。在 pending 状态下可能会遇到一些问题,starting 状态下遇到的问题,当需要把这台实例停止的时候,有可能会有哪些问题?第一个是之前提到的把 os 内部的阿里云使用到的进程关闭掉,导致控制台发出信号 osname 没法收到,这种情况下关闭是不成功的,os 没有相应的。stop 会有几种类型,有停机收费跟节省停机两种模式,以前叫做停机收费跟停机不收费,但是停机不收费是收费的,所以改成节省停机,就是省钱,但是还会花一点钱。停机收费顾名思义就是保留所有的计算资源,包括公网IP,计算资源包括 VCPU 和内存,实例 ping 在这台数字机上,不能动,资源还是自己的,什么时候开机在这台机器上集起来 ,但是会收费,因为占有资源。节省停机会把这些计算资源释放,包括固定的公网IP释放掉,这部分计算资源的钱是省下来的,会节约一大比开销。 节省停机还会保留云盘的数据,还有一些 eip,如果用的弹性公网的IP是会保留的,这些还是会收费,所以叫节省停机。停机之后处于 stopped 的状态,还会涉及到实例释放。如果是包年包月还没到齐是不支持释放的,会有释放失败的可能性因素。如果需要提前释放,可以走客服申请退款或控制台上先转成按量付费在进行释放,会根据使用包年包月的时间做相应的配置,或者是退款之类的。实例释放之后,所有实例的ID、固定的公网IP、系统盘、数据盘,如果没有做特殊的配置,比如说保留数据盘等等,这些都会随着释放资源都释放掉,是不可恢复的。
(5)有很多客户或者运维,无论是通过脚本,还是通过一些API的调用,参数可能会写错,比如说某些正则匹配符号或者是变量的授权写错了,导致误释放了一些实例,是没办法恢复的。如何避免这种情况?释放的时候实例有释放保护,就是相当于打一个锁,如果是重要的实例,可以把这个锁开启。有的时候可能是同一个 UID 下的子账号导致的这样的问题,可以把释放保护开启。
2、下图最主要的是在北京冬奥做的一些预案,或者说是排查的思路。
(1)这里面都是常见的一些问题,包括在冬奥护航的时候提前写下的一些处理方法,着重讲一些 top3 的问题,最主要是通过这种思路在日常运维当中做一些提取跟普及。Top3 的主要场景第一个是实例宕机,实例宕机是不可避免的,有一些物理损耗和硬件的损耗会导致实例宕机。首先,在这种情况下,要评估实例宕机对业务的影响,业务的各个环节是否做了高可用,如果没有做高可用,请在架构上把高可用做起来,避免单一节点的失败或者单一节点的宕机导致业务受到影响。这里面给出了一些预案,比如通过 SLB 弹性伸缩做相应的伸缩的功能,这些都是常见的问题。
(2)第二个比较常见的问题是,单 ECS 出现异常的情况,在日常运维当中或在一些重宝当中,很重要的一点是如果是 SLB 的节点,或者是逻辑的节点,可以先把节点做一些移除。原因是止血,保障流量分发到这个节点会比较慢,同时影响到业务,可以快速的把节点移除,做一些弹性伸缩的动作,保证新生成一些节点负载进来IDE需求。如果没有负载均衡,肯定要以最短的时间优先恢复业务,就是要做重启。重启不行,还有一些负载高的情况,做一些纵向和横向的扩容都是可以的。
(3)我的运维或复航的方法论来讲,总结下来有几个字,第一个就是要提前做一些压测,对于 ECS 或者是整体的业务压测,这样才能知道业务系统的瓶颈值在哪里,或者业务系统现在最大的承载力在哪里?和流量对齐护航的预期是否匹配,压测的工具有很多,包括阿里云的 PDS、Permiter,包括一些其他的压测工具,压测是非常重要的一部分,这样才能知道系统的瓶颈在哪里,从而做一些优化。第二个是预案,像我现在写的排查的预案,当真正遇到比较大型的运维场景,其实最重要的优先目的是恢复业务,而不是排查原因是什么?有了预案就会根据预案更从容的做相应的执行。预案的核心思想就是隔离,隔离是刚才提到的一处节点,然后重启,这是持久的方式。还有限流降级,把一些异常的流量做一些限制,保证异常流量不再影响到业务系统,这些都是预案当中要考虑的关键的几点。
(4)最后一点是复盘,出现了问题,在故障或问题止血之后,要对整体的链路包括分析日志或者说各个产品、各个业务系统去做相应的复盘,确保这个问题下次不会再发生。整体来讲,对于运维的方法论就是要做压测,然后准备预案,预案当中需要考虑到的一些因素是,快速隔离、快速止血,通过限流降级的方式避免影响扩散。最后就是问题解决之后怎样快速复盘,避免这个问题再发生。
七、ECS 基础概念-小结
下面复习一下基础的概念,主要讲了 ECS 所使用的常见的场景有哪些,ECS 的基础的概念,包括地域、实例规格的命名方式、规格级的应用场景以及常见的一些基础组件,包括云盘,云盘里面还涉及到了跟 OSS 和 NAS 对比;其次就是镜像、快照、用于虚拟防火墙的安全组,包括云上的网络隔离 VPC。接下来介绍了三个比较大的组件,三个组件在运维当中常常遇到的问题,以及对于大型运维场景下可以使用到的经验,最后从 ECS 的生命周期讲到 ECS 在启停实例的时候会遇到哪些问题,并且怎样去解决?其次就是 ECS 整体的运维跟护航思路,以及具体的一些预案,这就是今天主要讲到的内容。
八、实验
1、这个实验跟本次的课程密切相关,主要是讲解 ECS 的数据,数据备份和数据恢复的能力。第一步是创建实例、创建资源,创建好之后会看见一台 ECS 服务器。
实验叫作 ECS数据管理实践-备份与恢复,会去创建一个文件系统,然后写一个文件在上面,去建快照,简单来讲就是模拟数据丢失之后,怎样通过快照的方式恢复数据。第一步是创建好这台实例,然后远程连接,通过 ess 协议的方式连接公网IP,root 是登录的用户,密码直接使用默认的密码,登录进去。
输入 df-h,现在只有一个挂载件,对于 root 来讲,有一个 vdn 的挂载件。
有两块快存储的设备在上面,一个是 vda,一个是 vdb,vdb 还没有做分区。接下来把 vdb 这个盘做一个分区,创建文件系统,挂载到其中的一个目录上。
2、把 vdb 这个盘做一个快照,模拟数据丢失之后的快照恢复,比如现在要格式化创建分区,可以先做F Disk 操作。
看到里面 vdb 这个盘还没有做分区,可以通过 fdisk vdb,这样就进到了vdb这个设备做相应的操作。
比如打n,n代表new,新建一个,建一个 premiter 分区。Partition 作为分区一,把它空间化一下,选择默认的需要的操作空间,这样分区空间就划好了。输入w,代表reat,把它写进去
这样分区表就建好了。fdisk 看一下跟刚才的区别,
现在新建的一个 vdb1 的分区表,这样可以通过创建文件系统将数据盘进行格式化,实验上写的是 ext3,也可以用ext4,做一下格式化,然后文件系统就创建成功了。
创建的过程可以先不用去看,创建好文件系统之后需要创建一个名称叫 alidata 的文件夹,自己做一个挂载,挂载在alidata 下。
现在里面是没有数据的,在创建一个文件叫 hello aliyun。现在文件处于阿里云 found 里面,目录下面会有 test.txt 文件。
在现有状态下建一个快照,理论上快照应该包含现在所处的磁盘的状态,这上面有相应的密码,进行登录。
3、回到上次实验的步骤之一,查看 ECS 的控制台,可以看到那台实例。
实例上有两块磁盘,一块是系统盘 vda,另外一块是数据盘 vdb。
刚才在数据盘上写了一个文件叫 test.txt,在这个状态下先创建一个快照。正常来讲,是业务系统,要设置自动快照策略,testfalover。
快照创建成功后,可以在控制台下点快照查看,可以看到快照的进度。
接下来回到远程登录当中,将文件删除,模拟数据被误删除的情况,这种情况下会发现 text.txt 不见了。
模拟客户的一些脚本,或者是一些误操作,把数据删除掉之后,通过快照做回滚。找到快照,点回滚磁盘,回滚磁盘会出现一个提示,只有已停止的实例才能回滚磁盘,所以需要回到实例本身,把它停止。
停止中就是之前提到的 stopping 的状态。停止完之后操作快照回滚磁盘,回滚之后会有一个立即启动实例,点击确定。现在实例已经是正常运行当中,回到远程连接的状态下,再远程登录上。这个时候可以看到目前挂载的情况,因为它是回滚的磁盘,挂载不见了,需要重新做一个挂载。刚才的指令是 mount /dev/vdb1,在 alidata 下,挂载之后再到 alidata,再去看的时候就会发现 test.txt 重新通过快照的方式进行数据恢复。前面ll是不见了的,通过快照恢复方式将文件又重新恢复出来,这就是快照所使用的方式,以及它真正的用途。