部署应用到一组ECS实例

通过应用发布管理功能,将一个Java应用程序部署到一组云服务器ECS上。应用管理提供集中化、可重复的流程,用于在多台服务器上进行应用发布与生命周期管理,以提升部署效率和可靠性。

方案架构

应用管理、对象存储OSS和云服务器ECS协同工作,实现应用的自动化部署。

image

其核心工作流程如下:

  1. 定义应用与资源:在应用管理服务中创建应用和应用分组,并将目标ECS实例导入分组。

  2. 准备部署物:将应用程序的JAR包上传至对象存储OSS的存储空间(Bucket),并在应用下创建包含JAR包信息和应用部署脚本的部署物。

  3. 执行部署:通过应用管理服务,将指定的部署物发布到目标应用分组。应用管理通过自动化任务,完成应用部署物下载和应用启动等操作。

关键概念

应用、应用分组和部署物是阿里云应用管理中的核心概念:

  • 应用:由应用程序和其部署所需的资源构成,作为一个整体进行管理与运维。

    • 应用程序:待部署的应用程序,例如 Web 服务、机器学习模型、数据库服务等。

    • 资源:部署应用程序所需的云资源,例如 ECS、ESS 伸缩组、容器集群等。

  • 应用分组:同一个应用下可以划分多个分组,用于隔离不同环境的资源和配置。例如:

    • 按环境划分:prod-group(生产环境分组)、pre-group(预发环境分组)。

    • 按地域划分:hangzhou-group(杭州地域分组)、beijing-group(北京地域分组)。分组划分完成后,需为每个分组导入资源。

  • 部署物:部署物是待发布应用程序的源文件和启动/停止脚本的集合。包含了应用程序发布所需的全部信息,用于实现应用程序的规范化和版本化管理。将部署物发布到应用分组即可完成应用发布。

实施步骤

  1. 创建应用并导入ECS实例。

    1. 如果没有ECS实例,前往ECS控制台-自定义购买页面,创建Linux操作系统的ECS实例。

      建议ECS镜像选择Alibaba Cloud Linux 3.2104 LTS 64位或Ubuntu 22.04 64位。后续示例中的脚本基于这两种镜像编写。如果使用其他镜像,请参考示例并根据实际情况修改脚本。
    2. 前往ECS控制台-应用管理页面,单击导入已有资源创建,创建应用和应用分组,并导入ECS实例到应用分组。

  2. 创建OSS部署物。

    1. 下载官方示例JAR,并上传至OSS

    2. 前往ECS控制台-应用管理页面,在我的应用页签下,单击目标应用名称。

    3. 在应用详情页,选择部署物页签,然后单击创建部署物

    4. 创建部署物页面,部署物类型选择OSS文件,设置参数后单击确定保存。

      • OSS文件信息:设置文件所在的OSS Bucket和文件路径。

        如果ECS实例和OSS Bucket在同一地域,可勾选内网下载提高下载速度。
      • 工作目录:设置应用启动/停止脚本的执行目录。OSS文件会被自动下载到该目录。示例:/root/deploy

      • 应用启动脚本

        Alibaba Cloud Linux

        function start_application() {
          set -e
          yum install -y maven-3.5.4
          java -jar ./sample-spring-1.0-SNAPSHOT.jar &
        }
        
        start_application

        Ubuntu

        function start_application() {
          set -e
          apt update
          apt install -y maven
          java -jar ./sample-spring-1.0-SNAPSHOT.jar &
        }
        
        start_application
      • 应用停止脚本

        ### Stop the application (if any)
        function stop_application() {
          PID=$(ps -ef | grep "sample-spring-1.0-SNAPSHOT.jar" | grep -v "grep" | awk '{print $2}')
          if [ -n "$PID" ]; then
            kill -9 $PID
          fi
        }
        
        stop_application
  3. 返回部署物列表,找到刚创建的部署物,单击发布。选择目标分组,单击确定开始部署。

  4. 结果验证。

    1. 进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。根据页面提示登录,进入终端页面。

    2. 执行curl http://localhost:8080/hello命令。返回Alibaba Spring Sample!表示部署成功。