创建弹性伸缩配置
功能介绍
创建弹性伸缩配置。
- 伸缩配置是伸缩组内实例(弹性云服务器)的模板,定义了伸缩组内待添加的实例的规格数据。
- 伸缩配置与伸缩组是解耦的,同一伸缩配置可以被多个伸缩组使用。
- 默认最多可以创建100个伸缩配置。
URI
POST /autoscaling-api/v1/{project_id}/scaling_configuration
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
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格式编码后的信息。
表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,该参数为必选项。
- 请求样例
本示例展示创建一个名称为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" }
返回值
- 正常
- 异常
返回值
说明
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
网关超时。
错误码
请参考错误码。