본문 바로가기

apache Tomcat

[Apache & Tomcat] Apache Tomcat 연동하는 이유

[1] 아파치 웹서버와 톰캣을 연동함으로써 얻는 이점.

1. 톰캣은 정적인 페이지를 로드하기에 아파치보다 느린 처리 속도를 보인다.

2. 톰캣은 설정할 수 있는 내용들이 아파치에 비해 부족하다.

3. 톰캣은아파치보다 부하에 약하다.

4. 톰캣만으로는 서블릿/JSP밖에 서비스할 수 없다.

5. 톰캣과 아파치를 연동하여 부하분담이 가능하다. (다수의 톰캣 구성으로의 로드밸러싱의 의미가 아닌 톰캣만으로 처리가능한 static page를 apache에서 대신함으로써의 부하를 분담)


1번과 5번에 대한 연동 이유로 불필요하다는 내용

http://www.tomcatexpert.com/blog/2010/03/24/myth-or-truth-one-should-always-use-apache-httpd-front-apache-tomcat-improve-perform

즉, 톰캣 5.5 이상에서 httpd의 native 모듈을 사용해서 static page를 처리하는 기능을 제공한다는 내용이다. 이 경우 httpd와 톰캣이 같은 모듈을 사용하는 셈이니 성능에서 차이가 날 이유가 없다.


따라서 단지 static page 처리의 서능만을 위해서라면 굳이 톰캣앞에 apache Httpd를 두는 것은 불필요하다. 오히려 메모리만 많이 먹고 관리부담은 커지고 불필요한 부하만 걸릴 뿐이다.


그럼에도 불구하고 apache와 tomcat을 실제 서비스에서 연동하여 사용하는 이유는 크게 다음과 같다.


1. 80 포트의 사용권한

  - 리눅스에서 ~1024 포트까지는 root 계정만 사용이 가능하므로, tomcat을 80 포트로 운영하기에는 문제가 있다.

 ( 기본적으로 root 계정이 아니면 톰켓을 80 포트로 서버를 열 수 없다.)

 (열더라도 접속이 되지 않으며, 억지로 하면 방화벽을 이용하는 방법이 있긴하다.)

 (리눅스에서는 1024 이하의 포트는 root 이외의 계정에게는 권한을 주지 않는다.)

보안이 문제인데 톰켓을 root 권한으로 80포트로 돌릴때 만약 tomcat이 뚫리면 해커는 리눅스 서버를 root 권한으로 서버를 해킹할 수 있다. (톰캣은 서버 접속자에게 같은 권한을 준다.)


 2. 정적 데이터 처리
  - 톰캣의 성능이 아무리 좋아졌다고 해도, image/css 등과 같은 정적 데이터는 httpd에서 처리하는게 더 믿음직 하다.
    또한 압축등과 같은 정적 데이터를 처리하는 다양한 옵션등이 존재한다.(물론 압축 전송 옵션은 톰캣7에도 있다)


 3. 로드 밸런싱
  - 동일 서버내에서 한 서비스를 여러 tomcat에서 서비스하고자 할때 사용한다. apache를 연동하는 가장 큰 목적이다



참고-

http://toby.epril.com/?p=1125
http://blog.seyannare.net/nicky910/9

http://fruitdev.tistory.com/25