更新时间:2022-02-22 GMT+08:00

创建弹性伸缩配置

功能介绍

创建弹性伸缩配置。

  • 伸缩配置是伸缩组内实例(弹性云服务器)的模板,定义了伸缩组内待添加的实例的规格数据。
  • 伸缩配置与伸缩组是解耦的,同一伸缩配置可以被多个伸缩组使用。
  • 默认最多可以创建100个伸缩配置。

URI

POST /autoscaling-api/v1/{project_id}/scaling_configuration

表1 参数说明

参数

是否必选

参数类型

描述

project_id

String

项目ID

请求消息

  • 请求参数
    表2 请求参数

    参数

    是否必选

    参数类型

    描述

    scaling_configuration_name

    String

    伸缩配置名称(1-64个字符),只能包含中文、字母、数字、下划线或中划线。

    instance_config

    Object

    实例配置信息,具体请参考表 instance_config字段数据结构说明

    表3 instance_config字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    instance_id

    String

    云服务器ID,当使用已存在的的规格为模板创建弹性伸缩配置时传入该字段,此时flavorRef、imageRef、disk、security_groups、tenancy和dedicated_host_id字段不生效。

    当不传入instance_id字段时flavorRef、imageRef、disk字段为必选。

    flavorRef

    String

    云服务器的规格ID。最多支持选择10个规格,多个规格ID以逗号分隔。云服务器的ID通过查询弹性云服务器规格详情和扩展信息列表接口获取。

    imageRef

    String

    镜像ID,同image_id,指定创建实例时选择的镜像资源。通过查询镜像服务镜像列表接口获取。

    disk

    Array

    磁盘组信息,系统盘必选,数据盘可选。请参考表 disk字段数据结构说明

    key_name

    String

    登录云服务器的SSH密钥名称。

    说明:

    当key_name与user_data同时指定时,user_data只做用户数据注入。

    personality

    Array

    注入文件信息。仅支持注入文本文件,最大支持注入5个文件,每个文件最大1KB。详情请参考表 personality字段数据结构说明

    public_ip

    Object

    配置云服务器的弹性IP信息,弹性IP有两种配置方式。详情请参考表 public_ip字段数据结构说明

    • 不使用(无该字段)
    • 自动分配,需要指定新创建弹性IP的信息

    user_data

    String

    创建云服务器过程中注入用户数据。支持注入文本、文本文件或gzip文件。

    约束:

    • 注入内容,需要进行base64格式编码。注入内容(编码之前的内容)最大长度32KB。
    • 当key_name没有指定时,user_data注入的数据默认为云服务器root帐号的登录密码。
    • 创建密码方式鉴权的Linux弹性云服务器时为必填项,为root用户注入自定义初始化密码。

    建议密码复杂度如下:

    • 长度为8-26位。
    • 密码至少必须包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。

    示例:

    • 使用明文密码(存在安全风险),以密码cloud.1234为例:
      #! /bin/bash
      echo 'root:Cloud.1234' | chpasswd ;
    • 使用密文密码(推荐):
      #! /bin/bash
      echo 'root:$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig' | chpasswd -e

    其中,$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig为密文密码,生成方法如下:

    1. 生成加密盐值

    [root@test linux]# python -c "import crypt, getpass, pwd;print crypt.mksalt()"  $6$V6azyeLwcD3CHlpY

    2. 根据盐值生成密文密码

    [root@test linux]# python -c "import crypt, getpass, pwd;print crypt.crypt('Cloud.1234','\$6\$V6azyeLwcD3CHlpY')"   $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig

    示例:

    • Linux服务器:
      #! /bin/bash
      echo user_test >> /home/user.txt
    • Windows服务器:
      rem cmd
      echo 111 > c:\aaa.txt
    说明:

    使用Linux镜像并且采用密码登录弹性云服务器时,不支持数据注入。

    metadata

    Object

    创建云服务器元数据。详情请见表10

    说明:
    • 创建密码方式鉴权的Windows弹性云服务器时,为必填字段。
    • 该字段暂不支持用户写入数据,但是当使用Windows镜像创建弹性云服务器时,该字段为必填字段。

    security_groups

    Array

    安全组信息,详情可参考表 security_groups字段数据结构说明

    当伸缩配置和伸缩组同时指定安全组时,将以伸缩配置中的安全组为准;当伸缩配置和伸缩组都没有指定安全组时,将使用默认安全组。为了使用灵活性更高,推荐在伸缩配置中指定安全组。

    server_group_id

    String

    云服务器组ID。

    tenancy

    String

    在专属主机上创建弹性云服务器。取值如下:

    • dedicated:在专属主机上创建弹性云服务器。
    • 不指定该参数

    dedicated_host_id

    String

    专属主机的ID。

    说明:
    • 该字段仅在tenancy为dedicated时生效。
    • 如果指定该字段,云服务器将被创建到指定的专属主机上。
    • 如果不指定专该字段,此时系统会将云服务器创建在符合规格的专属主机中剩余内存最大的那一台上,以使各专属主机尽量均衡负载。

    multi_flavor_priority_policy

    String

    使用伸缩配置创建云主机的时候,多规格使用的优先级策略。

    • PICK_FIRST(默认):选择优先,虚拟机扩容时规格的选择按照flavorRef列表的顺序进行优先级排序。
    • COST_FIRST:成本优化,虚拟机扩容时规格的选择按照价格最优原则进行优先级排序。

    market_type

    String

    云服务器的计费模式,可以选择竞价计费或按需计费,取值如下:

    • 按需计费:不指定该字段
    • 竞价计费:spot

    对于Linux弹性云服务器,如果需要注入密码,只能使用userdata进行注入;对于Windows弹性云服务器,如果需要注入密码,只能通过元数据admin_pass进行注入。

    表4 disk字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    size

    Integer

    磁盘大小,容量单位为GB。

    系统盘输入大小范围为40~1024,且不小于镜像中系统盘的最小(min_disk属性)值。

    数据盘输入大小范围为10~32768。

    volume_type

    String

    云服务器系统盘对应的磁盘类型,需要与系统所提供的磁盘类型相匹配。

    • SATA:普通IO磁盘类型。
    • SAS:高IO磁盘类型。
    • SSD:超高IO磁盘类型。
    • co-p1:高IO (性能优化Ⅰ型)
    • uh-l1:超高IO (时延优化)
    说明:

    对于HANA云服务器、HL1型云服务器、HL2型云服务器,需使用co-p1和uh-l1两种磁盘类型。对于其他类型的云服务器,不能使用co-p1和uh-l1两种磁盘类型。

    disk_type

    String

    标识系统盘还是数据盘,枚举值如下:

    • DATA:数据盘。
    • SYS:系统盘。
      说明:

      系统盘不支持加密。

    dedicated_storage_id

    String

    云服务器的磁盘可指定创建在用户的专属存储中,需要指定专属存储ID。

    说明:

    同一个伸缩配置中的磁盘需统一指定或统一不指定专属存储,不支持混用;当指定专属存储时,所有专属存储需要属于同一个可用区,且每个磁盘选择的专属存储支持的磁盘类型都需要和参数volume_type保持一致。

    data_disk_image_id

    String

    指定特定ID的数据盘镜像,用以导出云服务器的数据盘。

    snapshot_id

    String

    当选择使用整机镜像时,云服务器的系统盘及数据盘将通过整机备份恢复,需要指定磁盘备份的快照ID。

    说明:

    一个伸缩配置中的每一个disk需要通过snapshot_id和整机备份中的磁盘备份一一对应。

    metadata

    Object

    创建磁盘的元数据,详情见表5

    表5 创建磁盘的metadata字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    __system__encrypted

    String

    metadata中的表示加密功能的字段,0代表不加密,1代表加密。

    该字段不存在时,云硬盘默认为不加密。

    说明:

    系统盘不支持加密。

    __system__cmkid

    String

    用户主密钥ID,是metadata中的表示加密功能的字段,与__system__encrypted配合使用。

    说明:
    • 参考《密钥管理服务API参考》中的“查询密钥列表”章节通过HTTPS请求获取密钥ID。
    • 系统盘不支持加密。
    表6 personality字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    path

    String

    注入文件路径信息。

    • Linux系统请输入注入文件保存路径,例如 “/etc/foo.txt”。
    • Windows系统注入文件自动保存在C盘根目录,只需要输入保存文件名,例如 “foo”,文件名只能包含字母(a~zA~Z)和数字(0~9)。

    content

    String

    注入文件内容。

    该值应指定为注入文件的内容进行base64格式编码后的信息。

    表7 public_ip字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    eip

    Object

    配置云服务器自动分配弹性IP时,创建弹性IP的配置参数。详情请参考表 eip字段数据结构说明

    表8 eip字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    ip_type

    String

    弹性IP地址类型。

    类型枚举值:

    • 5_bgp:全动态BGP
    • 5_sbgp:静态BGP
    • 5_telcom:中国电信
    • 5_union:中国联通

    bandwidth

    Object

    IP地址带宽参数,详情请参考表 bandwidth字段数据结构说明

    表9 bandwidth字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    size

    Integer

    带宽(Mbit/s),按带宽分配取值范围为[1,2000],按流量分配取值范围为[1,300]。

    说明:
    • 若share_type是PER,该参数为必选项。若share_type是WHOLE,会忽略该参数。
    • 具体范围以各区域配置为准,请参见控制台对应页面显示。
    • 创建带宽时的最小单位会根据带宽取值范围不同存在差异。
      • 小于等于300Mbit/s:默认最小单位为1Mbit/s。

    share_type

    String

    带宽的共享类型。

    共享类型枚举:

    • PER:独享型。
    • WHOLE:共享型。

    charging_mode

    String

    带宽的计费类型。

    计费类型枚举:

    • bandwidth:按带宽计费。
    • traffic:按流量计费。
    若字段为其它值,会导致创建云服务器失败。
    说明:
    • 如果share_type是PER,该参数为必选项。
    • 如果share_type是WHOLE,会忽略该参数。

    id

    String

    带宽ID,使用共享型带宽时,可以选择之前创建的共享带宽来创建弹性IP。

    说明:
    • 如果share_type是PER,会忽略该参数。
    • 如果share_type是WHOLE,该参数为必选项。
    表10 metadata字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    admin_pass

    String

    如果需要使用密码方式登录云服务器,可使用adminPass字段指定云服务器管理员帐户初始登录密码。其中,Linux管理员帐户为root,Windows管理员帐户为Administrator。

    密码复杂度要求:
    • 长度为8-26位。
    • 密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。
    • 密码不能包含用户名或用户名的逆序。
    • Windows系统密码不能包含用户名或用户名的逆序,不能包含用户名中超过两个连续字符的部分。
    表11 security_groups字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    id

    String

    安全组ID。

  • 请求样例
    本示例展示创建一个名称为as-config-tlzp,镜像ID为627a1223-2ca3-46a7-8d5f-7aef22c74ee6,规格ID为s3.xlarge.4,系统盘为40G的SATA盘,且SSH密钥名称为100vm_key的伸缩配置。
    POST https://{Endpoint}/autoscaling-api/v1/{project_id}/scaling_configuration
    
    { 
        "scaling_configuration_name": "as-config-tlzq", 
        "instance_config": { 
            "flavorRef": "s3.xlarge.4", 
            "imageRef": "627a1223-2ca3-46a7-8d5f-7aef22c74ee6", 
            "disk": [ 
                { 
                    "size": 40, 
                    "volume_type": "SATA", 
                    "disk_type": "SYS" 
                } 
            ], 
            "key_name": "100vm_key" ,
    	"security_groups": [{
    		"id": "6c22a6c0-b5d2-4a84-ac56-51090dcc33be"
    	}], 
            "multi_flavor_priority_policy": "PICK_FIRST"
        } 
    }
    

