使用示例

最近更新时间:2018-06-14 11:58:47

为了帮助您快速使用弹性伸缩(AS)API,这里给出一个使用示例。
要使用弹性伸缩服务,您至少需要一个伸缩组,其中定义了CVM实例数的最大值、最小值等信息。而为了完成该伸缩组的自动扩容,您需要设置启动配置,它是弹性伸缩自动创建的CVM实例的模版。最后,为了控制该伸缩组的伸缩活动,您需要创建其告警触发策略,它可以根据云监控指标(如CPU、内存、网络流量),自动执行伸缩活动。
这里,我们首先创建了一个新的启动配置;然后创建一个伸缩组,并与之前创建的启动配置相绑定;最后为该伸缩组创建了告警触发策略,在特定情况下执行伸缩活动。

1. 创建一个新的启动配置

在创建伸缩组前,我们首先需要确定其启动配置,它决定了通过弹性伸缩自动创建的云服务器实例的配置。有关创建启动配置的详细信息可参考创建启动配置页面。
这里我们创建了一个新的启动配置,其名称为mytest。该启动配置定义的CVM实例使用的是ID为img-50mr2ow7的公共镜像,其CPU核数为1,内存大小为1GB,硬盘用的是10G的本地盘,带宽用的是按流量计费的1Mbps大小的公网带宽。具体的接口请求参数见下表:

参数名称 描述 取值
scalingConfigurationName 用户设定的启动配置名称。 mytest
imageType 镜像类型。只有两种取值:若为1,表示私有镜像;若为2,表示公共镜像。 2
imageId 镜像ID。请填写查询可用的镜像列表(DescribeImages)接口中返回的unImgId(统一镜像ID)字段。 img-50mr2ow7
cpu CPU核数,各个地域可选的CPU核数不一样,具体见创建启动配置页面。 1
mem 内存大小,单位为GB,各个地域可选的内存大小不一样,具体见创建启动配置页面。 1
storageType 数据盘类型。只有两种取值:若为1,表示本地盘;若为2,表示云硬盘。 1
storageSize 数据盘大小,单位为GB。若为本地盘,可选范围在0-500G;若为云硬盘,可选范围在0-4000G。 10
bandwidthType 带宽的类型。只有两种取值:若为PayByHour,表示按带宽使用时长计费;若为PayByTraffic,表示按流量计费。 PayByTraffic
bandwidth 公网带宽大小。单位为Mbps。若为0,表示不开通公网带宽。 1

结合公共请求参数和接口请求参数,最终得到的请求形式如下:

https://scaling.api.qcloud.com/v2/index.php?
Action=CreateScalingConfiguration
&Region=gz
&Timestamp=1465750149
&Nonce=46364
&SecretId=AKIDxxxxugEY
&Signature=5umi9gUWpTTyk18V2g%2FYi56hqls%3D
&scalingConfigurationName=mytest
&imageType=2
&imageId=img-50mr2ow7
&cpu=1
&mem=1
&storageType=1
&storageSize=10
&bandwidthType=PayByTraffic
&bandwidth=1

上述请求的返回结果如下,由结果可知,新创建的启动配置ID为asc-a19qoqq4。

{
    "code": 0,
    "message": "",
    "data": {
        "scalingConfigurationIdSet": [
            "asc-a19qoqq4"
        ]
    }
}

2. 创建一个新的伸缩组

有了启动配置,我们就可以创建伸缩组了,有关创建伸缩组的详细信息请参考创建伸缩组页面。
这里我们创建了一个新的伸缩组,其名称为mytest。该伸缩组使用的启动配置ID即为上一步我们新创建的启动配置,其ID为asc-a19qoqq4;伸缩组内的CVM实例数介于1到10之间,即一旦其中的实例数不在这个范围内,伸缩组会增加或减少实例,使其满足最大最小伸缩数的要求;此外,该伸缩组使用的移除最旧策略,即当需要移除实例时,移除最先加入伸缩组的实例;网络方面,该伸缩组使用了广州一区的基础网络。具体的接口请求参数如下表:

参数名称 描述 取值
scalingGroupName 用户定义的伸缩组名称 mytest
scalingConfigurationId 启动配置ID,其指定了通过弹性伸缩自动创建云服务器实例时所使用的模版。可调用查询启动配置(DescribeScalingConfiguration)接口查询。 asc-a19qoqq4
minSize 最小伸缩数,即伸缩组内最小CVM实例数,范围0-30,不大于maxSize。当伸缩组CVM实例数小于minSize时,AS会自动添加CVM实例,使得伸缩组内的当前实例数等于minSize。 1
maxSize 最大伸缩数,即伸缩组内最大CVM实例数,范围0-30,不小于minSize。当伸缩组CVM实例数大于maxSize时,AS会自动移出CVM实例,使得伸缩组内的当前实例数等于maxSize。 10
removePolicy 移除策略。只有两种取值:RemoveOldestInstance,表示移除最旧策略,即当需要移除实例时,移除最先加入伸缩组的实例;RemoveNewestInstance,表示移除最新策略,即当需要移除实例时,移除最后加入伸缩组的实例。 RemoveOldestInstance
vpcId 私有网络ID,默认为0,表示基础网络。可调用查询私有网络列表(DescribeVpcEx)接口查询。注意:该参数只支持unVpcId,即查询私有网络列表返回的“私有网络统一ID”unVpcId字段。 0
zoneIds.0 伸缩组所在地域Id。当vpcId为0时,此参数必传。可调用查询可用区(DescribeAvailabilityZones)接口查询。 100001

