虚拟机形态的云服务器产品对用户来说是基本的计算单元,随着云上应用规模的扩大,很多用户在云上保有数千乃至数万虚拟机成为一种常态。数万的虚拟机、数万的IP 地址、数千的应用需要管理,这一切对于云上的资源管理员来说压力极大。如何帮助用户提升云上资源管理效率?相比于线下,云上资源的弹性能力具有颠覆性的提升,用户在云上可以按需创建资源和按量付费。这种弹性能力在使用中如何变得简单高效,是弹性计算整个业务团队持续思考的问题。云计算是普惠科技,必须要让它能够被简单地使用。
2.4.1 资源编排服务
在云上,由于按量付费的基本使用模型,用户对于资源的创建和释放的频繁程度是远高于线下IDC 的使用习惯的,另外考虑到用户的业务扩张期会有更频繁的新环境搭建、初始环境交付等场景,所以云上计算环境应该有更高的资源管理要求。想象一下,如果游戏用户的新初始游戏服务需要50 台服务器,分别承担10 种业务角色, 针对网络、数据库进行数百条业务配置是很正常的状态,那如何帮助用户简化资源的交付管理、可复制,以及防止手动操作的失误且可审计?这就是资源编排服务要解决的根本问题。资源编排服务(Resource Orchestration Service,ROS)是云服务提供商提供的一项简化云计算资源管理的服务。用户可以遵循ROS 定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如ECS 实例、RDS 数据库实例)、资源间的依赖关系等。ROS 的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。
ROS 模板是可读、易编写的文本文件。用户可以通过随时直接编辑JSON 格式文本,或者使用ROS 控制台提供的可视化编辑器来编辑模板,可以通过SVN、Git 等版本控制工具控制模板的版本,以达到控制基础设施版本的目的。用户可以通过API、SDK 等方式将ROS 的编排能力与自己的应用进行整合,实现基础设施即代码(Infrastructure as Code,IaC)。
ROS 模板也是一种标准化的资源和应用交付方式。独立软件供应商(ISV)能够通过ROS 模板交付包含云资源和应用的整体系统和解决方案,整合阿里云的资源和ISV 的软件系统,实现统一交付。
ROS 通过资源栈(Stack)统一管理一组云资源(一个资源栈即为一组阿里云资源)。对于云资源的创建、删除、克隆等操作,都以资源栈为单位来完成。在DevOps 实践中,用户既可以使用ROS 克隆开发环境、测试环境和线上环境,也可以轻松实现应用的整体迁移和扩容。在云上大规模的资源运维管理逐步走向IaC 的形态下,ROS 可以帮助用户快速地实践DevOps 中IaC 的理念。
和其他同类产品相比,阿里云官方出品的ROS 与其他阿里云产品有着最佳的集成,包括统一的身份认证、安全和审计。ROS 集成了资源访问管理(RAM)来提供统一的身份认证,而无须单独建立用户认证体系。所有对云产品的操作都通过Open API 调用,这意味着用户可以使用操作审计服务(ActionTrail)来审查所有的运维操作,包括ROS 本身。
2.4.2 运维编排服务
交付的管理交给了资源编排服务,那大量资源的运维管理该如何加速?成千上万的实例资源,操作系统内配置批量修改、补丁升级、例行健康检查等基础操作都逐一登录到云服务器上操作,显然是不可接受之“重”,而运维编排服务(Operation Orchestration Service,OOS)就是自动化管理和执行运维任务的得力帮手。用户可以40
在执行模板中定义执行任务、执行顺序、执行输入和输出等,通过执行模板自动化完成运维任务。运维编排服务很好地支持了以下运维场景:
执行定时和批量的运维场景。例如,批量检查ECS 实例中的云盘剩余空间。用户可以通过名字匹配、标签分组、资源组分组等方式选择需要检查的ECS 实例列表,再通过云助手命令执行云盘检查,最终统一查看结果。
执行事件驱动的自动化场景。例如,当某台ECS 实例的vCPU 使用量达到了85% 时,为了防止业务中断,运维编排服务可以自动重启ECS 实例。
跨地域的运维场景。例如,用户可以将一批ECS 实例从一个地域通过镜像复制到另一个地域。除此之外,运维编排服务还可以作为运维任务的标准化平台,将运维手册、操作手册和维护手册等转化成模板,实现运维即代码(Operations as Code)形态。
好了,交付、运维都有工具了。那么,如何把云上的成本和弹性优势发挥到极致呢?
2.4.3 弹性伸缩
弹性是云上特有的一种高阶能力,用户根据业务需要按需扩容或者缩容是云上真正有意义的一个运维场景,但是扩容的资源如何加入已有的应用环境里去、一些基本的系统关联动作能否自动化完成,这对于用户来说是至关重要的。比如用户原来有10 台云服务器,前端通过负载均衡(SLB)做负载分担,后端共同访问一台RDS 服务器。这时,即使需要扩容1 台服务器,那么,SLB 和RDS 的白名单加白是手动还是自动,对于云上的资源管理来说也是差别巨大的,直接决定弹性能力是所有用户都可以直接用起来,还是仅少量的高阶用户才能享受的“特权”。
通过使用弹性伸缩(Auto Scaling),用户可以根据业务需求和策略设置伸缩规则,在业务需求增长时自动为业务增加ECS 实例以保证计算能力,在业务需求下降时自动减少ECS 实例以节约成本。弹性伸缩不仅适合业务量不断波动的应用程序, 同时也适合对业务量稳定的应用程序进行健康监测和异常的替换。这就是我们常说的弹性扩张、弹性收缩和弹性自愈。
弹性扩张:当业务升级时,弹性伸缩为用户自动完成底层资源升级,避免访问延时和资源超负荷运行。用户可以配置云监控来实时关注ECS 实例的使用情况。例如,当云监控检测到伸缩组内的ECS 实例vCPU 使用率高于80% 时,弹性伸缩可根据配置的伸缩规则弹性扩张ECS 资源,自动创建合适数量的ECS 实例,并自动把ECS 实例添加到负载均衡实例和RDS 实例的访问白名单中,其具体过程如图2-5 所示。
图2-5 弹性扩张
弹性收缩:当业务需求下降时,弹性伸缩为用户自动完成底层资源释放,避免资源浪费。用户可以配置云监控来实时关注ECS 实例的使用情况。例如, 当云监控检测到伸缩组内的ECS 实例vCPU 使用率低于30% 时,弹性伸缩可根据配置的伸缩规则弹性收缩ECS 资源,自动释放合适数量的ECS 实例,并自动从负载均衡实例和RDS 实例的访问白名单中移除ECS 实例,其具体过程如图2-6 所示。
图2-6 弹性收缩42
弹性自愈:弹性伸缩提供健康检查功能,自动监控伸缩组内的ECS 实例的健康状态,避免伸缩组内健康的ECS 实例数量低于设置的最小值。当检测到某台ECS 实例处于不健康状态时,弹性伸缩自动释放不健康ECS 实例并创建新的ECS 实例,自动添加新ECS 实例到负载均衡实例和RDS 实例的访问白名单中,其具体过程如图2-7 所示。
图2-7 弹性自愈
弹性伸缩已有近10 种模式,如动态监控、固定时间、固定数量、健康监测、AI 智能预测等,均能对应到用户应用的典型场景。弹性伸缩可以让用户做到成本的最优化,是真正降成本的云上利器。
2.4.4 弹性供应
抢占式实例是一种极其特别的资源使用付费方式,用户通过此方式以极低的成本获取计算资源,但由于抢占式实例可能会被回收,所以这种实例有一定使用门槛。如何让抢占式实例适用更多的用户场景?弹性供应就是一个使用抢占式实例和按量付费实例快速部署实例集群的方案,可一键部署跨计费方式、跨可用区、跨实例规格族的实例集群。弹性供应以供应组为载体调度和维护计算资源,用户可以通过弹性供应组稳定提供计算力,缓解抢占式实例的回收机制带来的不稳定因素,免去重复手动创建实例的烦琐操作。
弹性供应组的适用场景和抢占式实例类似,即适用无状态的应用场景,如可横向伸缩的Web 站点服务、图像渲染、大数据分析、并行计算等。弹性供应组有灵活的第2 章 弹性计算产品家族43
策略组合,不仅可以缓解抢占式实例被回收这一问题的影响,而且以实例集群的形式交付也更加便捷。
具体的实例规格和创建操作由弹性供应组自动完成,用户无须逐一计算单台实例的成本。如果选择持续保持模式,弹性供应组还会自动比较实时容量和目标容量,在抢占式实例被回收时按照备选实例规格创建实例,最大限度保有满足业务需求的目标容量,以最低的成本满足计算力需求。
简单来说,弹性供应组可以根据用户指定的备选实例规格和调度策略,创建出一个满足计算力需求的实例集群,如图2-8 所示。
图2-8 弹性供应组自动维护资源池
弹性供应组可以让用户的资源使用尽可能地自动化和低成本化,使云上实例的运维成本最优。
至此,我们已完整介绍了用户在云上交付、管理、弹性、成本诸多方面的助力产品工具,接下来,我们将关注用户上云的问题。无论在线下,还是云之间,平滑的业务迁移都是用户最大的期望,那么弹性计算哪个产品来提升这一环节的体验呢?
2.4.5 迁移中心
云上用户一般可分为云原生和从其他云或IDC 迁移过来的两种,前者出生即用44
云,而后者则是认可了云计算的优势后,需要完成线下上云或在云之间迁移。云上业务的迁移需求从云计算诞生的第一天起就存在,但由于早期用户以云原生为主,企业用户也多是独立的小业务上云,所以这类迁移的问题对用户来说还算可以容忍。随着越来越多的大中型企业和核心业务选择使用云计算,业务的迁移成为所有大中型企业必须要面对的问题,近几年尤其如此。服务器迁移中心(Server Migration Center, SMC)是阿里云自主研发的迁移平台,可将单台或多台源服务器迁移至阿里云。迁移源包括IDC 服务器、虚拟机、其他云平台的云主机或其他类型的服务器,即各种形态的计算单元,都能够通过SMC 迁移到阿里云上。SMC 具有如下优势:
不依赖迁移源的底层环境:SMC 支持P2C/V2C/C2C 迁移,支持多种格式的文件系统和磁盘类型。
自动收集迁移源信息:用户无须手动配置迁移源的系统信息。运行相关命令后,SMC 客户端可自动收集并导入迁移源信息至SMC 控制台,为后续迁移操作做准备。
操作便捷:SMC 控制台让用户可直观便捷地配置信息、迁移上云。
支持批量迁移:用户可以在SMC 控制台完成批量迁移。
集中跟踪迁移进度:当批量迁移源服务器至阿里云时,我们需要跟踪每台迁移源的迁移状态。SMC 控制台展示了所有迁移源和迁移任务的状态,帮助用户迅速了解整体迁移进度,识别并排查迁移中出现的问题。
有了迁移中心,用户无论从何处将业务搬迁到阿里云上都变得简单高效。