아파치-tomcat 설정

Ericamoyed·2021년 9월 3일
0

개발한장

목록 보기
6/22

목적

  • 배치 수행 자체가 기존에는 uri로 찔러서 수행하는 형태가 아니라, 스프링 배치에서 지원해주는 CommandLineJobRunner를 통해서 java 명령어를 통해 직접 classPath에 JobConfig.xml을 명시해서 수행하는 형태로 돼있었으나, xml config를 java로 전면 전환하면서, 배치 수행도 uri를 통해 할 수 있도록 변경하려고 함.
    -> classPath 직접 명시로 배치 수행하는 방식에서는 java 명령어만 사용하기 때문에 아파치가 필요하지 않았으나, uri 방식으로 변경되면서 80포트 사용 및 리버스 프록싱/성능 개선을 위해 아파치를 활용하기로 함. (리버스 프록싱이 뭐임?)

아파치를 사용할 경우 장점

  • 대규모 사용자가 사용하는 시스템을 구축할 때 웹 서버인 아파치와 연동을 하면 부하 분산의 효과를 가질 수 있다. mod_jk의 Load Balancing과 FailOver 기능을 사용하여 안정적으로 운영 할 수 있다.

일단 아파치가 깔려있긴 한데, 2.2 가 EOL이 되어 2.4로 업그레이드 돼야함.

아파치 설치는 사내 프로그램으로 할 수 있음.
설치 이전에 기존 아파치 symbolic link 달려 있는 아파치 dir 지우고 재설치 할것.
그 다음에 아무 설정 없이 apache/bin/apachectl start 수행 시킨 후 80 포트로 들어가면 503이 뜸 (503 떴다는건, 아파치는 정상적으로 동작한다는 얘기)
-> 아파치(WS) - tomcat(WAS) 간의 연결이 안돼서 현재 tomcat으로 웹 요청 전달을 못하고 있음

아파치-톰캣 연결 방법

  • tomcat connector(mod_jk)를 사용하는 방법
  • mod_proxy를 사용하여 reverse proxy 기능을 사용하는 방법
  • mod_proxy_ajp 를 사용하여 AJP Protocol을 reverse proxy 로 사용하는 방법

연결 구성 원리

  • 아파치와 톰캣이 연동하기 위해선 AJP를 통해 서로 통신을 하여야 한다.
  • AJP란 아파치가 웹서버와 외부 서비스(톰캣 등)과 연동하기 위해 정한 규약(프로토콜) 이다.
  • 아파치는 이를 사용하여 80포트로 들어오는 요청은 자신이 받고, 이 요청중 서블릿을 필요로 하는 요청은 톰캣에 접속하여 처리한다.

연결 구성

1) 아파치 웹서버의 httpd.conf 에 톰캣 연동을 위한 설정을 추가하고 톰캣에서 처리할 요청을 지정
2) 사용자의 브라우저는 아파치 웹서버(보통 80포트)에 접속해 요청
3) 아파치 웹서버는 사용자의 요청이 톰캣에서 처리하도록 지정된 요청인지 확인. 요청을 톰캣에서 처리해야 하는 경우 아파치 웹서버는 톰캣의 AJP포트(보통 8009포트)에 접속해 요청을 전달
4) 톰캣은 아파치 웹서버로부터 요청을 받아 처리한 후, 처리 결과를 아파치 웹서버에 되돌려줌
5) 아파치 웹서버는 톰캣으로부터 받은 처리 결과를 사용자에게 전송

httpd.conf에 추가하는 설정

  • VirtualHost
    • JkMount로 어떤 요청들을 워커 톰캣으로 연결시킬지 설정한다.
      • 정적 파일들(.js/.css/fonts/.ico)는 no-jk -> 즉 톰캣으로 가지 않도록 하고, 나머지 요청들에 대해서만 tomcat으로 연결시킨다.
  • 아파치-톰캣 연동을 하고나면 반드시 tomcat 인스턴스의 http 접속 포트를 disable 시켜줘야함 ! (아파치를 거치지 않고 톰캣으로 직접 접근하지 않도록!)

출처

profile
꿈많은 개발자, 일상 기록을 곁들인

0개의 댓글