반응형
Intro
오늘은 AWS의 EC2(VM)와 ELB(Loadbalancer)를 사용하여 웹어플리케이션의 가장 기초라고 할 수 있는 웹서버(Apache)와 미들웨어(Tomcat)을 mode proxy 방식으로 연동하는 방법을 알아보도록 하겠습니다.
mode proxy 방식이란?
Apache와 tomcat을 연동하는 방법에는 크게 3가지 옵션이 있습니다. 그 중에 하나가 오늘 사용할 mode_proxy 입니다.
- mod_jk
- mode_proxy
- mode_proxy_ajp
3가지 옵션의 장단점
mod_jk
- 장점: JkMount 옵션을 사용하여 URL 이나 컨텐츠별로 유연한 설정이 가능(이미지는 웹, 서블릿은 톰캣), apache와 tomcat간의 2진 패킷 전송 크기가 64kb (비교적 성능이 뛰어남)
- 단점: 별도의 모듈(connector) 설치가 필요하며 tomcat전용임
mode_proxy
- 장점: 별도의 모듈없이 설정이 간단함. 특정 WAS에 의존적이지 않음
- 단점: URL 별 유연한 설정이 어려움(ProxyPassMatch를 사용해야함), apache와 tomcat간의 2진 패킷 전송 크기가 8kb (비교적 성능이 떨어짐. 하지만 apache2.4 부터 성능 차이가 크게 없다고함)
mode_proxy_ajp
- 장점: 별도의 모듈없이 설정이 간단함. 특정 WAS에 의존적이지 않음
- 단점: HTTP를 사용하는 대신 AJP 프로토콜의 속도 이점과 함께 mod_proxy의 모든 제어 및 (상대적으로) 구성 용이성과 함께 제공 됨. 그러나 mod_jk만큼 설정이 유연하지 않음.
구현 아키텍처
구현 순서
AWS EC2 Instance 및 ELB구축은 생략하였으며, OS는 Amazonlinux1 기준 입니다.
- Apache 설치 (httpd-.2.4.x)
- tomcat 설치 (tomcat.8.5.x)
- Jdk 설치 (jdk-12.0.x)
- path 설정
- tomcat 서비스 등록
- tomcat 부팅 시 시작 설정
- Apache 설정
- httpd.conf 설정
Apache 설치 (httpd-.2.4.x) on apache EC2
yum install –y httpd
service httpd start
netstat -nap | grep httpd
Apache 부팅 시 자동시작 설정 on apache EC2
#RHEL7 에서는 systemctl enable httpd 로 쉽게 설정 가능
cd /etc/init.d
chkconfig --level 2345 httpd on
Chkconfig –list httpd
#EC2 재시작 후 자동 시작 확인
netstat –nap | grep httpd
tomcat 설치 (tomcat.8.5.x) on tomcat EC2
- http://tomcat.apache.org
- 톰캣 링크 복사 (아래와 같이 wget으로 해당 링크 다운로드)
yum install –y wget cd /usr/local/src wget http://apache.tt.co.kr/tomcat/tomcat-7/v7.0.94/bin/apache-tomcat-7.0.94.tar.gz tar xvzf apache-tomcat-7.0.94.tar.gz ln ]-s apache-tomcat-7.0.94 tomcat
apache version 변경으로 URL변경 될 수 있으므로 공식홈페이지에서 경로 확인 필요
Jdk 설치 (jdk-12.0.x) on tomcat EC2
- http://www.oracle.com
- JDK 다운로드 주소복사 ( tar.gz )
cd /usr/local/src wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/12+33/312335d836a34c7c8bba9d963e26dc23/jdk-12_linux-x64_bin.tar.gz tar –xvzf jdk jdk-12_linux-x64_bin.tar.gz
jdk version 변경으로 URL변경 될 수 있으므로 공식홈페이지에서 경로 확인 필요
JDK및 tomcat path 설정 on tomcat EC2
vim /etc/profile
# 아래 내용 추가
export JAVA_HOME = /usr/local/src/jdk-12
export CATALINA_HOME = /usr/local/src/tomcat
source /etc/profile
echo $JAVA_HOME
echo $CATALINA_HOME
tomcat 서비스 등록 on tomcat EC2
cd /etc/init.d
vi tomcat
## 아래 스크립트 추가
#!/bin/bash
export JAVA_HOME=/usr/local/src/jdk-12
export CATALINA_HOME=/usr/local/src/tomcat
case "$1" in
start)
echo "Starting tomcat: "
$CATALINA_HOME/bin/startup.sh
;;
stop)
echo "Shutting down tomcat: "
$CATALINA_HOME/bin/shutdown.sh
;;
restart)
echo "Restarting tomcat: "
$CATALINA_HOME/bin/shutdown.sh;
$CATALINA_HOME/bin/startup.sh
;;
*)
echo "Usage: service tomcat {start|stop|restart}"
exit 1
esac
exit 0
chmod 755 tomcat
service tomcat start
tomcat 부팅 시 자동 시작 설정 on tomcat EC2
# RHEL7 에서는 systemctl enable tomcat.service 로 쉽게 설정 가능
cd /etc/init.d
chkconfig –-add tomcat
chkconfig –-list tomcat
### EC2 재시작 후 자동 시작 확인
netstat –nap | grep tomcat
aphache httpd.conf 설정 on apache EC2
vi /etc/httpd/httpd.conf
### 맨 아랫줄에 추가
<VirtualHost *:80>
ServerName aaa.test.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://internal-dev-int-clb-123456789.ap-northeast-2.elb.amazonaws.com:8080/ disablereuse=on
ProxyPassReverse / http://internal-dev-int-clb-123456789.ap-northeast-2.elb.amazonaws.com:8080/
</VirtualHost>
<VirtualHost *:80>
ServerName bbb.test.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://internal-dev-int-clb-123456789.ap-northeast-2.elb.amazonaws.com:8080/ disablereuse=on
ProxyPassReverse / http://internal-dev-int-clb-123456789.ap-northeast-2.elb.amazonaws.com:8080/
</VirtualHost>
참고
반응형
'IT > Linux' 카테고리의 다른 글
[리눅스] pushd/popd 명령어 정리 (0) | 2021.12.26 |
---|---|
[리눅스] zip/unzip 명령어 정리 (0) | 2021.12.26 |
[Linux] 리눅스쉘 쿼테이션에 변수값 출력하기('싱글 쿼테이션'과 "더블 쿼테이션" 차이) (0) | 2021.10.19 |
[Linux] CentOS 폴더별 파일개수 확인하기 (0) | 2021.09.13 |
[Linux] JDK설치 (jdk8, jdk11) - Amazone linux2 (0) | 2021.09.06 |