【问题标题】:Does it make sense to deploy more instance of Tomcat on a VM?在 VM 上部署更多 Tomcat 实例是否有意义?
【发布时间】:2011-06-02 17:56:36
【问题描述】:

类似于“在同一台服务器上拥有多个 tomcat 实例是否有意义?”的问题?但在这种情况下,Tomcat 是在 VM 上运行的。

我知道答案可能是“视情况而定”,但我想探讨一下这个问题。什么时候有意义? VM 的具体注意事项是什么?

我听说的原因: 1) JVM 使用可用资源的能力受到某种程度的限制。所以分配多个tomcat实例会更好地利用资源。不确定这是一个很好的理由。这是曾经真实但不再真实的事情之一吗? 2)如果一个tomcat实例失败,另一个可以接管。

缺点: 当您有多个版本且复杂性更高时,开销会更大。

如果我们需要负载平衡,将第二个 tomcat 放在另一个 VM 中是否“更好”?

【问题讨论】:

    标签: java tomcat jvm tomcat6 vmware


    【解决方案1】:

    如果您可以选择,最好使用不同的虚拟机。您仍然可以获得您提到的多个 JVM 的所有资源利用优势。您还可以获得没有单点故障的冗余;您的 VM 崩溃不会关闭集群中的每个节点。

    如果您必须使用一台虚拟机,则使用一个 tomcat 实例与使用多个时要考虑的事项是:

    1. 应用程序是否需要不同的重启/备份/要求?当其他应用应该继续运行时,您不希望被困在一个实例上并且不得不为一个应用重新启动它。
    2. tomcat 中运行的应用程序是否需要直接相互通信(访问对象实例、配置设置等)?远程通信始终是一种可能(首选),但我看到过旨在与同一 tomcat 实例上的其他 WAR 通信的 WAR。

    可能的情况是您会受到上述任何一项的约束,并且您可以做任何您认为最适合您的事情。我的偏好将按以下顺序排列:

    1. 独立的虚拟机
    2. 同样的虚拟机,同样的 tomcat
    3. 相同的虚拟机,不同的 tomcats

    2 和 3 的顺序只是因为我不想管理不必要的事情。一个tomcat比2个或更多更容易。但最好的分离是在服务器级别。

    【讨论】:

    • 您建议如何实现 3.(相同的 VM - 不同的 tomcat)?
    • @FoxyBOA - 对于 3 个不同的应用程序,出于与上述相同的原因,最好使用单独的虚拟机,例如他们可能有不同的部署/重新启动要求,您不希望一个应用程序的部署取消另一个应用程序。但是,如果这太难/太贵,我会再次建议使用 1 个 VM 和 1 个 Tomcat 实例,因为它需要管理的东西更少。但是,您在单个 tomcat 实例上放置的应用程序越多,您需要进行的负载/性能测试就越多,以确保单个实例可以处理系统上所有应用程序的负载。如果一个盒子的性能无法接受,那就多用。
    • 这个问题没有“正确”的答案,你必须尝试一些东西,看看它是否适合你的需要。如果不能确保以后很容易改变主意。
    • 我明白你的观点。我无法想象你打算如何实施 3。永远不要这样。 IMO 虚拟机 == Tomcat。我错了吗?
    • 您基本上为每个 tomcat 实例使用不同的端口。这是一些 apache 文档链接,解释了您如何/为什么要这样做... 1:tomcat.apache.org/tomcat-3.2-doc/… 2:tomcat.apache.org/tomcat-3.2-doc/… 您也可以只在 Google 上搜索“运行多个 tomcat 实例”之类的内容
    猜你喜欢
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 2020-04-16
    • 2015-05-08
    相关资源
    最近更新 更多