结合公共请求参数和接口请求参数,最终得到的请求形式如下:

https://scaling.api.qcloud.com/v2/index.php?
Action=CreateScalingGroup
&Region=gz
&Timestamp=1465751551
&Nonce=30253
&SecretId=AKIDxxxxugEY
&Signature=RfnIGpdebvtEQ%2BiL2CrXt%2Bpkirc%3D
&scalingGroupName=mytest
&scalingConfigurationId=asc-a19qoqq4
&minSize=1
&maxSize=10
&removePolicy=RemoveOldestInstance
&vpcId=0
&zoneIds_0=100001

上述请求的返回结果如下,由结果可知,新创建的伸缩组ID为asg-8r4dvrek。

{
    "code": 0,
    "message": "",
    "data": {
        "scalingGroupIdSet": [
            "asg-8r4dvrek"
        ]
    }
}

3. 创建伸缩组的告警触发策略

创建完伸缩组后就需要设置其告警触发策略,也就是规定伸缩组在什么情况下自动促发伸缩容,增减伸缩组中的云服务器实例,具体信息见创建告警触发策略页面。
这里我们为上述新建的ID为asg-8r4dvrek的伸缩组创建了告警触发策略,其名称为mytest。其具体的伸缩策略为当cpu使用率大于或等于50%时,则触发弹性伸缩,增加10个CVM实例。此外,该告警策略的冷却时间为300S,即一个伸缩活动执行完成后300S内,该伸缩组不能执行其他伸缩活动。具体的接口请求参数如下表:

参数名称 描述 取值
scalingGroupId 要创建告警触发策略的伸缩组Id。 asg-8r4dvrek
scalingPolicyName 用户自定义的告警策略名称。 mytest
metric 伸缩策略,具体采取的伸缩策略。 {"dimensionName":"cpu_usage",
"comparisonOperator":"EqualOrGreater",
"threshold":50}
adjustmentType 伸缩规则的调整方式。只有3种取值:
TotalCapacity: 将当前伸缩组的实例数量调整到指定数量。
QuantityChangeInCapacity:增加或减少指定数量的实例。
PercentChangeInCapacity:增加或减少指定比例的实例。
QuantityChangeInCapacity
adjustmentValue 伸缩规则的调整值,若为负号表示减小实例。 adjustmentType的3种取值范围分别如下:
TotalCapacity:0至30
QuantityChangeInCapacity : -30至30
PercentChangeInCapacity:-100至100。
10
cooldown 冷却时间,单位为S,表示在同一伸缩组内,一个伸缩活动执行完成后的一段锁定时间。在这段时间内,该伸缩组不能执行其他伸缩活动。 300

这里的metric表示的伸缩策略指的是:当cpu使用率大于或等于50%时,则触发弹性伸缩,增加或减少对应的云服务器。

结合公共请求参数和接口请求参数,最终的请求形式如下:

https://scaling.api.qcloud.com/v2/index.php?
Action=CreateScalingPolicy
&Region=gz
&Timestamp=1465753286
&Nonce=45428
&SecretId=AKIDxxxx8ugEY
&Signature=rPKej10n%2BAW5%2FlM9P%2FsTyhrlFIk%3D
&scalingGroupId=asg-8r4dvrek
&scalingPolicyName=mytest
&adjustmentType=QuantityChangeInCapacity
&adjustmentValue=10
&cooldown=300
&metric=%7B%22dimensionName%22%3A%22cpu_usage%22%2C%22comparisonOperator%22%3A%22EqualOrGreater%22%2C%22threshold%22%3A50%7D

注意:由于云API默认采用的是GET请求方法,因此在生成URL时需要对所有参数均进行URL编码。
上述请求的返回如下,由结果可知,新创建的告警策略ID为asp-ofalm43w。

{
    "code": 0,
    "message": "",
    "data": {
        "scalingPolicyIdSet": [
            "asp-ofalm43w"
        ]
    }
}

至此,我们得到了一个弹性伸缩组。该伸缩组的ID为asg-8r4dvrek,其中的CVM实例数能够保持在1到10之间;其使用了ID为asc-a19qoqq4的启动配置,即当伸缩组自动扩容时,会增加该启动配置所设定的CVM实例(CPU核数为1,内存大小为1GB,硬盘用的是10G的本地盘,带宽用的是按流量计费的1Mbps大小的公网带宽);该伸缩组使用了ID为asp-ofalm43w的告警策略,即当伸缩组整体的cpu使用率大于或等于50%时,则触发弹性伸缩,增加10个CVM实例。