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

如何在AWS EC2实例上扩展Tomcat?,tomcat,amazon-web-services,amazon-ec2,amazon-s3,Tomcat,Amazon Web Services,Amazon Ec2,Amazon S3,有许多关于自动缩放的问题。但没有一个提到要扩展安装在这些服务器上的软件堆栈。AWS自动缩放仅扩展资源。不是上面的软件。在我的例子中,我希望扩展安装在第一个实例上的Tomcat服务器(和ApacheHTTPD服务器),使其成为AWS Scaling Service创建的新实例的一部分 我按照常规流程在AmazonWebServicesEC2实例上为我的应用程序建立伸缩性 使用运行实例的精确配置从现有实例创建快照-成功 从上面的快照创建AMI-成功 创建自动缩放组并启动配置-成功 扩展策略是在CPU

有许多关于自动缩放的问题。但没有一个提到要扩展安装在这些服务器上的软件堆栈。AWS自动缩放仅扩展资源。不是上面的软件。在我的例子中,我希望扩展安装在第一个实例上的Tomcat服务器(和ApacheHTTPD服务器),使其成为AWS Scaling Service创建的新实例的一部分

我按照常规流程在AmazonWebServicesEC2实例上为我的应用程序建立伸缩性

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

    当AWS自动伸缩发生时,AMI的Tomcat服务器部分也被复制并在新的伸缩实例中启动,我如何实现自动伸缩呢

    我是否一定要使用木偶/厨师或任何此类工具来实现这一点?或者AWS中是否有使用命令行的选项


    请注意,弹性负载平衡器会根据启动配置自动将新实例添加到它上面,但它会显示“停止服务”,因为新的扩展实例上没有安装Apache服务器。

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

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

  • 最简单的方法是从您的跑步记录中创建AMI EC2实例,然后配置要启动的自动缩放组 基于某些度量的来自该AMI的新实例
  • 使用没有Apache/Tomcat或您的软件的基本AMI,然后在启动时引导新实例来下载和配置所需的一切

  • #1的缺点是,您的AMI很快就会过时。#2的缺点是实例需要更长的时间才能投入使用。我建议结合使用#1和#2,特别是每隔几个月捕获一个新的AMI,它将成为启动的基础AMI,并在启动时通过userdata init脚本更新实例。

    要进行测试,请从AMI手动启动EC2实例,并检查其上是否有Tomcat/Apache。如果您从同时安装了Tomcat和Apache的正在运行或停止的实例捕获AMI,那么AMI将同时安装这两个实例。还要检查自动缩放组是否实际启动了正确的AMI。除此之外,您还必须提供比“不起作用”更详细的信息才能获得帮助。#1不起作用,因为我的实例已损坏。现在我怎么知道它坏了。这是通过重新启动该实例实现的,但它没有出现。状态检查失败。系统日志也不会出现。亚马逊的支持也帮不上忙。现在,从快照恢复实例也没有帮助,因为快照本身已损坏。所谓损坏,我的意思是,有一个块设备fstab正试图连接到实例,但fstab找不到它,因为该块设备未创建。这是fstab中的一个错误条目。更正了该fstab,但它没有帮助。#1将在实例运行正常时起作用,因此将其标记为答案。谢谢jarmod