【问题标题】:How to scale out Tomcat on AWS EC2 instance?如何在 AWS EC2 实例上扩展 Tomcat?
【发布时间】:2015-06-02 21:16:37
【问题描述】:

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

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

  1. 使用正在运行的实例的确切配置从现有实例创建快照 - 成功
  2. 从上述快照创建了一个 AMI - 成功
  3. 创建 Auto Scaling 组并启动配置 - 成功
  4. 扩展策略是在 CPU >= 65% 时创建一个新实例 2 次。 - 成功

上述过程仅创建一个新实例,但不会复制映像上存在的软件堆栈。

如何实现自动扩展,当 AWS 自动扩展发生时,AMI 的 Tomcat 服务器部分也会被复制并在新的扩展实例中启动。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    1. 最简单的方法是从运行中创建 AMI EC2 实例,然后配置您的 Auto Scaling 组以启动 基于某些指标的来自该 AMI 的新实例。
    2. 使用没有 Apache/Tomcat 或您的软件的基本 AMI,然后在启动时引导新实例以下载和配置所需的一切。

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

    【讨论】:

    • 要进行测试,请从 AMI 手动启动 EC2 实例并检查其上是否有 Tomcat/Apache。如果您从已安装 Tomcat 和 Apache 的正在运行或已停止的实例中捕获 AMI,则 AMI 将同时具有这两者。还要检查您的 Auto Scaling 组是否实际启动了正确的 AMI。除此之外,您必须提供比“没有工作”更多的细节才能获得帮助。
    • #1 不起作用,因为我的实例已损坏。现在我怎么知道它已经损坏了。这是通过重新启动该实例并且它没有出现。状态检查失败。系统日志也没有出现。亚马逊支持在这里也无济于事。由于快照本身已损坏,现在从快照还原实例也没有帮助。我所说的损坏是指 fstab 试图将一个块设备附加到实例但 fstab 找不到它,因为没有创建该块设备。这是 fstab 中的错误条目。更正了 fstab,但没有帮助。
    • #1 如果实例是健康的并且因此将其标记为答案将起作用。谢谢 jarmod
    猜你喜欢
    • 2022-01-14
    • 2021-01-23
    • 2012-02-28
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多