弹性伸缩(Auto Scaling)是根据业务需求和策略自动调整计算能力(即实例数量)的服务。您可以指定实例的类型,即 ECS 实例或 ECI 实例。在业务需求增长时,弹性伸缩自动增加指定类型的实例,来保证计算能力;在业务需求下降时,弹性伸缩自动减少指定类型的实例,来节约成本。弹性伸缩不仅适合业务量不断波动的应用程序,同时也适合业务量稳定的应用程序。
Flow 支持将构建出来的包制品下载到ESS(弹性伸缩)的ECS实例中并按部署命令进行发布。
本文讲述如何使用 Flow 对 ESS 弹性伸缩组进行流水线式地构建部署。
前提条件
将业务代码上传至代码库。
步骤一:创建 ESS 伸缩组
登录Ess控制台并创建伸缩组,创建流程:https://help.aliyun.com/document_detail/25866.html
如图,该伸缩组当前包含 4 台 ECS 实例。
伸缩配置中设置了新扩容实例的基础镜像,其中包含了jdk、maven的基础环境。
当后续扩容活动发生时,新实例会按照该伸缩配置(指定的实例规格、镜像等)进行创建。
步骤二:创建 Flow 流水线
目标流水线:
创建一条空流水线,配置代码源。
选择构建任务中的“Java 构建上传”并进行配置(本案例中使用 Java 应用进行举例)。
选择部署任务中的“ESS ECS 部署”并进行配置。
参数名 | 说明 |
任务名称 | 自定义的任务名称。 |
构建集群 | 可为任务选择不同的构建集群。 |
下载流水线源 | 可为任务选择是否下载流水线源。开启下载流水线源后,您配置流水线源的源文件将会被下载至对应的工作目录下。 |
选择服务连接 | 选择任务连接的服务。如果没有服务连接,单击添加服务连接,根据界面提示,添加您需要的连接。选择任务的服务授权,使云效能选择ESS伸缩组进行部署。 |
地域 | 选择待发布Ess弹性伸缩组所在的地域。 |
伸缩组 | 选择待发布Ess弹性伸缩组的名称。 |
软件包 | 选择构建物上传步骤所创建的产出物名称。 |
下载路径 | 将tgz格式的制品压缩包下载到你的主机上的目录,如填写/home/admin/app/,制品的路径为/home/admin/app/download。 |
部署脚本 | 用于进行单机部署的脚本。 |
发布批次 | 选择批次数量来表示发布分批的数量。 |
分批方式 | 可选择手动确认或自动确认。例如,如果您需在完成第一批发布时先观察发布结果再决定后续操作,则可选择手动确认。 |
说明:如果您从未授权过,新建服务连接时,请先在服务授权/证书输入框后,单击新建,根据跳转完成阿里云RAM授权后再进行相应配置。
步骤三:运行流水线
配置好之后,触发流水线。构建完成之后,进入部署节点。
由于配置了分两批,手动确认,所以在部署完第一批之后,会暂停,你可以选择:
终止本次变更
继续第二批机器的发布
跳转到 OOS 执行管理查看发布单详情
点击“继续发布后”,可以看到 Flow 继续完成了本次部署。
结果验证
云效显示部署成功后,登录Ess伸缩组实例查看:
部署的包是否有下载到指定位置。
部署指令是否正确执行。
每次在 Flow 上进行ESS ECS的部署会伴随伸缩组内生命周期挂钩的创建或修改,目的是使后续新扩容的实例能同步伸缩组内最新一次的发布。查看伸缩组内的生命周期挂钩是否正确创建或修改,判断标识中的包地址、部署目录、部署指令与最新一次部署是否相同,如下图所示。
后续扩容
该伸缩组后续扩容出来的新实例,会触发上文部署流程中所设置的生命周期挂钩进行初始化部署。
登录新实例查看:
部署的包是否有下载到指定位置。
部署指令是否正确执行。