资源编排之资源栈偏差检测和纠正

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

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

用户可以使用ROS管理资源,但即使通过ROS管理资源,也可以在ROS之外更改这些资源。用户可以使用创建资源的底层服务直接编辑资源。例如,可以使用ECS控制台来更新作为ROS资源栈一部分创建的服务器实例。在ROS之外进行的更改会使资源栈的更新或删除操作复杂化。为了解决这些问题,同时也是对标AWS,我们推出了偏差检测功能。使用偏差检测可以识别在ROS管理之外进行配置更改的资源栈资源。

本文会对偏差检测功能进行简要介绍和示例,更详细的功能介绍可以参考这里

功能介绍

偏差检测

通过偏差检测,可以检测资源栈的实际配置是否与其预期配置不同或已经存在偏差。使用ROS可以在整个资源栈或资源栈内的单个资源上检测偏差,可以检测出属性、资源是否被删除。如果某个资源的实际属性值与预期属性值不同,则认为该资源已经存在偏差。如果资源栈的一个或多个资源已经存在偏差,则认为资源栈已经存在偏差。可以在具有以下状态的资源栈上执行偏差检测:CREATE_COMPLETEUPDATE_COMPLETEROLLBACK_COMPLETE 、ROLLBACK_FAILEDCHECK_COMPLETE。当在资源栈上检测偏差时,ROS不会在任何属于该资源栈的嵌套资源栈上检测偏差。可以直接在嵌套资源栈上启动偏差检测操作。

为了确定资源是否已经存在偏差,ROS将预期的资源属性值(如资源栈模板中所定义)指定为模板参数的值,并将预期值与这些资源属性的实际值进行比较。如果资源的一个或多个属性值被删除或修改,则认为该资源已经存在偏差。ROS将生成已经存在偏差的资源栈中每个资源的详细信息。ROS仅通过资源栈模板或指定模板参数来确定属性值的偏差,这不包括资源属性的默认值。要使ROS跟踪资源属性以确定偏差,需要显示设置资源的属性值。ROS仅在支持偏差检测的资源上检测偏差,不支持偏差检测的资源会显示NOT_CHECKED状态。详情请参考支持偏差检测的资源

偏差检测中包含多个状态的概念,这里简单解释下:

  • 偏差检测状态:描述偏差检测操作的状态。
偏差检测操作状态 描述
DETECTION_COMPLETE 已经对支持偏差检测的资源栈中的所有资源成功完成了资源栈偏差检测操作。
DETECTION_FAILED 资源栈偏差检测操作对于资源栈中的至少一个资源检测失败。
DETECTION_IN_PROGRESS 资源栈偏差检测操作目前正在进行中。
  • 资源栈偏差状态:根据资源栈资源的偏差状态来描述资源栈的总体偏差状态。
偏差状态 描述
DRIFTED

资源栈与其预期模板配置不同或已经存在偏差。如果资源栈的一个或多个资源已经存在偏差,则认为资源栈已经存在偏差。

NOT_CHECKED ROS尚未检查资源栈、资源栈组或资源栈实例是否与其预期模板配置不同。
IN_SYNC 偏差检测支持资源的当前配置与其预期的模板配置相匹配。
 
说明 不支持偏差检测的资源,其他资源栈、资源栈组或资源栈实例也具有IN_SYNC状态。
  • 资源偏差状态:描述单个资源的偏差状态。
资源偏差状态 描述
DELETED 资源与预期的模板配置不同,因为资源已被删除。
MODIFIED 资源与预期的模板配置不同。
NOT_CHECKED ROS没有检查资源是否与预期的模板配置不同。
IN_SYNC 资源的当前配置与其预期的模板配置相匹配。

偏差纠正

用户可以采取纠正措施,使资源栈资源再次与其在资源栈模板中的定义同步。目前支持两种方式:

  • 通过更新资源栈的方式,直接更新存在偏差的资源,以便它们与其模板定义一致。
  • 通过模板纠正功能直接纠正模板,让模板内容与实际资源一致,目前AWS还不具有此功能。

