如何在AWS EC2实例上扩展Tomcat?

时间:2015-06-02 21:16:37

标签: tomcat amazon-web-services amazon-ec2 amazon-s3

有很多关于自动缩放的问题。但是没有一个谈论扩展这些服务器上安装的软件堆栈。 AWS Auto Scaling仅扩展资源。不是它上面的软件。在我的情况下,我期待将第一个实例上安装的Tomcat服务器(和Apache HTTPD服务器)扩展为AWS Scaling Service创建的新实例的一部分。

我按照常规流程在Amazon Web Services EC2实例上为我的应用程序建立扩展。

  1. 使用正在运行的实例的精确配置 - 成功
  2. 从现有实例创建快照
  3. 从上面的快照创建AMI - 成功
  4. 创建了自动缩放组并启动配置 - 成功
  5. 扩展策略是在CPU> = 65%上创建一个新实例2次。 - 成功
  6. 上述过程仅创建一个新实例,但不会复制图像上的软件堆栈。

    如何以这样的方式完成自动缩放:当AWS自动缩放发生时,AMI的Tomcat服务器部分也会被复制并在新的扩展实例中启动。

    我是否必须使用Puppet / Chef或任何此类工具来实现此目的?或者AWS中是否有使用命令行的选项?

    请注意,Elastic Load Balancer会根据启动配置自动添加新实例,但会显示“停止服务”。因为新扩展的实例上没有安装Apache服务器。

1 个答案:

答案 0 :(得分:4)

您可以直接从EC2实例创建AMI,而不是从快照创建AMI。快照适用于EBS卷。检查您是否已在安装并运行Apache / Tomcat的运行EC2实例上正确创建了AMI(并配置为在重新启动时自动启动)。

不,您不必使用Puppet / Chef或任何其他CM工具。你可以通过以下几种方式做你想做的事:

  1. 最简单的方法是从跑步中创建AMI EC2实例,然后配置Auto Scaling组以启动 来自该AMI的新实例基于某个指标。
  2. 使用不带Apache / Tomcat的基础AMI或您的软件,然后在启动时引导新实例以下载和配置所需的所有内容。
  3. #1的缺点是您的AMI会很快过时。 #2的缺点是您的实例需要更长时间才能投入使用。我建议将#1和#2组合使用,特别是每隔几个月捕获一个新的AMI,这将成为您启动的基础AMI,并在启动时通过userdata init脚本更新实例。