弹性强度说明

弹性强度代表资源库存的健康程度,弹性强度越优,代表未来断供的可能性越低。由于计算巢创建服务和部署服务实例是分开的,所以建议在创建服务时选择弹性强度较优的实例规格,以提高服务实例的部署成功率。本文详细介绍了弹性强度的相关信息。

背景信息

本文适用于服务商在创建全托管服务过程中,在套餐中包含ECS实例规格时,针对ECS实例规格的弹性强度差,服务实例的部署成功率低的情况,可以通过更换实例规格或选择多个备选实例规格来增强ECS实例的弹性强度,提升服务实例的部署成功率。

弹性强度定义

弹性强度体现了资源的库存健康程度,服务商在创建服务时选择弹性强度较优的实例规格,有助于提高部署成功率。弹性强度的优差代表选择的实例规格当前库存和后续供应是否充足,部署服务实例成功率的高低。弹性强度从可用区、地域和套餐三个维度进行计算,将实例规格的强度分为优、中、差三个级别。

  • 弹性强度级别对应分值如下表所示。

    弹性强度

    分值范围

    说明

    分数≥3

    选择的实例规格当前库存和后续供应充足,在部署服务实例时,部署的成功率高。

    1≤分数<3

    选择的实例规格当前库存和后续供应比较充足,在部署服务实例时,部署的成功率较高。

    分数<1

    选择的实例规格库存不足,未来断供可能较大,建议更换实例规格或选择多个备选的实例规格。

  • 各维度的计算方法如下表所示。

    计算维度

    计算方法

    可用区维度

    该可用区下每个实例规格库存的健康程度。

    若选择了多个实例规格,可用区维度的弹性强度是将多个实例规格的分数进行叠加计算。

    地域维度

    该地域下可选可用区的弹性强度分值进行叠加。若在添加参数映射关系中指定了可用区,则只会将指定的可用区纳入弹性强度的计算中。

    套餐维度

    各地域弹性强度的最小值。若在部署地域添加参数映射关系中指定了地域,则只会将被指定的地域纳入弹性强度的计算中。

    若指定了多个实例规格参数,则取这些参数对应弹性强度分值的最小值。

    根据此计算方式,可以通过增加备选实例规格来提高弹性强度。当有多个备选的实例规格时,在部署服务实例时计算巢服务会选择最合适的实例规格,从而降低库存不足导致服务实例部署失败率。

弹性强度配置

此处展示了在创建服务的过程中若选择的实例弹性强度差时,如何提升实例的弹性强度。

  1. 登录计算巢控制台

  2. 在左侧导航栏中,选择我的服务,并在我的服务页面中,选择我创建的服务,然后单击创建新服务

  3. 创建新服务页面,配置服务信息。

    此处只列举弹性强度相关的配置参数,其他参数根据业务需求填写,更多信息,请参见创建全托管服务

    1. 模板内容处,填写已经写好的模板内容。

      模板内容可参考本文使用的实例。更多信息,请参见模板示例

      重要

      由于当前只支持ECS实例规格参数的弹性强度计算。因此在模板内容中,必须将AssociationProperty参数的值指定为ALIYUN::ECS::Instance::InstanceType

      模板内容

    2. 添加自动参数映射处,设置模板中参数的依赖关系。2023-11-03_14-15-07.png

    3. 添加套餐处,设置服务的套餐信息。

      在套餐中选择实例类型字段,并选择具体的实例规格。选择后,计算巢会根据您所选实例规格计算弹性强度。2023-11-03_14-51-32.png

      如果套餐的弹性强度差,可以查看具体原因并提升弹性强度。

      1. 将鼠标移动到弹性强度标签处,查看ECS实例的地域和可用区维度的弹性强度。2023-11-03_14-52-38.png

      2. 在可用区查看弹性强度差的具体原因。2023-11-03_14-54-35.png

      3. 根据具体原因,选择多个实例规格,提升弹性强度。

        说明

        同一个套餐中,最多支持同时选择10个实例规格。

        2024-06-12_15-31-26.png

    4. 可选:隐藏的参数处,设置需要隐藏的参数。

      若将实例类型参数隐藏,用户在创建服务实例时,计算巢服务会从用户选择的套餐的多个实例规格中,结合当前库存状况,自动选择最合适的实例规格用于服务部署。2024-06-12_15-32-21.png

  4. 单击创建服务,并在弹出的确认弹窗中单击确定

