【发布时间】:2020-12-22 23:03:28
【问题描述】:
我使用以下配置设置了一个简单的负载均衡器
- PC0 (win10) 是我的实际 PC,它运行 VirtualBox 和两台 PC(PC1 和 PC2)
- PC1 (win10) 正在运行带有 mod_jk 负载平衡器和 tomcat 应用程序服务器的 Apache HTTP 服务器
- PC2 (win10) 正在运行一个 tomcat 应用服务器
负载均衡器和tomcat服务器正在工作:
- 从 PC1,如果我浏览到 localhost,我会看到 Apache HTTP 服务器主页
- 从 PC1,如果我浏览到 localhost/jkstatus,我会看到 JK 状态管理器页面
- 从PC1,如果我浏览到localhost:8080,我会看到tomcat主页
- 从 PC1,如果我浏览到 localhost/examples,我会看到 tomcat 示例页面
- 从 PC1,如果我浏览到 PC2.ipaddres:8080,我会看到 tomcat 主页
- 从 PC2,如果我浏览到 PC1.ipaddres/jkstatus,我会看到 JK 状态管理器页面
- 从 PC2,如果我浏览到 PC1.ipaddres:8080,我会看到 tomcat 主页
- 从 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 http 服务器:httpd-2.4.46-win64-VS16 (https://www.apachelounge.com/download/)
- Tomcat:apache-tomcat-9.0.41-windows-x64
- Tomcat 连接器 (mod_jk):mod_jk-1.2.48-win64-VS16 (https://www.apachelounge.com/download/)
我的配置:
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