响应消息

  • 响应参数
    表12 响应参数

    参数

    参数类型

    描述

    scaling_configuration_id

    String

    伸缩配置ID。

  • 响应样例
    {
        "scaling_configuration_id": "f8327883-6a07-4497-9a61-68c03e8e72a2"
    }

返回值

  • 正常

    200

  • 异常

    返回值

    说明

    400 Bad Request

    服务器未能处理请求。

    401 Unauthorized

    被请求的页面需要用户名和密码。

    403 Forbidden

    对被请求的页面访问禁止。

    404 Not Found

    服务器无法找到被请求的页面。

    405 Method Not Allowed

    请求中指定的方法不被允许。

    406 Not Acceptable

    服务器生成的响应无法被客户端所接受。

    407 Proxy Authentication Required

    用户必须首先使用代理服务器进行验证,这样请求才会被处理。

    408 Request Timeout

    请求超出了服务器的等待时间。

    409 Conflict

    由于冲突,请求无法被完成。

    500 Internal Server Error

    请求未完成。服务异常。

    501 Not Implemented

    请求未完成。服务器不支持所请求的功能。

    502 Bad Gateway

    请求未完成。服务器从上游服务器收到一个无效的响应。

    503 Service Unavailable

    请求未完成。系统暂时异常。

    504 Gateway Timeout

    网关超时。

错误码

请参考错误码