Tomcat Clustering With Apache-[warn] 代理:没有对 URL / 有效的协议处理程序。如果您使用的是 mod_proxy 的 DSO 版本

Tomcat Clustering With Apache-[warn] 代理:没有对 URL / 有效的协议处理程序。如果您使用的是 mod_proxy 的 DSO 版本

我是 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.soproxy_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

不确定您使用的是哪种操作系统,但通常会执行以下操作:

  1. 启用模块:a2enmod proxy a2enmod proxy_http
  2. 就您而言,您想使用 AJP,因此您可能必须安装一两件东西(例如a2enmod proxy_ajp)。
  3. 在您的虚拟主机中(您可以这样做,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

相关内容