【问题标题】:Clustering doesn't work集群不起作用
【发布时间】:2011-04-15 06:01:47
【问题描述】:

我为两个 tomcat 配置集群,前面使用 apache,mod_jk 作为连接器。我尝试了一个测试应用程序来检查配置,它工作正常。会话正在成功复制,并且成功检测到故障转移。但是当我为我的实际应用程序尝试这个时,它不起作用。我在 httpd.conf 中进行了相应的修改并且非常仔细。没有例外,日志中没有错误。我无法追踪问题。最初,我为特定类获得了NotSerializableException,并且我使它们可序列化。现在也不例外,但如果托管 tomcat 关闭,即使集群的其他 tomcat 成员还活着,我仍然无法加载应用程序。你们能帮帮我吗?我可以理解,当您不确定问题时,很难产生解决方案。

【问题讨论】:

    标签: tomcat apache2 load-balancing cluster-computing


    【解决方案1】:

    所以您有 2 个服务,配置方式相同,除了一个正确故障转移而另一个没有?

    当您看到看似不可能的事情时,有一个通用的经验法则。这条规则是你没有看到你认为你看到的东西。经常因为被戏称为PEBKAC(键盘和椅子之间存在问题)。真正令人沮丧的是,不管它多么明显,你可以盯着它看 100 次,它不会很明显,因为你看到的是你“知道”的东西,而不是那里的东西。

    根据我的经验,有两种解决此类问题的好方法。

    1. 把它带给其他人,并让他们找出你的不同之处。鉴于他们看到的是那里的东西,而不是你“知道”的东西,他们经常会看到你看不到的东西。 (在整个过程中,您也许有一天会回报您的恩惠。)
    2. 从工作配置和非工作配置开始,并开始“平分”它们之间的路径,直到你得到一个最小的差异来说明工作和非工作之间的区别。缩小这种差异,您就会知道要解决什么问题,或者有一个测试用例可以提供给其他人。

    您可能需要采用第二种方法。你可能不想——我从来没有——但它通常没有你想象的那么痛苦。您首先在测试系统上复制完整的应用程序,并证明您有同样的失败。 (如果你不这样做,那么你开始仔细寻找生产和测试之间的差异。特别是查看操作系统版本、库版本等。)

    假设您有一个测试系统,请保存该配置。然后开始删除您认为与配置问题无关的大量实际应用程序,定期测试您是否走在正确的道路上。 (并且每次都节省。)一旦你有了一个最小的应用程序,就开始尝试将它带到工作的测试应用程序。在某个地方,您会发现有所作为的变化。它可能在任何地方。一旦找到它,您通常会确切地知道如何修复您的生产系统。或者,如果您不这样做,您将相当清楚地知道您的问题。

    有时您会发现一个奇怪的错误。如果是这样,那么您应该开始尝试尽可能简化所有内容,直到您有一个好的错误报告可以发送。

    【讨论】:

    • @Btilly,配置没有任何问题,因为我在 2-3 次测试应用程序中尝试了这个,并且一切正常,但是当我尝试为我的出色 webapp 实现相同功能时,它没有工作。应用程序安全性或我和我的团队无法追踪的其他任何地方可能存在问题。
    • @Kuri:在应用程序的某个深处,它可能会以您不知道的方式缓存内容。例如,有人将内容写入文件。无论如何,我所描述的二进制搜索算法,尽管它可能是一个很大的 PITA,但它是我所知道的用于追踪大量代码中完全未知的差异的唯一方法。而且你有一个完全未知的差异需要处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    相关资源
    最近更新 更多