Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

이열매의 메모장

mod_jk로 아파치, 다중 Tomcat 로드밸런싱하기 본문

서버

mod_jk로 아파치, 다중 Tomcat 로드밸런싱하기

이열매 2019. 10. 16. 18:41

 

 

환경 간략 개요


  • OS: CentOS 7
  • Tomcat: 9.0.4
  • JAVA: jdk-1.8.0
  • Apache: 2.4.41

 

 

다중 Tomcat 설치


1. 톰캣 실행 위한 JDK 설치

 

 톰캣은 서블릿 컨테이너이므로 실행을 위해 JDK 설치가 필요하다. 이전에는 wget이나 curl 명령어를 사용해서 설치가 가능했으나 현재 오라클에서 권한 관련 정책을 변경하였다. JDK를 wget으로 설치하려 할 시, 401 authorization 보안 인증 문구를 띄우며 에러가 발생하므로 yum 으로 설치를 진행하도록 한다.

 

  • 설치할 수 있는 jdk 확인
$ yum list java*jdk-devel

 

  • 설치
$ yum -y install java-1.8.0-openjdk-devel.x86_64
 $ yum clean all

 

  • 환경변수 설정 및 적용
----------------/etc/profile 수정----------------

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH=/bin:/usr/bin:/usr/local/bin:$JAVA_HOME/bin:/~~~~/tomcat1/bin:/~~~~/tomcat2/bin

-------------------------------------------------

$ source /etc/profile

 

 

2. 톰캣 설치

 

  • 톰캣 설치 및 압축 해제
$ wget http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.4/bin/apache-tomcat-9.0.4.tar.gz
$ tar xvfz apache-tomcat-9.0.4.tar.gz
$ mv apache-tomcat-9.0.4 tomcat1-9.0.4
$ tar xvfz apache-tomcat-9.0.4.tar.gz
$ mv apache-tomcat-9.0.4 tomcat2-9.0.4

 

  • 경로를 편하게 지정하기 위하여 소프트 링크 생성
$ ln -s tomcat1-9.0.4 tomcat1
$ ln -s tomcat2-9.0.4 tomcat2

 

  • gz 파일 정리
$ mkdir gz_dir
$ mv *.tar.gz gz_dir

 

  • root 외 사용자 계정의 경우 권한 추가
$ sudo chown root:{사용자 계정} tomcat1/bin/startup.sh
$ sudo chmod 4755 tomcat1/bin/startup.sh
$ sudo chown root:{사용자 계정} tomcat2/bin/startup.sh
$ sudo chmod 4755 tomcat2/bin/startup.sh

 

 

3. 톰캣 서버 포트 변경

 

 추가 설치한 톰캣 또한 기본 포트로 8080을 사용한다. 즉, 톰캣1과 톰캣2 기본적으로 모두 같은 포트를 사용하도록 설정이 되어 있기 때문에 충돌이 일어난다. 이를 방지하기 위해 포트 번호 변경을 해주는데, 주로 톰캣1과 2에 맞춰 1이나 2를 덧붙이는 방식을 사용한다.

 

 변경해야 할 포트는 다음의 세 가지이다.  8005 포트, 8080 포트, 8009 포트 vi 편집기 사용 시, '/8005' 를 사용해 변경하면 된다. 만약 톰캣 9.0.4 버전을 사용하고 있을 경우, 다음과 같은 명령어로 변경 가능하다.

 

# WORKDIR /~~~~/tomcat1/conf/
$ sed -i "22s/8005/8105/" server.xml \
	&& sed -i "69s/8080/8180/" server.xml \
	&& sed -i "116s/8009/8109/" server.xml

# WORKDIR /~~~~/tomcat2/conf/
$ sed -i "22s/8005/8205/" server.xml \
	&& sed -i "69s/8080/8280/" server.xml \
	&& sed -i "116s/8009/8209/" server.xml

 

 

 


 

 

mod_jk로 Tomcat과 아파치 연동 및 로드밸런싱


1. mod_jk 설치

 

 mod_jk모듈은 AJP(Apache Jserv Protocol)를 사용하여 아파치와 톰캣을 연동하는 모듈이다. 아파치와 톰캣을 연동하는데 사용하는 모듈은 mod_jk , mod_proxy, mod_proxy_ajp 가 있다. 여기서는 가장 대중적으로 사용되는 mod_jk 모듈을 이용하도록 한다.

 

$ wget http://apache.tt.co.kr/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.46-src.tar.gz
$ tar -xvzf tomcat-connectors-1.2.46-src.tar.gz

 

  • 경로를 편하게 지정하기 위하여 소프트 링크 생성
$ ln -s tomcat-connectors-1.2.46-src mod_jk

 

 

  • 설치
$ cd mod_jk/native \
$ ./configure --with-apxs=/~~~~/apache/bin/apxs \
$ make && make install

 

 

2. 로드 밸런싱 설정

 

  • 아파치 내부의 http.conf 파일 변경
# WORKDIR /~~~~/apache/conf/
$ vi httpd.conf

# 파일 끝에 다음과 같이 내용 추가
------------------httpd.conf------------------

LoadModule jk_module modules/mod_jk.so
<IfModule jk_module>
    JkWorkersFile    conf/workers.properties
    JkLogFile        logs/mod_jk.log
    JkLogLevel       info
    JkMountFile      conf/uriworkermap.properties
</IfModule>

----------------------------------------------

 

  • 아파치 conf 폴더에서 workers.properties 파일 생성
# WORKDIR /~~~~/apache/conf/

$ vi workers.properties

------------------ workers.properties ------------------

worker.list=load_balancer
worker.load_balancer.type=lb
worker.load_balancer.balance_workers=tomcat1,tomcat2

worker.tomcat1.port=8109
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1

worker.tomcat2.port=8209
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1

--------------------------------------------------------

* 여기서 lbfactor 는 로드밸런싱 될 비율을 말한다. 위에서 톰캣 1과 2의 lbfactor는 각각 1로 설정하였으므로 1:1의 비율로 균등하게 로드밸런싱 될 것이다.

 

  • 아파치 conf 폴더에서 uriworkermap.properties 파일 생성
/*=load_balancer

* 해당 uri 를 어느 인스턴스와 맵핑할 것인지 설정하는 파일이다. 예를 들어, css 파일은 tomcat2에서 담당하고 jsp는 tomcat1에서 서빙하는 것을 정의하는 파일이다. 여기서는 우선 모든 파일들이 각각의 인스턴스가 담당하도록 설정하였다.

 

 

3. 로드밸런싱 확인

 

 로드 밸런싱을 확인하는 방법은 여러 가지가 있다. 각각의 톰캣을 하나씩 꺼본 후, 정상 실행되는지 확인하는 방법이 있을 것이고, 로그를 확인하는 것도 가능하다. 실행 로그는 /[톰캣 설치 경로]/tomcat1(tomcat2)/logs/localhost_access_log.{날짜}.txt 를 확인하자.

 

  • 프로세스 하나씩 종료 후 확인
# 각각의 톰캣 pid 확인
$ ps -ef | grep tomcat
$ kill -9 {톰캣 1 pid}

# 웹 페이지에서 톰캣 구동 확인

$ /[톰캣 1 설치 경로]/tomcat1/bin/startup.sh
$ kill -9 {톰캣 2 pid}

# 웹 페이지에서 톰캣 구동 확인

 

 


참고 링크

 

 

 

 

 

 

 

 

Comments