解决偏差有助于确保资源配置一致性。

适用场景

  • 如果需要了解资源栈中资源是否发生偏差(修改或删除),并作出应对,可以使用偏差检测功能。
    • 很多其他服务使用ROS帮助用户创建资源。因为资源归属于用户,用户就可能对资源进行修改。比如容器服务在使用我们的过程中,碰到了这样一个问题。用户总是喜欢自己删资源,而容器服务难以感知到这些,于是导致了一些问题。容器服务需要这样一个功能,查询出所有资源的状态,到底有没有删除,并作出相应和处理。偏差检测正好适用。
    • 用户的账号如果是共享的,或者有一些有资源管理权限的子账号时,就面临多个用户操作同一资源的问题。资源栈中资源可能被意外地修改或删除。使用偏差检测功能,可以清晰地了解到资源栈中的资源是不是还符合预期。比如以ROS资源栈的方式来部署服务集群,通过偏差检测就可以快速了解到集群是否存在异常。
  • 如果需要消除资源栈中的偏差,可以使用偏差纠正功能。
    • 资源栈如果存在偏差,可能会影响到更新功能的使用。比如资源栈中资源已被删除,而在模板中又触发了该资源的更新,或是引用了该资源的其他资源的更新,更新就可能失败。通过使用恰当的模板进行更新,或是使用模板纠正功能,可以把资源栈恢复到无偏差状态,确保可以继续使用资源栈来管理资源。
      • 使用恰当的模板进行更新:适合于熟悉模板开发的用户,通过定制化的方式消除偏差。
      • 使用模板纠正功能:适合于所有用户,一键式的修复功能。

示例

创建资源栈

我们使用如下模板在ROS控制台创建一个资源栈。这个资源栈包含两个资源:ScalingGroup1、ScalingGroup2。

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ScalingGroup1:
    Type: 'ALIYUN::ESS::ScalingGroup'
    Properties:
      MinSize: 0
      MaxSize: 1
      DefaultCooldown: 500
      ScalingGroupName: xxx
      RemovalPolicys:
        - OldestInstance
  ScalingGroup2:
    Type: 'ALIYUN::ESS::ScalingGroup'
    Properties:
      MinSize: 0
      MaxSize: 1
      DefaultCooldown: 500
      ScalingGroupName: yyy
      RemovalPolicys:
        - OldestInstance

第一次偏差检测

对资源栈进行偏差检测,等待偏差检测完成。

刷新页面,观察偏差检测的结果,可以看到资源栈无偏差,所有资源也没有偏差。

如果刷新页面,没有结果或者还是以前的结果,说明偏差检测还在运行中。页面显示的是最近一次成功的偏差检测的信息。

第二次偏差检测

我们在ESS控制台修改 ScalingGroup1 的名称变成 xxx1,并删除 ScalingGroup2,然后再次执行偏差检测。

可以看到资源栈变成了偏差状态,ScalingGroup1变成偏差状态,ScalingGroup2变成了已删除状态。

对于ScalingGroup1,我们查看偏差详细信息。可以看到ScalingGroupName属性存在偏差,模板中定义的是xxx,实际是xxx1。

第三次偏差检测

我们在ESS控制台修改 ScalingGroup1 的名称变成 xxx,再对资源单独进行偏差检测。可以看到ScalingGroup1资源又恢复到了匹配状态。

更新资源栈消除偏差

通过修改ScalingGroup1,我们可以消除ScalingGroup1的偏差。但ScalingGroup2由于被删除,无法恢复成相同的物理ID,这种偏差如何消除?

通过更新资源栈的方式,可以同时消除修改和删除类型的偏差。

