弹性伸缩 ESS ECS 部署

弹性伸缩(Auto Scaling)是根据业务需求和策略自动调整计算能力(即实例数量)的服务。您可以指定实例的类型,即 ECS 实例或 ECI 实例。在业务需求增长时,弹性伸缩自动增加指定类型的实例,来保证计算能力;在业务需求下降时,弹性伸缩自动减少指定类型的实例,来节约成本。弹性伸缩不仅适合业务量不断波动的应用程序,同时也适合业务量稳定的应用程序。

Flow 支持将构建出来的包制品下载到ESS(弹性伸缩)的ECS实例中并按部署命令进行发布。

本文讲述如何使用 Flow 对 ESS 弹性伸缩组进行流水线式地构建部署。

image

前提条件

步骤一:创建 ESS 伸缩组

登录Ess控制台并创建伸缩组,创建流程:https://help.aliyun.com/document_detail/25866.html

image

如图,该伸缩组当前包含 4 台 ECS 实例。

image

伸缩配置中设置了新扩容实例的基础镜像,其中包含了jdk、maven的基础环境。

当后续扩容活动发生时,新实例会按照该伸缩配置(指定的实例规格、镜像等)进行创建。

步骤二:创建 Flow 流水线

目标流水线:

image

  • 创建一条空流水线,配置代码源。

  • 选择构建任务中的“Java 构建上传”并进行配置(本案例中使用 Java 应用进行举例)。

image

  • 选择部署任务中的“ESS ECS 部署”并进行配置。

imageimage.png

参数名

说明

任务名称

自定义的任务名称。

构建集群

可为任务选择不同的构建集群。

下载流水线源

可为任务选择是否下载流水线源。开启下载流水线源后,您配置流水线源的源文件将会被下载至对应的工作目录下。

选择服务连接

选择任务连接的服务。如果没有服务连接,单击添加服务连接,根据界面提示,添加您需要的连接。选择任务的服务授权,使云效能选择ESS伸缩组进行部署。

地域

选择待发布Ess弹性伸缩组所在的地域。

伸缩组

选择待发布Ess弹性伸缩组的名称。

软件包

选择构建物上传步骤所创建的产出物名称。

下载路径

将tgz格式的制品压缩包下载到你的主机上的目录,如填写/home/admin/app/,制品的路径为/home/admin/app/download

部署脚本

用于进行单机部署的脚本。

发布批次

选择批次数量来表示发布分批的数量。

分批方式

可选择手动确认自动确认。例如,如果您需在完成第一批发布时先观察发布结果再决定后续操作,则可选择手动确认

说明:如果您从未授权过,新建服务连接时,请先在服务授权/证书输入框后,单击新建,根据跳转完成阿里云RAM授权后再进行相应配置。

步骤三:运行流水线

配置好之后,触发流水线。构建完成之后,进入部署节点。

由于配置了分两批,手动确认,所以在部署完第一批之后,会暂停,你可以选择:

  • 终止本次变更

  • 继续第二批机器的发布

  • 跳转到 OOS 执行管理查看发布单详情

image

点击“继续发布后”,可以看到 Flow 继续完成了本次部署。

image

结果验证

  • 云效显示部署成功后,登录Ess伸缩组实例查看:

    1. 部署的包是否有下载到指定位置。

    2. 部署指令是否正确执行。

    3. 每次在 Flow 上进行ESS ECS的部署会伴随伸缩组内生命周期挂钩的创建或修改,目的是使后续新扩容的实例能同步伸缩组内最新一次的发布。查看伸缩组内的生命周期挂钩是否正确创建或修改,判断标识中的包地址、部署目录、部署指令与最新一次部署是否相同,如下图所示。

  1. image

后续扩容

该伸缩组后续扩容出来的新实例,会触发上文部署流程中所设置的生命周期挂钩进行初始化部署。

  • 登录新实例查看:

  1. 部署的包是否有下载到指定位置。

  2. 部署指令是否正确执行。