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

创建弹性伸缩组

功能介绍

伸缩组是具有相同应用场景的实例的集合,是启停伸缩策略和进行伸缩活动的基本单位。伸缩组内定义了最大实例数、期望实例数、最小实例数、虚拟私有云、子网、负载均衡等信息。

  • 默认最多可以创建10个伸缩组。
  • 如果伸缩组配置了负载均衡,在添加或移除实例时,会自动为实例绑定或解绑负载均衡监听器。
  • 如果伸缩组使用负载均衡健康检查方式,伸缩组中的实例需要启用负载均衡器的监听端口才能通过健康检查。端口启用可在安全组中进行配置。

URI

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

表1 参数说明

参数

是否必选

参数类型

描述

project_id

String

项目ID

请求消息

  • 请求参数
    表2 请求参数

    参数

    是否必选

    参数类型

    描述

    scaling_group_name

    String

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

    scaling_configuration_id

    String

    伸缩配置ID,通过查询弹性伸缩配置列表接口获取,请参考查询弹性伸缩配置列表

    desire_instance_number

    Integer

    期望实例数量,默认值为最小实例数。

    最小实例数≤期望实例数≤最大实例数。

    min_instance_number

    Integer

    最小实例数量,默认值为0。

    max_instance_number

    Integer

    最大实例数量,默认值为0。

    cool_down_time

    Integer

    冷却时间,取值范围0-86400,默认为300,单位是秒。

    在每次伸缩活动完成之后,系统开始计算冷却时间。伸缩组在冷却时间内,会拒绝由告警策略触发的伸缩活动,其他类型的伸缩策略(如定时策略和周期策略)及手动触发的伸缩活动不受限制。

    lbaas_listeners

    Array

    弹性负载均衡器(增强型)信息,最多支持绑定6个负载均衡。列表数据结构请参考表3

    available_zones

    Array

    可用区信息。弹性伸缩活动中自动添加的云服务器会被创建在指定的可用区中。如果没有指定可用区,会由系统自动指定可用区。

    networks

    Array

    网络信息,最多支持选择5个子网,传入的第一个子网默认作为云服务器的主网卡。数据结构信息请参考表4

    security_groups

    Array

    安全组信息,仅支持选择1个安全组。数据结构信息请参考表5

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

    vpc_id

    String

    虚拟私有云(VPC)信息,获取VPC信息请参考《虚拟私有云API参考》的“查询VPC列表”获取。

    health_periodic_audit_method

    String

    伸缩组实例健康检查方式:ELB_AUDIT和NOVA_AUDIT。当伸缩组设置负载均衡时,默认为ELB_AUDIT;否则默认为NOVA_AUDIT。

    • ELB_AUDIT:负载均衡健康检查方式,在有监听器的伸缩组中有效。
    • NOVA_AUDIT:云服务器健康检查方式,是弹性伸缩自带的健康检查方式。

    health_periodic_audit_time

    Integer

    伸缩组实例的健康检查周期,可设置为1、5、15、60、180(分钟),若不设置该参数,默认为5。

    若设置为0,可以实现10秒级健康检查。

    health_periodic_audit_grace_period

    Integer

    伸缩组实例健康状况检查宽限期,取值范围0-86400,单位是秒,默认为600。

    当实例加入伸缩组并且进入已启用状态后,健康状况检查宽限期才会启动,伸缩组会等健康状况检查宽限期结束后才检查实例的运行状况。

    当伸缩组实例健康检查方式为ELB_AUDIT时,该参数生效。

    instance_terminate_policy

    String

    伸缩组实例移除策略:

    • OLD_CONFIG_OLD_INSTANCE(默认):从“较早创建的配置”创建的实例中选择较早创建的实例进行优先移除。
    • OLD_CONFIG_NEW_INSTANCE:从“较早创建的配置”创建的实例中选择较晚创建的实例进行优先移除。
    • OLD_INSTANCE:较早创建的实例被优先移除。
    • NEW_INSTANCE:较晚创建的实例将被优先移除。

    notifications

    Array

    通知方式:

    EMAIL为发送邮件通知。

    该通知方式已经被废除,建议给弹性伸缩组配置通知功能。请参考通知

    delete_publicip

    Boolean

    配置删除云服务器时是否删除云服务器绑定的弹性IP。取值为true或false,默认为false。
    • true:删除云服务器时,会同时删除绑定在云服务器上的弹性IP。当弹性IP的计费方式为包年包月时,不会被删除。
    • false:删除云服务器时,仅解绑定在云服务器上的弹性IP,不删除弹性IP。

    delete_volume

    Boolean

    配置删除云服务器时是否删除云服务器绑定的数据盘。取值为true或false,默认为false。
    • true:删除云服务器时,会同时删除绑定在云服务器上的数据盘。当数据盘的计费方式为包年包月时,不会被删除。
    • false:删除云服务器时,仅解绑定在云服务器上的数据盘,不删除数据盘。

    multi_az_priority_policy

    String

    伸缩组扩缩容时目标AZ选择的优先级策略:

    • EQUILIBRIUM_DISTRIBUTE(默认):均衡分布,云服务器扩缩容时优先保证available_zones列表中各AZ下虚拟机数量均衡,当无法在目标AZ下完成虚拟机扩容时,按照PICK_FIRST原则选择其他可用AZ。
    • PICK_FIRST:选择优先,虚拟机扩缩容时目标AZ的选择按照available_zones列表的顺序进行优先级排序。
    表3 lbaas_listeners字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    pool_id

    String

    后端云服务器组ID

    protocol_port

    Integer

    后端协议号,指后端云服务器监听的端口,取值范围[1, 65535]。

    weight

    Integer

    权重,指后端云服务器经分发得到的请求数量的比例,取值范围[0, 100]。

    表4 networks字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    id

    String

    网络ID

    表5 security_groups字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    id

    String

    安全组ID

  • 请求样例

    示例为创建一个满足下述要求的伸缩组:

    • 伸缩组名称为GroupNameTest。
    • 伸缩配置ID为47683a91-93ee-462a-a7d7-484c006f4440。
    • 虚拟私有云ID为a8327883-6b07-4497-9c61-68d03ee193a,网络ID为3cd35bca-5a10-416f-8994-f79169559870。
    • 最大实例数为10,期望实例数为0,最小实例数为0。
    • 健康检查方式为云服务器健康检查。
    • 伸缩组扩缩容时目标AZ选择的优先级策略为PICK_FIRST(选择优先)。

    请求样例可参考如下:

    POST https://{Endpoint}/autoscaling-api/v1/{project_id}/scaling_group
    
    {
        "scaling_group_name": "GroupNameTest",
        "scaling_configuration_id": "47683a91-93ee-462a-a7d7-484c006f4440",
        "desire_instance_number": 0,
        "min_instance_number": 0,
        "max_instance_number": 10,
        "health_periodic_audit_method": "NOVA_AUDIT",
        "vpc_id": "a8327883-6b07-4497-9c61-68d03ee193a",
        "available_zones": ["XXXa","XXXb"],
        "networks": [
            {
                "id": "3cd35bca-5a10-416f-8994-f79169559870"
            }
        ],
        "multi_az_priority_policy": "PICK_FIRST"
    }

响应消息

  • 响应参数
    表6 响应参数

    参数

    参数类型

    描述

    scaling_group_id

    String

    伸缩组ID。

  • 响应样例
    {
        "scaling_group_id": "a8327883-6b07-4497-9c61-68d03ee193a1"
    }

返回值

  • 正常

    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

    网关超时。

错误码

请参考错误码