更多精彩内容,欢迎观看:
带你读《云上自动化运维宝典》——万字长文带你了解 CloudOps自动化运维的奥秘,助力云上业务高效稳定运行(1):https://developer.aliyun.com/article/1405386
前面主要介绍了CloudOps套件的核心产品,但它包含的产品远不止这些,还包含很多小的工具。上图展示了目前阿里云ECS CloudOps全部的产品。
最底层是服务于IaaS层的所有资源,可以分成两大块:平台侧基础能力包括计算形态、基础镜像、基础安全防护,客户侧的原子能力包括Guest OS管理、资源分组管理等等。
对于IaaS层基础资源的管理,我们提供的所有CloudOps能力可以分成五个维度。
成本优化方面,CloudOps提供了支持多种付费方式,也提供了一些成本优化的基础能力。
自动化服务方面,CloudOps提供了运维托管、批量自动化、运维通道的能力,包括刚刚提到的云助手。除此之外,我们还提供类似于VNC workbench的访问通道。
可靠性服务方面,CloudOps提供的能力也分成四个维度:最底层是资源的可观测能力,包括实例的健康状态、云监控,它能够对资源最底层的Metrics进行持续的观测。在此基础上,CloudOps还提供了事件服务,当底层出现问题的时候,我们可以通过事件的方式来通知到用户。此外,CloudOps还提供了自助问题排查的能力,能够从实例内外部的所有配置上给用户做问题的定位和排查,快速缩短业务受影响的时长。最后,CloudOps还提供了应用的管理来提升整个应用的可靠性。
CloudOps在弹性服务方面的能力也可以分成两个维度。最底层是根据业务需求进行弹性的扩缩容,包括弹性伸缩,能去做水平的扩缩容,此外还支持垂直的升降配,能够做预测性的扩缩容。同时,CloudOps还提供了弹性保障的能力,当业务有计划性的大规模的资源诉求的时候。比如双十一这种情况下,很多电商或者平台都会去做活动,所有服务都会有额外的算力需求。为了保证当时的业务需求能够得到资源的保障,用户可以借助CloudOps的资源预留或者购买一些预留实例进行资源锁定的,来保证业务在最高峰期,它的资源能够得到响应和保证。
安全合规服务方面主要围绕实例安全和操作安全。实例安全包括基础设施安全、数据安全、网络安全、GuestOs安全;操作安全包括访问控制、操作审计。在这两方面,CloudOps都提供了对应的产品能力。
以上五大维度最终服务于整个ECS的全生命周期运维。在此基础上,阿里云推出了一个新产品,ECS使用成熟度评估与洞察(ECS Insight)。它在这五大维度的基础上,识别客户在使用ECS的过程中面临的风险,提供优化推荐的建议,帮助业务持续提升在这五个维度上的能力。
下面我将围绕CARES这五个维度,分别举一个例子,让大家对每个工具的使用方式和适用场景有更直观的体感。
第一个是成本管理。线下我们在做资源的分权和分账的时候,更多的是依赖于个人所属的组织关系。在云上,我们可以通过标签服务,对云资源的使用方和所属的部门进行详细的标识,帮助用户对具有相同特征的云资源进行分类、搜索和聚合,提升资源的管理效率。
那么标签是什么呢?
标签本质上就是一个键值(Key:Value),我们的云资源最多可以绑定20个标签。举个例子,我们可以根据资源所属的地域、部门以及使用环境进行多维度的区分。因此,我们可以创建三个标签,对于每个资源,我们根据这三个维度对资源进行打标。一旦完成了打标,我们就可以从标签的视角来看详细的分类了。比如打完标之后,我们就能快速的查看北京地域所包含的资源有哪些,信息科技部这个部门包含的资源有哪些,生产环境的资源是哪些。我们也可以组合来看,北京地域下信息部的生产环境包含的资源是哪些。
除了查看资源外,我们还可以对这些打完标的资源进行多维度分析。比如,我们能通过阿里云的费用中心,查看打了特定标签资源的账单和费用支出是怎样的,这是我们进行成本优化的前提。
此外,一旦我们给每个资源打了标签,我们就可以通过身份认证管理RAM功能,来指定基于标签的策略。通过这种方式我们可以制定一些标签策略,对资源的创建和管理等等合规行为进行限制。比如,我们希望限制环境=生产部门的标签资源,它只能通过什么样的方式购买,或者什么样的人才能购买环境=生产环境的资源。这样既能使整个账号下的所有资源管理是符合规定的,也能限制未来新创建的资源也符合我们所制定的合规和成本的限制。
通过标签我们就能实现资源的分账和分权,提升整个资源在成本和安全维度上的管理的效率。
第二个是自动化。这里主要介绍一下使用运维编排OOS+云助手,实现大规模资源的管理。运维编排本质上是一个云上自动化任务编排的平台,它能够提供自动化任务的管理和执行。所谓的自动化任务包含批量操作、定时运维任务、事件驱动的自动化操作、跨地域操作等。最终,运维编排提供的是一个类似于自动化任务的管理平台,它能够实现基础设施运维即代码的能力。
而云助手是一款针对ECS的原生自动化运维通道,它是安装在ECS里面的一个插件。通过云助手,我们可以在不需要密码也不需要登录实例的情况下,在实例内部做一些命令的执行、文件的上传下载、批量任务执行等等。同时,云助手还能将非阿里云的服务器注册为阿里云的托管实例。在完成托管以后,我们就可以通过运维编排的工具,对阿里云的机器和非阿里云的机器进行统一的编排,实现混合云统一管理的场景。
上图下侧是通过运维编排实现蓝绿发布例子。在DevOps的过程中,当应用出现了新版本的时候,我们需要把业务的新版本逐步更新上线,这也就意味着我们需要对老版本的ECS进行逐步的升级,确保在业务在不中断的情况下完成新版本的升级。在传统模式下,我们只能自己写脚本或者手动实现,不仅效率低,而且容易出错。
通过运维编排,我们可以把一组老版本的ECS打上同一个标签,运维编排可以分批次的把这些ECS实例从负载均衡上卸载,并通过镜像更新的方式或者执行脚本的方式,分批次把目标ECS进行升级。在升级的过程中,可能需要先把ECS从负载均衡上解绑,更新版本,更新完之后再把ECS挂载回原来的负载均衡上对外提供服务。如果这个过程失败了,我们可以进行回滚。当第一批ECS执行完毕后,我们可以观察一段时间,确保没有问题后再进行第二批ECS进行重复的操作进行升级,直到最后一批资源被替换成新版本,这个滚动升级才结束。
与之前手动或脚本方式相比,通过运维编排我们只需要指定好需要分几个批次对这些资源进行升级、升级的方式以及在这个过程中我们要执行哪些额外的操作。运维编排会自动的把这个版本进行升级,提升整个应用的发布效率。
第三个是可靠性。阿里云提供了非常多精细化的运维能力来提升整个应用的可观测性和可靠性。可观测性解决了异常提前识别的能力,而可靠性是提升了整个应用的可靠性。虽然阿里云提供了业界领先的SLA,即单个实例的SLA在99.975%,而跨AZ多实例的可靠性的SLA是99.995%,但我们也无法说ECS是100%可靠的。如何进一步提升应用的可靠性呢?这里我们主要提供了三个能力。
第一,系统事件。阿里云在过去十几年服务上万家企业客户的经验中,沉淀了非常完善的故障预测机制和热迁移能力,当发现底层宿主机存在软硬件异常时,通过热迁移将其上的ECS无感地迁移到健康的宿主机上去,避免单个ECS实例不可用,最终实现了阿里云单个实例SLA为99.975%,业界领先。虽然单个实例的SLA非常高,但并不意味着ECS是100%可靠的。当ECS因为底层基础设施出现异常的时候,比如ECS底层的宿主机出现宕机,影响了上面的ECS,阿里云会及时的给用户推送运维事件,告诉用户,方便用户快速的感知基础设施的问题。同时,阿里云的故障预测能力识别到ECS底层宿主机的潜在宕机风险,如果ECS无法通过热迁移进行规避,阿里云也会通过主动运维事件(也叫计划内运维事件)提前通知用户,让用户选择业务低谷期进行响应。所以系统事件反映的是对底层基础设施可靠性的可观测能力。
第二,部属集。如果应用对底层基础设施的可靠性非常敏感,我们可以通过部署集来指定集群里的ECS在不同宿主机上的分布策略。比如我们可以指定ECS尽量打散在不同的宿主机上,这样能降低单台宿主机出现的问题,给整个业务集群带来的风险的影响面。
第三,ECS诊断工具。诊断工具可以一键扫描并识别ECS Guest OS的内部异常和外部风险。ECS外部问题主要包括ECS的售卖状态、安全组的配置策略、管控的状态是否正常;内部异常包括Guest OS系统配置、重要文件配置、常见服务状态等。通过ECS的诊断工具,我们能够快速的定位并解决ECS无法远程连接、无法启动、性能受损、重复宕机的问题等。
借助这三个能力,我们就能快速地提升应用的可观测性和可靠性,够缩短业务的受损时长。
第四个是弹性。这里主要介绍一下通过弹性伸缩提升应用高可用的能力。弹性能力其实是云最基本的能力,也是最能体现云厂商实力的能力。弹性伸缩是根据业务负载的波动自动调整算力的管理服务,所以它所支持的扩缩容的模式越多,能够适配的场景也越多。目前,阿里云的弹性伸缩支持定时的模式、动态的模式、手动的模式、智能模式等组合使用,来更好地匹配业务的变化方式。弹性伸缩支持配置多个可用区和多种实例规格,这样能够避免应用经受单个可用区出现问题时候的高可用能力。
给大家看一个简单的例子,对于线上服务而言,在传统的方式下,如果是人工的方式去响应,它会存在一些问题。如果我们前期按照峰谷的方式配备资源,我们就会发现在业务低谷期时,就会产生严重的资源浪费。反之如果出现了超出业务需求的场景下,我们也会出现资源不足的情况。同时当业务的变化比较频繁的时候,如果我们需要人工去介入,那么整个人工介入的时效性以及数量规划的要求是很高的。人工响应也会比较慢,一旦人工没有及时响应或者判断失误,就会导致业务受损。所以,在这种情况下,弹性伸缩可以很好地解决这个问题。
此外,我们在弹性伸缩过程中组合使用按量和spot实例能够进一步的降低成本,但它的确也是有门槛的。因为spot实例的成本非常低,但它只有一个小时的保护期。如果超过了一个小时,就需要根据市场的价格波动来决定用户是否能继续使用该实例了,如果出价低于它的市场价,这个spot实例可能会被回收。
目前,弹性伸缩组可以和负载均衡包括SLB、ALB、NLB进行自动的联动,也可以和RDS、PolarDB、ADB等数据库进行自动关联。我们只需要通过伸缩配置和启动模板来指定伸缩组每次扩容出来的实例长什么样,以及通过伸缩规则指定扩缩容的时间。在这个过程中,弹性伸缩就会根据业务的波动自动的进行扩缩容,最终让资源的量和业务的负载波动进行完美的匹配,实现业务的高可用,同时也能够降低使用成本。
第五个是安全。ECS的安全能力是需要云厂商和客户共同构建的,所以云上的安全能力遵循责任共担的模型。云厂商负责云本身的安全性,即云厂商需要对底层的基础设施和操作系统之上的虚拟化和云产品负责,它是ECS所依赖的底层基础设施。而客户负责云上的安全,即客户则需要负责和配置使用ECS所有相关的配置来提升ECS本身的安全性。
要体系化建设ECS的安全能力,首先需要了解ECS的系统架构。上面这张图其实展示了ECS的完整架构,分成上下两大部分,与前面提到的云厂商和客户各自负责的范围是对应的。
底层是基础设施,比如地域、可用区、硬件设备,它包括计算资源、服务器、存储、网络设备等硬件设备,还有底层虚拟化的软件服务,这是ECS依赖的基础设施。这部分的安全性是由云厂商来保障。
上层就是ECS实例本身,也是客户直接能看到并能管理操作的部分。实例操作系统内属于客户的范畴,云厂商无权查看或访问实例内的数据,所以,ECS实例本身的安全需要客户自己来把控。从业务角度来说,ECS实例也会分成几层,包括最底层的Guest OS,即镜像和操作系统,应用程序,然后是客户数据等。
因此,要提升ECS本身的安全性,我们可以把它分成几个方面。
∙ Guest OS安全,主要指的是操作系统的安全。比如我们使用的镜像有没有进行安全加固,我们是否需要使用等保合规的镜像,这是操作系统安全的基础。
∙ 访问安全,主要指的是哪些用户能够访问ECS,哪些用户不允许访问,访问的时候是否要使用非root的账号等。访问安全决定了实例是否会被非授权访问。
∙ 网络安全,更多指的是做网络的隔离和网络的访问控制。比如VPC的网络隔离,ACL的访问控制,以及安全组的安全规则的限制,来提升整个网络的安全。
以上几个安全性更多是单个垂直维度,如果我们想提升ECS的数据安全,它就涉及到端到端的安全体系建设,包括对计算中的数据进行加密,对数据的落盘、存储进行加密,以及当灾难出现的时候,能够做到快速恢复数据等。由于这部分属于客户的数据范围,需要客户自己进行配置,但阿里云在这个维度上也为用户提供了非常多自动化的能力,来帮助用户提升ECS在云上的安全性。
通过前面五个维度的介绍,我相信大家对CloudOps在成本、自动化、可靠性、弹性、安全合规,这五个维度能够帮大家解决的问题有了一个初步的了解。但还有一个产品我没有介绍,就是ECS使用成熟度评估与洞察,下面我们来看一下这个产品能够帮大家解决什么问题。
更多精彩内容,欢迎观看:
带你读《云上自动化运维宝典》——万字长文带你了解 CloudOps自动化运维的奥秘,助力云上业务高效稳定运行(3):https://developer.aliyun.com/article/1405384