AJP 란? 아파치(Apahce)서버에서 톰캣(Tomcat)까지[개발자가 되고싶은 개발일기]
AJP(Apache JServ Protocol)
는 Web Server(WS, Apache) 뒤에 있는,
WebApplicationServer(WAS, Tomcat)으로 부터,
WS로 들어오는 Request를 위임할 수 있는 Binary Protocol이다.
AJP
는 Application Server로 Ping 할 수있는 WS의 Monitoring 기능을 지원한다.
대체로 AJP
를 여러 WS로 부터 여러 WAS의 Load Balancing 구현에 이용한다.
흔히 아래와 같이 Tomcat의 server.xml
을 살펴보면,
AJP Port 설정과 Redirect Port가 설정되어 있다.
<Connector port="18010" protocol="AJP/1.3" redirectPort="80"/>
이는 WS(Apache)
에 들어온 Request가,
특정 WAS(Tomcat)에서 처리되는 Request인 경우 18010 port
를 이용해,
AJP Protocol
로 WAS(Tomcat)
의 80 Port
로 redirect 시켜준다.
위와 같이 AJP
를 사용하여 WS와 WAS가 요청을 위임하는 구간은 mod_jk
에 의해 구현된다.
mod_jk
는 Apache(WS)와 Tomcat(WAS)을 연동하기 위한 Module이다.
mod_jk
는 Tomcat의 일부로 배포 되지만, Apache(WS)에 설치되어야 한다.
mod_jk
는 단순하게 보면 아래와 같은 역할을 수행한다.
mod_jk
는 URL과 Port를 확인하여 WAS(Tomcat)으로 해당 Request 전송즉, WS(Apache)
와 WAS(Tomcat)
사이에서 URI와 Port를 검증 , 확인하여,
WAS에 Request를 실질적으로 위임시켜주는 역할을 수행한다.
mod_jk
가 중간 역할 및 LoadBalencer
역할을 수행하여,
WS 하나로 다중 WAS를 구현할 수 있게 된다.
AJP
와 mod_jk
로 Apache와 Tomcat이 서로 통신하는 과정은 아래와 같다.
Apache(WS)
의 httpd.conf
에 WAS(Tomcat)
연동 설정(AJP Port, URL, Port 등)을 추가하여, WAS(Tomcat)에서 처리할 요청을 지정.
Browser는 Apache(WS)의 접속 Port에 Request 전송
Apache(WS)
에 있는 mod_jk
는 해당 Request의 URL이 특정 WAS(Tomcat)에서 처리하는 Request인지 확인,
WAS(Tomcat)에 전송해야할 경우 AJP Port
를 통해 WAS(Tomcat)
에 Request를 전달.
WAS(Tomcat)
은 AJP Port
로 Request 수신 후, 동작하여 결과를 WS(Apache)
에 전송.
WS(Apache)
는 WAS(Tomcat)
에서 수신받은 Request 동작 결과를 Browser에 전송.
AJP (Apache JServ Protocol) is a binary protocol used to delegate requests from a web server (WS, such as Apache) to a web application server (WAS, such as Tomcat).
AJP supports monitoring capabilities for the web server to ping the application server. Rainbow Friends: Chapter 2