Apache-[warn] 프록시를 사용한 Tomcat 클러스터링: URL /에 유효한 프로토콜 핸들러가 없습니다. mod_proxy의 DSO 버전을 사용하는 경우

Apache-[warn] 프록시를 사용한 Tomcat 클러스터링: 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_modulemod_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

어떤 OS를 사용하고 있는지는 확실하지 않지만 다음을 수행하는 것이 일반적입니다.

  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

관련 정보