开发者社区> 问答> 正文

Swarm mode 集群容器自动伸缩

反向一觉 2017-10-30 15:49:05 1763
为了满足应用在不同负载下的需求,容器服务支持服务的弹性伸缩,即根据服务的容器资源占用情况自动调整容器数量。
您可以在创建应用时为应用设置容器自动伸缩规则,或者通过变更应用配置为已创建的应用添加容器自动伸缩规则。
[backcolor=transparent]弹性伸缩策略:
  • 当监测指标值超过所设定的上限,以用户设定的步长增加容器数量。
  • 当监测指标值低于所设定的下限,以用户设定的步长减少容器数量。

[backcolor=transparent]服务监测指标:
  • CPU 平均使用量
  • 内存平均使用量

前提条件
  • 需要将集群的 Agent 升级到最新版本。有关如何升级 Agent 的详细信息,参见 升级 Agent
  • 需要将集群的监控服务(acsmonitoring)升级到最新版本。有关如何升级监控服务的详细信息,参见 升级系统服务
  • 开通 RAM 并在集群中更新访问授权信息(操作路径:在 容器服务管理控制台,单击左侧导航栏中的 [backcolor=transparent]集群 > 选择所需的集群 > 单击右侧的 [backcolor=transparent]更多 > 单击 [backcolor=transparent]更新访问控制授权信息)。

使用说明
  • 容器服务在判断监测指标是否超出所设定的上下限时,使用的是采集周期(一分钟)内监测指标的平均值(即 CPU 平均使用量和内存平均使用量),而且只有当连续三个采集周期内的监测指标平均值均超出所设定的上下限时,容器服务才会触发扩容或伸缩操作,以避免因为监控数据抖动而引起频繁的扩容或缩容操作。
  • 容器缩容的时候,系统会删除集群里的容器,您需要提前做好数据备份。

设置方法
使用镜像创建应用
  1. 在创建应用时,选择 [backcolor=transparent]使用镜像创建。
    有关如何创建应用的详细信息,参见 创建应用

  2. 在页面最下边的 [backcolor=transparent]弹性伸缩 中,勾选 [backcolor=transparent]开启 自动伸缩并设置自动伸缩参数。
    约束规则:
    • [backcolor=transparent]扩容条件 的可选范围是 50%~100%,[backcolor=transparent]缩容条件 的可选范围是 0%~50%。
    • [backcolor=transparent]扩容条件 和 [backcolor=transparent]缩容条件 的差值不能小于30%。
    • [backcolor=transparent]步长 的可选范围为 1~5,默认为 1。
  • 设置 [backcolor=transparent]最小容器数量 和 [backcolor=transparent]最大容器数量。缩容时,如果容器数 ≤ [backcolor=transparent]最小容器数量,不会进行缩容操作;扩容时,如果容器数 ≥ [backcolor=transparent]最大容器数量,不会进行扩容操作。

[backcolor=transparent]注意:请谨慎设置伸缩策略。如果在您设置伸缩规则的时候,应用就满足所设置的伸缩条件而且伸缩后应用仍然满足伸缩条件,那么监控将会不断地触发伸缩。


