【问题标题】:Tomcat load-balancer unable to connect to server on other pcTomcat负载均衡器无法连接到其他电脑上的服务器
【发布时间】:2020-12-22 23:03:28
【问题描述】:

我使用以下配置设置了一个简单的负载均衡器

  • PC0 (win10) 是我的实际 PC,它运行 VirtualBox 和两台 PC(PC1 和 PC2)
  • PC1 (win10) 正在运行带有 mod_jk 负载平衡器和 tomcat 应用程序服务器的 Apache HTTP 服务器
  • PC2 (win10) 正在运行一个 tomcat 应用服务器

负载均衡器和tomcat服务器正在工作:

  1. 从 PC1,如果我浏览到 localhost,我会看到 Apache HTTP 服务器主页
  2. 从 PC1,如果我浏览到 localhost/jkstatus,我会看到 JK 状态管理器页面
  3. 从PC1,如果我浏览到localhost:8080,我会看到tomcat主页
  4. 从 PC1,如果我浏览到 localhost/examples,我会看到 tomcat 示例页面
  5. 从 PC1,如果我浏览到 PC2.ipaddres:8080,我会看到 tomcat 主页
  6. 从 PC2,如果我浏览到 PC1.ipaddres/jkstatus,我会看到 JK 状态管理器页面
  7. 从 PC2,如果我浏览到 PC1.ipaddres:8080,我会看到 tomcat 主页
  8. 从 PC2,如果我浏览到 PC1.ipaddres/examples,我会看到 tomcat 示例页面

这一切似乎都奏效了。现在,如果我关闭 PC1 上的 tomcat 应用程序服务器,那么 4 和 8 将不再工作:它会抛出 503 Service Unavailable 页面。负载均衡器似乎无法重定向到 PC2。实际上,JK 状态管理器页面显示 PC2 处于 ERR/REC 状态(PC 也是,但那是因为我关闭了那台 PC 上的 Tomcat)。

我没有在日志中看到任何可疑的东西。

接下来,我认为它必须与防火墙有关(阻止端口 8009),所以我禁用了所有 PC(PC0、PC1 和 PC2)上的防火墙。但这没有帮助。我假设这排除了防火墙阻止任何东西?

我仍然怀疑有什么东西会阻止连接...

有什么建议吗?

我的版本:

我的配置:

Apache/conf/httpd.conf,添加到底部:

# Load mod_jk module 
LoadModule jk_module modules/mod_jk.so 
<IfModule jk_module>
JkWorkersFile conf/workers.properties 
JkLogFile logs/mod_jk.log 
JkLogLevel info 
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" 
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories 
JkMount /examples balancer 
JkMount /examples/* balancer 
JkMount /jkstatus jkstatus 
</IfModule>

Apache/conf/workers.properties:

worker.list=jkstatus, balancer 
Declare Tomcat server worker1 
worker.worker1.type=ajp13 
worker.worker1.host=localhost
worker.worker1.port=8009 
worker.worker2.type=ajp13 
worker.worker2.host=10.160.85.122
worker.worker2.port=8009 
worker.balancer.type=lb 
worker.balancer.balance_workers=worker1,worker2 
worker.jkstatus.type=status 

Tomcat/conf/server.xml,添加:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" secretRequired="false"/> 
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1">

(在 PC2 上 jvmRoute="worker2"

【问题讨论】:

    标签: apache tomcat load-balancing mod-jk


    【解决方案1】:

    您能否在worker.properties中使用以下配置。

    worker.list=loadbalancer,status
    worker.template.port=8009
    worker.template.type=ajp13
    worker.template.ping_mode=A
    worker.template.socket_connect_timeout=10000
    worker.worker1.reference=worker.template
    worker.worker1.host=127.0.0.1
    worker.worker2.reference=worker.template
    worker.worker2.host=10.160.85.122
    worker.loadbalancer.balance_workers=worker1,worker2
    worker.loadbalancer.type=lb
    worker.loadbalancer.sticky_session=True
    worker.status.type=status
    

    Mod_JK:

    JkMount /* loadbalancer
    JkMount /jkstatus status 
    

    【讨论】:

      【解决方案2】:

      感谢您的回复。 不幸的是,它并没有解决问题。问题依旧。

      我还试图让情况变得更容易一些。我将 HTTP 服务器移动到 PC0,只在 PC1 上运行一个 tomcat 服务器。同样,问题没有改变。我仍然收到 503 错误。

      httpd.conf

      LoadModule jk_module modules/mod_jk.so 
      <IfModule jk_module>
      JkWorkersFile conf/workers.properties 
      JkLogFile logs/mod_jk.log 
      JkLogLevel info 
      JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" 
      JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories 
      JkMount /examples worker1
      JkMount /examples/* worker1
      </IfModule>
      

      workers.properties

      worker.list=worker1
      worker.worker1.type=ajp13
      worker.worker1.host=10.160.85.252
      worker.worker1.port=8009
      

      【讨论】:

        猜你喜欢
        • 2013-08-26
        • 2019-03-10
        • 1970-01-01
        • 2017-01-20
        • 2020-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多