mod_proxy 대 mod_proxy_ajp 대 mod_jk


9

다음 환경에서 마이그레이션을 준비 중입니다.

아파치 2.0.2 --AJP-> JBoss4.2.2

아파치 2.2.3-???-> JBoss 5.1.0

두 사람을 어떻게 합치시겠습니까?

옵션은 다음과 같습니다.

  1. 클래식 AJP (Apache 용 mod_jk 구축을 의미)
  2. mod_proxy (JBoss에 HTTP 요청 전달)
  3. mod_proxy_ajp

옵션 2는 현재 AJP에서 JBoss의 응답을 더 이상 번역 할 필요가 없기 때문에 처리량이 적다는 것을 의미하기 때문에 가장 인기있는 솔루션이며, CPU 시간은 인프라에서 면밀히 검토해야하는 항목입니다. 옵션 2와 3에는 Red Hat이 지원하는 Apache 빌드도 제공됩니다.

현재 옵션 3을 사용하여 AJP를 무료로 제공하므로 옵션 1로 이동하는 것을 볼 수 없습니다.

따라서 옵션 2와 3의 장단점은 무엇입니까? CPU로드에 대한 우려가 실제로 우리가 걱정해야하는 것입니까? 이진 데이터 (AJP 트래픽)를 처리 할 때 손실되는 부분은 대역폭과 IO가 줄어 듭니까?

우리의 인프라는 개인 클라우드에서 가상화되는 동일한 RHEL 5 시스템에서 최대 9 개의 조정이 많은 JBosses (보통 절반 정도)에 이르는 Apache가 될 것 입니다.

포인터 / 조언에 미리 감사드립니다.

풍부한

답변:


8

mod_proxy_http클라이언트의 호스트 헤더가 필요하지 않은 경우 2

고전적인 mod_jk의 기능은 mod_proxy_ajp로 대체되었으므로 직접 말했듯이 해당 모듈을 직접 작성하고 유지 관리해야합니다.

나는 mod_proxy_http가 매우 깨끗한 해결책이라고 생각하며 그림에서 ajp를 가져옵니다. 그러나 ajp에서 http로 이동할 때주의해야 할 사항이 있습니다. 아파치 (호스트 헤더 포함)에서 수신 한 그대로 서버 헤더에 액세스해야하는 경우 ajp를 사용해야합니다. JBoss는 원래 클라이언트가 아닌 아파치에서 오는 새로운 http 요청을 보게됩니다. 클라이언트의 원격 IP 만 필요한 경우에도 아파치가 새 요청에 설정할 수있는 특수 헤더를 사용하여이를 얻을 수 있습니다. 그러나 응용 프로그램 계층에서 가상 호스팅을 수행하는 경우 ajp를 사용하는 것이 좋습니다.

성능과 관련하여 ajp 또는 http는 JBoss 및 일부 로컬 소켓 TCP 트래픽에 의한 처리가 필요합니다. 어느 쪽이 더 효율적인지 확인하기 위해 두 가지를 모두 시도해야하지만 전체적으로 총 서버로드의 매우 작은 비율이라고 생각합니다. Http는 더 복잡한 프로토콜이며 ajp는 웹과 앱 계층간에 효율적으로 효율적으로 설계되었으므로 이론적으로 ajp가 더 좋습니다. 즉, Tomcat 앱 서버 라인 외부에서 http가 더 잘 지원되는 경우가 많습니다.

나는 mod_proxy_ajp와 mod_proxy_http를 사용하는데 아무런 문제가 없었습니다.


Host헤더는 사용하는 경우 올바르게 통과 얻을 것이다ProxyPreserveHost On
DERF

Apache mod_proxy로 작업 할 때 httpd.apache.org/docs/2.4/mod/mod_proxy.html#x-headers보십시오 . 당신이 당신의 톰캣 서블릿의 일환으로 RemoteIpValve를 구성하는 경우 응용 프로그램 코드는 대부분의 정보가 투명하게 얻을 수 tomcat.apache.org/tomcat-8.0-doc/config/...
스콧 Markwell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.