使用编排模板创建应用
  1. 在创建应用时,选择 [backcolor=transparent]使用编排模板创建。
    有关如何创建应用的详细信息,参见 创建应用
  2. 选择 [backcolor=transparent]使用已有编排模板 或者使用您自己的编排模板。

  3. 添加容器自动伸缩的配置信息。
    • 通过 [backcolor=transparent]新增服务。
      在弹出的对话框中, 单击 [backcolor=transparent]更多设置,勾选 [backcolor=transparent]开启 自动伸缩并设置自动伸缩参数。
    • 手动在模板中设置
      在编排模板的labels配置中,添加相应的标签:指定步长(默认值为 1):aliyun.auto_scaling.step
    • 最小容器数量(默认值为 1):aliyun.auto_scaling.min_instances
    • 最大容器数量(默认值为 10):aliyun.auto_scaling.max_instances
    • 以 CPU 使用量为指标指定上限: aliyun.auto_scaling.max_cpu
    • 指定下限:aliyun.auto_scaling.min_cpu
  • 以内存使用量为指标
    • 指定上限:aliyun.auto_scaling.max_memory
    • 指定下限:aliyun.auto_scaling.min_memory

  • [backcolor=transparent]Compose V1/V2 编排示例:
  • [backcolor=transparent]web[backcolor=transparent]:
  • [backcolor=transparent]  image[backcolor=transparent]:[backcolor=transparent] registry[backcolor=transparent].[backcolor=transparent]aliyuncs[backcolor=transparent].[backcolor=transparent]com[backcolor=transparent]/[backcolor=transparent]acs[backcolor=transparent]-[backcolor=transparent]sample[backcolor=transparent]/[backcolor=transparent]wordpress[backcolor=transparent]:[backcolor=transparent]4.5
  • [backcolor=transparent]  ports[backcolor=transparent]:
  • [backcolor=transparent]    [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]'80'
  • [backcolor=transparent]  restart[backcolor=transparent]:[backcolor=transparent] always
  • [backcolor=transparent]  labels[backcolor=transparent]:
  • [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]logs[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]/var/[backcolor=transparent]log
  • [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]probe[backcolor=transparent].[backcolor=transparent]url[backcolor=transparent]:[backcolor=transparent] http[backcolor=transparent]:[backcolor=transparent]//container/license.txt
  • [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]probe[backcolor=transparent].[backcolor=transparent]initial_delay_seconds[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'10'
  • [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]routing[backcolor=transparent].[backcolor=transparent]port_80[backcolor=transparent]:[backcolor=transparent] http[backcolor=transparent]:[backcolor=transparent]//wordpress
  • [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]scale[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'3'
  • [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]auto_scaling[backcolor=transparent].[backcolor=transparent]max_cpu[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'70'
  • [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]auto_scaling[backcolor=transparent].[backcolor=transparent]min_cpu[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'40'
  • [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]auto_scaling[backcolor=transparent].[backcolor=transparent]step[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'1'

  • [backcolor=transparent]Compose V3 编排示例:
    1. [backcolor=transparent]version[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'3'
    2. [backcolor=transparent]services[backcolor=transparent]:
    3. [backcolor=transparent]  web[backcolor=transparent]:
    4. [backcolor=transparent]    image[backcolor=transparent]:[backcolor=transparent] wordpress[backcolor=transparent]:[backcolor=transparent]4
    5. [backcolor=transparent]    ports[backcolor=transparent]:
    6. [backcolor=transparent]      [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]80
    7. [backcolor=transparent]    deploy[backcolor=transparent]:
    8. [backcolor=transparent]      replicas[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]3
    9. [backcolor=transparent]      restart_policy[backcolor=transparent]:
    10. [backcolor=transparent]        condition[backcolor=transparent]:[backcolor=transparent] on[backcolor=transparent]-[backcolor=transparent]failure
    11. [backcolor=transparent]    labels[backcolor=transparent]:
    12. [backcolor=transparent]      aliyun[backcolor=transparent].[backcolor=transparent]routing[backcolor=transparent].[backcolor=transparent]port_80[backcolor=transparent]:[backcolor=transparent] wordpress
    13. [backcolor=transparent]      aliyun[backcolor=transparent].[backcolor=transparent]auto_scaling[backcolor=transparent].[backcolor=transparent]max_cpu[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'70'
    14. [backcolor=transparent]      aliyun[backcolor=transparent].[backcolor=transparent]auto_scaling[backcolor=transparent].[backcolor=transparent]min_cpu[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'40'
    15. [backcolor=transparent]      aliyun[backcolor=transparent].[backcolor=transparent]auto_scaling[backcolor=transparent].[backcolor=transparent]step[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'1'


    变更应用配置

    您可以通过已有应用的配置为已创建的应用添加容器自动伸缩设置。
    1. 在应用列表页面,选择需要设置的应用并单击右侧的 [backcolor=transparent]变更配置。
      有关变更配置的操作信息,参见 变更应用配置
    2. 在 [backcolor=transparent]模板 的labels配置中,添加容器自动伸缩相应的标签。
      [backcolor=transparent]Compose V1/V2 编排示例:[backcolor=transparent]web[backcolor=transparent]:
    3. [backcolor=transparent]  image[backcolor=transparent]:[backcolor=transparent] registry[backcolor=transparent].[backcolor=transparent]aliyuncs[backcolor=transparent].[backcolor=transparent]com[backcolor=transparent]/[backcolor=transparent]acs[backcolor=transparent]-[backcolor=transparent]sample[backcolor=transparent]/[backcolor=transparent]wordpress[backcolor=transparent]:[backcolor=transparent]4.5
    4. [backcolor=transparent]  ports[backcolor=transparent]:
    5. [backcolor=transparent]    [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]'80'
    6. [backcolor=transparent]  restart[backcolor=transparent]:[backcolor=transparent] always
    7. [backcolor=transparent]  labels[backcolor=transparent]:
    8. [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]logs[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]/var/[backcolor=transparent]log
    9. [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]probe[backcolor=transparent].[backcolor=transparent]url[backcolor=transparent]:[backcolor=transparent] http[backcolor=transparent]:[backcolor=transparent]//container/license.txt
    10. [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]probe[backcolor=transparent].[backcolor=transparent]initial_delay_seconds[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'10'
    11. [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]routing[backcolor=transparent].[backcolor=transparent]port_80[backcolor=transparent]:[backcolor=transparent] http[backcolor=transparent]:[backcolor=transparent]//wordpress
    12. [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]scale[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'3'
    13. [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]auto_scaling[backcolor=transparent].[backcolor=transparent]max_cpu[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'70'
    14. [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]auto_scaling[backcolor=transparent].[backcolor=transparent]min_cpu[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'40'
    15. [backcolor=transparent]    aliyun[backcolor=transparent].[backcolor=transparent]auto_scaling[backcolor=transparent].[backcolor=transparent]step[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'1'

    [backcolor=transparent]Compose V3 编排示例:
    1. [backcolor=transparent]version[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'3'
    2. [backcolor=transparent]services[backcolor=transparent]:
    3. [backcolor=transparent]  web[backcolor=transparent]:
    4. [backcolor=transparent]    image[backcolor=transparent]:[backcolor=transparent] wordpress[backcolor=transparent]:[backcolor=transparent]4
    5. [backcolor=transparent]    ports[backcolor=transparent]:
    6. [backcolor=transparent]      [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]80
    7. [backcolor=transparent]    deploy[backcolor=transparent]:
    8. [backcolor=transparent]      replicas[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]3
    9. [backcolor=transparent]      restart_policy[backcolor=transparent]:
    10. [backcolor=transparent]        condition[backcolor=transparent]:[backcolor=transparent] on[backcolor=transparent]-[backcolor=transparent]failure
    11. [backcolor=transparent]    labels[backcolor=transparent]:
    12. [backcolor=transparent]      aliyun[backcolor=transparent].[backcolor=transparent]routing[backcolor=transparent].[backcolor=transparent]port_80[backcolor=transparent]:[backcolor=transparent] wordpress
    13. [backcolor=transparent]      aliyun[backcolor=transparent].[backcolor=transparent]auto_scaling[backcolor=transparent].[backcolor=transparent]max_cpu[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'70'
    14. [backcolor=transparent]      aliyun[backcolor=transparent].[backcolor=transparent]auto_scaling[backcolor=transparent].[backcolor=transparent]min_cpu[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'40'
    15. [backcolor=transparent]      aliyun[backcolor=transparent].[backcolor=transparent]auto_scaling[backcolor=transparent].[backcolor=transparent]step[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'1'


    查看已创建的容器伸缩规则
    您可以查看已创建的容器伸缩规则。
    1. 登录 容器服务管理控制台
    2. 单击左侧导航栏中的 [backcolor=transparent]应用。
    3. 在 [backcolor=transparent]应用列表 页面,选择所需的应用,单击 [backcolor=transparent]变更应用配置。
      您可以看到已创建的容器伸缩规则。您可以在 [backcolor=transparent]模板 中修改容器伸缩规则。

    查看监控指标
    1. 单击左侧导航栏中的 [backcolor=transparent]应用。
    2. 在 [backcolor=transparent]应用列表 页面,选择所需的应用并单击应用的名称。
    3. 单击 [backcolor=transparent]容器列表,选择要查看的容器并单击 [backcolor=transparent]监控。
      您可以看到容器的监控信息。

      [backcolor=transparent]注意: 如果没有监控数据,查看监控服务(acsmonitoring)是否正确安装(容器状态及数量是否正确),查看集群 Agent 是否为最新版本, 监控服务(acsmonitoring)是否为最新版本;如果不是,进行升级。

    4. 单击 [backcolor=transparent]查看历史监控数据/设置报警规则。
      页面跳转到云监控管理控制台,您可以查看容器的监控信息。
    5. 单击左侧导航栏中的 [backcolor=transparent]容器服务,查看集群列表。
    6. 单击 [backcolor=transparent]查看全部规则,可以看到弹性伸缩自动设置的报警规则。

      [backcolor=transparent]注意:如果没有监控报警规则, 在集群中更新访问授权信息(在 [backcolor=transparent]集群列表 页面,选择所需的集群,单击 [backcolor=transparent]更多 >[backcolor=transparent]更新访问控制授权信息)。更新前需要先开通 RAM;否则会报错。

    7. 选中一个报警规则,您可以修改报警条件及通知人(支持短信,邮件等通知方式),也可以禁用报警规则。

    弹性计算 监控 数据安全/隐私保护 容器
    分享到
    取消 提交回答
    全部回答(0)
    + 订阅

    时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

    推荐文章
    相似问题
    推荐课程