我是 apache 和 tomcat 的新手,尝试使用 mod_proxy 实现集群,并能够运行多个 tomcat 实例,但遇到了问题。这是我的配置:
httpd.conf:
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_balancer.so
<Proxy balancer://testcluster stickysession=JSESSIONID>
BalancerMember ajp://localhost:8109 min=10 max=100 route=server1 loadfactor=1
BalancerMember ajp://localhost:8209 min=20 max=200 route=server2 loadfactor=1
</Proxy>
ProxyPass / balancer://testcluster/
重新启动 apache 时,error.log 中显示以下内容:
[Fri Feb 27 16:45:44 2015] [notice] Apache/2.2.22 (Ubuntu) configured -- resuming normal operations
[Fri Feb 27 16:46:48 2015] [warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
而且我的两个实例的 server.xml 已设置为 jvmRoute="server1" 和 jvmRoute="server1"...
答案1
我知道这是一个老问题,但也许答案对其他人有帮助。
最后两个加载的模块的模块名错误。mod_proxy_ajp.so
加载为proxy_module
和。mod_proxy_balancer.so
proxy_http_module
错误的:
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_balancer.so
正确的:
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module /usr/lib/apache2/modules/mod_proxy_balancer.so
答案2
不确定您使用的是哪种操作系统,但通常会执行以下操作:
- 启用模块:
a2enmod proxy
a2enmod proxy_http
。 - 就您而言,您想使用 AJP,因此您可能必须安装一两件东西(例如
a2enmod proxy_ajp
)。 - 在您的虚拟主机中(您可以这样做,
http.conf
但这不是最灵活的方式)。
这是您从问题中复制的内容:
<Proxy balancer://testcluster stickysession=JSESSIONID>
BalancerMember ajp://localhost:8109 min=10 max=100 route=server1 loadfactor=1
BalancerMember ajp://localhost:8209 min=20 max=200 route=server2 loadfactor=1
<Proxy>
ProxyPass / balancer://testcluster/
这是我的做法(没什么不同):
<Proxy balancer://testcluster >
BalancerMember ajp://localhost:8109 min=10 max=100 route=server1 loadfactor=1
BalancerMember ajp://localhost:8209 min=20 max=200 route=server2 loadfactor=1
<Proxy>
ProxyPass / balancer://testcluster/ stickysession=JSESSIONID