假定资源栈处于第二次偏差检测后的状态,使用如下模板更新资源栈。这个模板删除了ScalingGroup2资源,把ScalingGroup1中的ScalingGroupName改成了xxx1。

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ScalingGroup1:
    Type: 'ALIYUN::ESS::ScalingGroup'
    Properties:
      MinSize: 0
      MaxSize: 1
      DefaultCooldown: 500
      ScalingGroupName: xxx1
      RemovalPolicys:
        - OldestInstance

更新资源栈后,由于资源栈发生了变化,原来的偏差检测的结果不再有效,ROS会移除原来的偏差检测结果,需要重新进行偏差检测。重新进行偏差检测后,观察结果。

模板纠正消除偏差

另一种更直接的消除偏差的方式是模板纠正。通过模板纠正功能可以让模板恢复与实际资源一致。

点击 纠正 按钮,弹出的窗口中会列出所有存在偏差的资源,并默认都选中,选中的资源会被纠正。点击预览按钮,预览纠正前后的模板。对比两个模板,观察是否符合预期。

可以看到ScalingGroup1资源的ScalingGroupName由xxx变成了xxx1,ScalingGroup2资源被删除。

点击确认按钮,并重新对资源栈进行偏差检测,可以看到资源已经恢复到无偏差状态。

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
存储 Serverless 对象存储
通过计算巢轻松部署ROS自定义资源
阿里云资源编排服务ROS可以帮助您简化云计算资源的管理。 通过编写和使用模板,ROS可以实现自动化部署和运维。ROS不仅能够编排阿里云资源,还支持自定义资源。 使用自定义资源,您可以在模板中编写自定义配置逻辑。 计算巢“ROS自定义资源”服务可以把GitHub代码仓库(Python语言)构建和部署为ROS自定义资源,并输出ROS模块,方便后续使用。
|
弹性计算 运维 持续交付
基于资源编排服务(ROS)实现存量资源的IaC化
如果您需要一种简单而有效的方法来管理大量云资源并实现自动化部署,推荐使用阿里云的资源编排服务ROS(Resource Orchestration Service)。ROS能够将存量资源转化为IaC(基础设施即代码),通过资源场景创建、模版生成和资源栈导入等功能,实现资源的统一管理和自动化部署。这不仅提高了资源管理的效率,还降低了成本。如果您想了解如何更轻松地管理云资源并加速部署流程,ROS是一个值得深入了解的工具。
使用资源编排为云资源批量绑定标签
本场景介绍利用资源编排服务ROS(Resource Orchestration Service)在资源栈中创建资源,并同时为资源绑定标签,提升运维效率。
|
弹性计算 开发者
ROS-更新资源栈|学习笔记
快速学习 ROS-更新资源栈
ROS-更新资源栈|学习笔记
|
弹性计算 关系型数据库 数据库
使用ROS部署ECS+SqlServer资源并通过PowerShell操作数据库
本文介绍如何通过ROS部署ECS+RDS+SqlServer资源,以及如何通过PowerShell操作SqlServer数据库。 注意:附录模板和截图中的commandtext部分仅为演示作用,请根据需求修改后使用。
使用ROS部署ECS+SqlServer资源并通过PowerShell操作数据库
|
存储 弹性计算 运维
资源编排ROS之资源场景
# 背景 [资源编排服务](https://help.aliyun.com/document_detail/28852.html)(Resource Orchestration Service, 简称ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎
269 0
资源编排ROS之资源场景
|
弹性计算 JSON JavaScript
ROS CDK | 云上资源自动化部署新模式
使用 ROS CDK 自动化部署云资源
1195 0
|
弹性计算 运维 关系型数据库
资源编排ROS之资源栈组StackGroup
## 背景 [资源编排服务](https://help.aliyun.com/document_detail/28852.html)(Resource Orchestration Service, 简称 ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循 ROS 定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如 ECS 实例、RDS 数据库实例)、资源间的依赖关系
947 0
|
2月前
|
Ubuntu 机器人 Linux
|
20天前
|
XML 算法 自动驾驶
ROS进阶:使用URDF和Xacro构建差速轮式机器人模型
【11月更文挑战第7天】本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。

推荐镜像

更多