且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

资源编排ROS之资源场景

更新时间:2022-06-07 18:09:21

背景

资源编排服务(Resource Orchestration Service, 简称ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。

基于IaC的理念,可以标准化基础设施,但是这也意味着需要对模板语法足够熟悉。有些时候,我们只想要简单地对资源进行复制、迁移等操作,而不想花时间去写模板;或者,已经有一批资源,希望能够自动根据这批资源生成模板。这个时候不妨使用ROS的资源场景功能,它一定会让你觉得对资源的操作是如此简单,写模板的烦恼再也没有了。

关于资源场景的更多功能介绍,可以参考这里

什么是资源场景

资源场景针对典型的资源操作场景提供了可视化的界面。用户可以通过指定标签、资源组或资源ID的形式选择一批资源,然后针对这批资源进行复制、迁移、纳管或生成ROS模板。通过资源场景,用户可以不关心ROS模板是如何编写,只需在ROS控制台上“点点点”就能完成针对一批资源的复杂操作,ROS会自动识别并处理好资源的依赖关系和部署顺序。

场景类型

资源场景目前支持如下类型:

  • 资源复制:此场景支持复制指定范围内的所有资源,生成一套架构完全相同的资源。
  • 资源迁移:此场景支持将地域A中的一组资源复制到地域B中,并可把地域A中的资源删掉,从而完成资源架构的整体迁移。
  • 资源纳管:此场景可将一组现有资源导入到同一资源栈中进行统一管理(比如更新、删除等)。

资源节点

资源场景中还有两个关于资源的概念:

  • 源节点:创建资源场景后,ROS会筛选指定范围内的所有资源,生成资源架构和属性信息,这些资源被称为源节点

    • 在资源复制类型的资源场景中,源节点用于存储已有资源的ID、类型、属性等信息。
    • 在资源纳管类型的资源场景中,源节点中的资源将直接以资源导入的方式创建资源栈,从而纳管一组资源。
  • 新节点:创建资源复制类型的资源场景后,ROS会基于源节点内容额外生成计划复制的资源,包括其资源类型、属性等信息,这些资源被称为新节点。新节点的资源属性和数量可能会和源节点有所不同,ROS在生成场景时会为新节点生成可用的规格、网段等属性,并会根据资源间的关联关系和资源特性决策生成出的资源类型和数量。

    • 示例1:假设源节点的ECS实例规格为ecs.sn1ne.large(2核4 GB),在生成场景时无此规格库存,则会查找相似的实例规格并应用于新节点。
    • 示例2:假设源节点仅包含EIP及其绑定资源,意味着EIP已绑定至某个实例。由于实例只能绑定1个EIP,在生成场景时新节点中只会包含EIP资源,而不包含EIP绑定的资源。

资源场景使用步骤

资源场景的使用总体分为两大步骤:

  • 创建资源场景:在这个步骤中选择场景类型、资源范围、配置,进而生成场景。
  • 执行资源操作:在上一步生成的资源场景中点击复制/迁移/纳管资源按钮从而完成对资源的操作。

资源编排ROS之资源场景

资源场景实践

资源复制

如果需要快速复制一组资源及其依赖关系,可以通过创建资源复制场景来实现。资源复制支持在同可用区、跨可用区、跨地域复制。

创建资源复制场景时,ROS会筛选指定范围内的所有资源并生成源节点,同时额外生成新节点(表示计划复制的资源)。ROS会根据新节点的内容创建资源栈,从而复制出和源节点相同架构的一组资源。您可以在资源场景管理页面的资源栈页签中查看已创建的资源栈。

例如,有一个集群(即一组资源),包含1个SLB实例并挂载2个ECS实例,此外此SLB实例还配置了监听。这些资源都打上了 app:web 的标签。现在需要复制出完全相同的一组集群,那么使用资源复制场景就可以快速实现。

  1. 首先创建资源场景,选择场景类型为资源复制,选择资源范围的方式为源标签,并输入标签键 app 和标签值 web,点击生成场景按钮。

资源编排ROS之资源场景

  1. 进入生成好的资源场景的详情界面,可以看到扫描出的源节点的资源架构和资源列表。

资源编排ROS之资源场景

点击右上角的复制资源即可进行复制,ROS会基于此场景创建资源栈,通过资源栈创建出计划复制的资源。
资源编排ROS之资源场景
资源编排ROS之资源场景

  1. 在资源场景详情页中,还能够生成ROS模板。如果想对计划复制的资源做一些修改再复制,那么就可以先生成模板,再手动修改模板,再通过模板创建资源栈的方式来实现。

资源编排ROS之资源场景

资源迁移

如果需要迁移一组资源及其依赖关系,可以通过创建资源迁移场景来实现。资源迁移支持跨可用区、跨地域迁移。

创建资源迁移场景时,ROS会筛选指定范围内的所有资源并生成源节点,同时额外生成新节点,用于迁移资源。发起迁移后,ROS会根据新节点的内容创建资源栈,从而复制出和源节点相同架构的一组资源。迁移完成后,可以选择删除源资源,ROS会将源资源纳管到新的资源栈中,再进行删除。

可以看出,资源迁移场景和资源复制场景十分类似,它是在资源复制的基础上多了一个可选的步骤,即删除源节点资源,从而完成资源的迁移。

资源迁移的演示视频见这里

资源纳管

如果需要将一组现有资源导入到同一资源栈中进行统一管理,可以通过创建资源纳管场景来实现。

相比于ROS提供的资源导入功能,资源纳管将自动化更进一步,不需要事先写好ROS模板进行导入,而由ROS自动生成模板并导入。

资源纳管和资源复制的使用步骤类似,先创建一个资源纳管类型的资源场景,然后进入资源场景详情界面点击纳管资源按钮即可将指定的一组资源纳管到资源栈中。这样,后续如果需要对整组资源做更新或删除操作,就可以通过更新或删除资源栈来操作,无需自行处理依赖关系,ROS会自动处理。

总结

本文介绍了资源场景的概念、好处和使用步骤,通过一个实际案例介绍了三种资源场景的使用方式。通过资源场景,用户可以非常方便地实现对资源的批量操作,而无需关心ROS模板是怎么编写的,从而大大提高基础设施的管理效率。