베하~~~안녕하세요 BetterMonday 팀입니다. 오늘은 Apache Web Server와 tomcat을 연동하는 벙법인 mod_jk와mod_proxy의 차이점에 대해 알아보는 시간을 가지도록 하겠습니다.
그럼 시~~~작 하겠습니다~~~
아파치와 톰캣을 연동하는 이유
- Tomcat 서버는 본연의 임무인 서블릿 컨테이너의 역할만 하고, Apache HTTP Server는 웹서버의 역할을 하도록 각각의 기능을 분리하기 위해 연동을 할 수 있다.
- Apache HTTP Server에서 제공하는 편리한 기능을 사용하기 위해서 연동을 할수 있다.
- 대규모 사용자가 사용하는 시스템을 구축할 때 웹 서버인 아파치와 연동을 하면 부하 분산의 효과를 가질 수 있다. mod_jk의 Load Balancing과 FailOver 기능을 사용하여 안정적으로 운영 할 수 있다.
- 아파치 내에서만 설정할 수 있는 부분이 있고, 아파치에서 제공하는 유용한 모듈들을 톰캣에서 사용할 수 없기 때문이다.
연동 원리
아파치와 톰캣이 연동하기 위해선 AJP를 통해 서로 통신을 하여야 한다.
AJP란 아파치가 웹서버와 외부 서비스(톰캣 등)과 연동하기 위해 정한 규약(프로토콜) 이다.
아파치는 이를 사용하여 80포트로 들어오는 요청은 자신이 받고, 이 요청중 서블릿을 필요로 하는 요청은 톰캣에 접속하여 처리한다.
- 아파치 웹서버의 httpd.conf 에 톰캣 연동을 위한 설정을 추가하고 톰캣에서 처리할 요청을 지정
- 사용자의 브라우저는 아파치 웹서버(보통 80포트)에 접속해 요청
- 아파치 웹서버는 사용자의 요청이 톰캣에서 처리하도록 지정된 요청인지 확인. 요청을 톰캣에서 처리해야 하는 경우
아파치 웹서버는 톰캣의 AJP포트(보통 8009포트)에 접속해 요청을 전달
- 톰캣은 아파치 웹서버로부터 요청을 받아 처리한 후, 처리 결과를 아파치 웹서버에 되돌려줌
- 아파치 웹서버는 톰캣으로부터 받은 처리 결과를 사용자에게 전송
Apache httpd web server 와 tomcat을 연계하는 방법은 세 가지가 있습니다.
전부터 많이 쓰던 방법은 Tomcat connector(mod_jk)를 사용하는 방법이고 다른 하나는 mod_proxy
를 사용하여 reverse proxy기능을 사용하는 방법, 마지막은 mod_proxy_ajp를 사용하여 AJP Protocol을 reverse proxy로 사용하는 방법이 있습니다.
mod_proxy
mod_proxy는 Apache 서버에서 포워드 프록시,리버스 프록시 ,그리고 부하 분산 기능을 위해 사용하는 모듈이다. 이 모듈은 내장 모듈이며, httpd 패키지를 설치하면 사용할 수 있다. 여기서 리버스 클라이언트 요청을 다른 애플리케이션 서버나 다른 웹 서버로 전달할 수 있는 기능을 의미한다.
장점
- 컴파일하고 관리할 별도 모듈이 필요없음.mod_proxy,mod_proxy_http,mod_proxy_ajp와mod_proxy_balancer는 표준 Apache2.2이상 배포 부분이 됨
- 동일한 발란서에서 http,https와 AJP 프로토콜 지원
- 특정 WAS에 의존적이지 않으므로 모든 WAS에 적용 가능
단점
- mod_proxy_ajp는 8K 이상 패킷 사이즈를 지원하지 않음
- 기본적인 로드 밸런서
- 도메인 모델 클러스터링을 지원하지 않음
- URL 별 유연한 설정이 어려움
mod_jk
아파치와 톰캣을 연동하기 위한 모듈로써 AJP 프로토콜을 이용하여 아파치에 들어온 요청 중 톰캣이 처리할 요청을 AJP 포트(일반적으로 8009)를 통해 톰캣에 전달하고 그에 대한 응답을 받는 역할을 수행합니다.
장점:
- 발전된 로드 밸런서
- 발전된 노드 장애 감지
- 8k 이상의 큰AJP 패킷 크기 지원
- 관련 자료가 많다.
단점
- 별도 모듈을 빌드하고 관리 필요
이번시간에 저희가 준비한 내용은 여기까지 입니다.mod_jk와 mod_proxy의 차이점을 알아봤습니다.
다음시간에 만나요 베바~
출처:https://blueyikim.tistory.com/194
https://sepiros.tistory.com/16
'OS > Linux' 카테고리의 다른 글
[Linux] CentOS - Systemd 개요 (0) | 2022.05.24 |
---|---|
[OS]리눅스 배포판 종류와 특징 (1) | 2022.05.23 |
[Linux] CentOS - 런 레벨 (0) | 2022.05.17 |
[OS] 유닉스의 발전 과정 및 리눅스 역사 (0) | 2022.05.16 |
[ Linux ] 작업 관리 (1) (0) | 2022.05.13 |
댓글