小编PHP*_*ger的帖子

在 tomcat7 上的 VPC 私有子网中自动部署战争

我有一个VPC公共和私有子网。

  • 公共子网包含 myNatingBastion实例
  • 私有子网包含我的应用程序服务器(ec2使用我的项目 war 文件运行 tomcat7 的3 个实例)。这 3 个实例背后是ELB

每当我想更新战争文件时,我都可以通过两种方式进行。

手动的

  1. 我将新的战争文件上传到 S3 存储桶
  2. SSH 到Bastion服务器(只能通过 SSH 连接)
  3. 从这里 SSH 到私有实例
  4. 从S3下载war文件,停止tomcat7替换旧war(并删除目录)
  5. 启动tomcat

我对每个实例重复上述步骤(目前有 3 个实例)

半手动 这是步骤

  1. 将新战争上传到 S3 存储桶
  2. 杀死一个实例(从 AWS 网站的控制面板)
  3. 缩放和启动配置会自动启动以保持最少的实例数。这将启动一个新实例并执行一个脚本,该脚本实际上从 S3 和其他一些环境设置和文件夹等下载战争。
  4. 当我看到新实例被创建、启动并运行并添加到 ELB 时,我杀死了另一个旧实例。
  5. 这样我一个一个地杀死所有旧实例,然后用最新升级的新实例替换它们。

第一种方法很快,但需要很多手动步骤。SSH 进出实例(实例上的 SSH 仅允许来自 BASTION 服务器)。下载、停止、替换、启动。

第二种方法很慢,实际上不是自动的。旧实例终止时间 + 新实例启动时间 + 部署新战争

我想实现以下目标

  1. 自动化升级过程(单击按钮)
  2. 非开发人员(如 QA 和支持人员)无需访问 AWS 网站或 SSH 密钥即可升级
  3. 快速升级
  4. 失败时回滚

有人可能会想为什么我不使用 Beanstalk,它很简单,只需上传新的战争文件,如果出现任何问题,自动升级所有具有回滚功能的实例?

这是我的原因(有些事情可能只是我的假设或缺乏知识)。

  1. 应用整体架构 …

authentication automated-install amazon-web-services amazon-vpc elastic-beanstalk

5
推荐指数
1
解决办法
564
查看次数