通过应用发布管理功能,将一个Java应用程序部署到一组云服务器ECS上。应用管理提供集中化、可重复的流程,用于在多台服务器上进行应用发布与生命周期管理,以提升部署效率和可靠性。
方案架构
应用管理、对象存储OSS和云服务器ECS协同工作,实现应用的自动化部署。
其核心工作流程如下:
定义应用与资源:在应用管理服务中创建应用和应用分组,并将目标ECS实例导入分组。
准备部署物:将应用程序的JAR包上传至对象存储OSS的存储空间(Bucket),并在应用下创建包含JAR包信息和应用部署脚本的部署物。
执行部署:通过应用管理服务,将指定的部署物发布到目标应用分组。应用管理通过自动化任务,完成应用部署物下载和应用启动等操作。
关键概念
应用、应用分组和部署物是阿里云应用管理中的核心概念:
应用:由应用程序和其部署所需的资源构成,作为一个整体进行管理与运维。
应用程序:待部署的应用程序,例如 Web 服务、机器学习模型、数据库服务等。
资源:部署应用程序所需的云资源,例如 ECS、ESS 伸缩组、容器集群等。
应用分组:同一个应用下可以划分多个分组,用于隔离不同环境的资源和配置。例如:
按环境划分:
prod-group(生产环境分组)、pre-group(预发环境分组)。按地域划分:
hangzhou-group(杭州地域分组)、beijing-group(北京地域分组)。分组划分完成后,需为每个分组导入资源。
部署物:部署物是待发布应用程序的源文件和启动/停止脚本的集合。包含了应用程序发布所需的全部信息,用于实现应用程序的规范化和版本化管理。将部署物发布到应用分组即可完成应用发布。
实施步骤
创建应用并导入ECS实例。
如果没有ECS实例,前往ECS控制台-自定义购买页面,创建Linux操作系统的ECS实例。
建议ECS镜像选择Alibaba Cloud Linux 3.2104 LTS 64位或Ubuntu 22.04 64位。后续示例中的脚本基于这两种镜像编写。如果使用其他镜像,请参考示例并根据实际情况修改脚本。
前往ECS控制台-应用管理页面,单击导入已有资源创建,创建应用和应用分组,并导入ECS实例到应用分组。
创建OSS部署物。
前往ECS控制台-应用管理页面,在我的应用页签下,单击目标应用名称。
在应用详情页,选择部署物页签,然后单击创建部署物。
在创建部署物页面,部署物类型选择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_applicationUbuntu
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
返回部署物列表,找到刚创建的部署物,单击发布。选择目标分组,单击确定开始部署。
结果验证。
进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。根据页面提示登录,进入终端页面。
执行
curl http://localhost:8080/hello命令。返回Alibaba Spring Sample!表示部署成功。