模板示例

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  Name:
    Type: String
    Default: default
  ZoneId:
    Type: String
    Description:
      en: Availability zone ID,<br><b>note: <font color='blue'>Before selecting, please confirm that the Availability Zone supports the specification of creating ECS resources</font></b>
      zh-cn: 可用区ID
    Label:
      en: VSwitch Available Zone
      zh-cn: 可用区
    AssociationProperty: ALIYUN::ECS::ZoneId
  DataDiskCategory:
    Type: String
    Description:
      en: '<font color=''blue''><b>Optional values:</b></font><br>[cloud_efficiency: <font color=''green''>Efficient Cloud Disk</font>]<br>[cloud_ssd: <font color=''green''>SSD Cloud Disk</font>]<br>[cloud_essd: <font color=''green''>ESSD Cloud Disk</font>]<br>[cloud: <font color=''green''>Cloud Disk</font>]<br>[ephemeral_ssd: <font color=''green''>Local SSD Cloud Disk</font>]'
      zh-cn: '<font color=''blue''><b>可选值:</b></font><br>[cloud_efficiency: <font color=''green''>高效云盘</font>]<br>[cloud_ssd: <font color=''green''>SSD云盘</font>]<br>[cloud_essd: <font color=''green''>ESSD云盘</font>]<br>[cloud: <font color=''green''>普通云盘</font>]<br>[ephemeral_ssd: <font color=''green''>本地SSD盘</font>]'
    AllowedValues:
      - cloud_efficiency
      - cloud_ssd
      - cloud
      - cloud_essd
      - ephemeral_ssd
    Default: cloud_efficiency
    Label:
      en: Disk Type
      zh-cn: 数据盘类型
  DataDiskSize:
    Type: Number
    Description:
      en: 'Data disk space, range of values: 40-500, units: GB.'
      zh-cn: 实例数据盘大小,单位为GiB。取值范围:20~500。
    Label:
      en: Data Disk Space
      zh-cn: 数据盘空间
    MinValue: 20
    MaxValue: 500
    Default: 40
  DBRootPassword:
    NoEcho: true
    Type: String
    Description:
      en: 'Installed database Root account password,length 8-32 characters, can contain size letters, Numbers and special symbols (including: !@#$%^&*-+=_).'
      zh-cn: 安装的数据库Root账户密码,长度8-32个字符,可包含大小字母、数字及特殊符号(包含:!@#$%^&*-+=_)。
    Label:
      en: Root Account Password
      zh-cn: 安装数据库root账户密码
    ConstraintDescription:
      en: '8-32 characters, can contain size letters, Numbers and special symbols (including: !@#$%^&*-+=_).'
      zh-cn: 8-32个字符,可包含大小字母、数字及特殊符号(包含:!@#$%^&*-+=_)。
    MinLength: '8'
    MaxLength: '32'
  VpcId:
    AssociationProperty: ALIYUN::ECS::VPC::VPCId
    Type: String
    Description:
      en: Please search the ID starting with (vpc-xxx) from console-Virtual Private Cloud
      zh-cn: 现有虚拟专有网络的实例ID
    Label:
      en: VPC ID
      zh-cn: 专有网络VPC实例ID
  SecurityGroupId:
    AssociationPropertyMetadata:
      VpcId: VpcId
    Description:
      zh-cn: 现有安全组的实例ID
      en: The instance ID of an existing security group.
    Default: sg-2zeip0loevltubwfzrtm
    Label:
      zh-cn: 安全组ID
      en: Security Group ID
    AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
    Type: String
  VSwitchId:
    AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
    AssociationPropertyMetadata:
      VpcId: ${VpcId}
      ZoneId: ${ZoneId}
    Type: String
    Description:
      en: Instance ID of existing business network switches, console-Virtual Private Cloud-VSwitches under query
      zh-cn: 现有业务网络交换机的实例ID
    Label:
      en: VSwitch ID
      zh-cn: 交换机实例ID
  EcsInstanceType:
    Type: String
    Label:
      en: Instance Type
      zh-cn: 实例类型
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
Resources:
  WaitCondition:
    Type: ALIYUN::ROS::WaitCondition
    Properties:
      Count: 1
      Handle:
        Ref: WaitConditionHandle
      Timeout: 1800
  WaitConditionHandle:
    Type: ALIYUN::ROS::WaitConditionHandle
  EcsInstanceGroup:
    Type: ALIYUN::ECS::InstanceGroup
    Properties:
      IoOptimized: optimized
      DiskMappings:
        - Category:
            Ref: DataDiskCategory
          Device: /dev/xvdb
          Size:
            Ref: DataDiskSize
      SystemDiskSize: 40
      UserData:
        Fn::Sub:
          - |
            #!/bin/sh
            sleep 5
            cd /root/
            wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
            rpm -ivh mysql-community-release-el6-5.noarch.rpm
            yum repolist all | grep mysql
            yum install mysql-community-server -y
            service mysqld start
            mysqladmin -u root password ${DBRootPassword}
            echo "create database test character set utf8 collate utf8_bin;" > ./test.sql
            echo "CREATE USER 'admin'@'%' IDENTIFIED BY '${DBRootPassword}';" >> ./test.sql
            echo "GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;" >> ./test.sql
            mysql -u root -p${DBRootPassword} < ./test.sql
            ${CurlCli} -d "{\"Data\" : \"SUCCESS\", \"Status\" : \"SUCCESS\"}"
          - CurlCli:
              Fn::GetAtt:
                - WaitConditionHandle
                - CurlCli
            DBRootPassword:
              Ref: DBRootPassword
      InstanceChargeType: PostPaid
      SecurityGroupId:
        Ref: SecurityGroupId
      VSwitchId:
        Ref: VSwitchId
      MaxAmount: 1
      SystemDiskCategory: cloud_efficiency
      InstanceName:
        Fn::Join:
          - '-'
          - - rds-paas-poc
            - Ref: Name
      VpcId:
        Ref: VpcId
      ZoneId:
        Ref: ZoneId
      ImageId: centos_7
      InstanceType:
        Ref: EcsInstanceType
      HostName:
        Fn::Join:
          - '-'
          - - rds-paas-poc
            - Ref: Name
      Password: passw0RD
      AllocatePublicIP: true
Outputs:
  ServiceAddress:
    Description:
      en: ECS Private IP
      zh-cn: ECS PrivateIP
    Value:
      Fn::Join:
        - ':'
        - - Fn::Select:
              - '0'
              - Fn::GetAtt:
                  - EcsInstanceGroup
                  - PrivateIps
          - 3306
  SecurityGroupId:
    Description:
      en: SecurityGroup
      zh-cn: SecurityGroup
    Value:
      Ref: SecurityGroupId
  VSwitchId:
    Description:
      en: VSwitchId
      zh-cn: VSwitchId
    Value:
      Ref: VSwitchId
  VpcId:
    Description:
      en: VpcId
      zh-cn: VpcId
    Value:
      Ref: VpcId
Metadata:
  ALIYUN::ROS::Interface:
    ParameterGroups:
      - Parameters:
          - Name
          - ZoneId
          - DataDiskCategory
          - DataDiskSize
          - DBRootPassword
          - VpcId
          - SecurityGroupId
          - VSwitchId
        Label:
          default:
            en: instance
            zh-cn: 实例规格