1. 미들웨어이야기/03. JBoss

apache-jboss연동 tomcat connector(mod_jk)

알 수 없는 사용자 2014. 5. 14. 17:52

 Domain기반 서비스의 경우 DNS -> L4 Swich -> WebServer -> WebApplicationServer로 요청이 전달 되고 이런 구성에서는 보통 L4스위치에서 그리고 WebServer에서 또한번 Load Balancing이 가능합니다. L4에서는 클라이언트의 요청을 Load Balancing 알고리즘에 따라 WebServer로 분배합니다.

ㅇ WebServer에서도 Load Balancing을 수행합니다.
WEB-WAS를 연결하며 Load Balancing까지 함께 하는 모듈 중 하나가 mod_jk.so입니다. 설정된 
URI,  Worker mapping 정보에 따라 해당 컨텐츠를 JBoss 인스턴스로 전달합니다.

ㅇ 아파치 웹서버에 로드되는 mod_jk.so 모듈로 WEB-WAS연동 및 Load Balancing 설정방법을 알아보겠습니다.



* mod_jk.so 빌드하기

1. Tomcat Connectors(mod_jk) 모듈 설치파일 다운로드

  - URL : http://tomcat.apache.org/download-connectors.cgi

  - Apache Tomcat사이트에서 다운로드 or 서버에서 wget하세요

 # wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.40-src.tar.gz


2. 컴파일 및 모듈확인

"--with-apxs=/apache/httpd2/bin/apxs"옵션으로 기설치된 아파치의 모듈을 가져다 빌드하면
   /apache설치경로/bin/module 에 mod_jk.so가 생성된 것을 확인할 수 있습니다.

 # tar -xvzf tomcat-connectors-1.2.40-src.tar.gz

 # cd /apache/tomcat-connectors-1.2.40-src/native

 # ./configure --with-apxs=/apache/httpd2/bin/apxs
,,,,,,,,,,,,,,,,,,,,,

 # make
,,,,,,,,,,,,,,,,,,,,,

 # make install
,,,,,,,,,,,,,,,,,,,,,,,

 # cd /apache/httpd2/modules

 # ls -l



※ --with -apxs[=FILE] : share된 아파치 모듈을 build하는 옵션으로 apache설치된 경로/bin/apxs를 
주면 됩니다.


* mod_jk.so 설정

1. mod_jk 모듈 설정

   - httpd.conf : mod_jk.conf파일을 로딩하도록 include라인 추가

   - mod_jk.conf : JkMountFile과 JkWorkersFile을 지정하여 처리할 URI와 JBoss인스턴스를 매핑

 # cd /apache/httpd2/conf

 # vi httpd.conf



# vi mod_jk.conf



※ JkMount         : 웹서버가 mod_jk모듈로 전송할 URL을 지정 Ex) JkMount /*.jsp lb
※ JkMountFile    : URL패턴 포함한 파일 지정 Ex) JkMountFile conf/uriworkermap.properties
※ JkWorkersFile : worker지정 및 관련 옵션설정

2. workers.properties 설정

   - worker는 JBoss인스턴스를 의미합니다. Apache와 연결되는 worker는 worker.properties에
     등록되어 있어야 
mod_jk가 적절한 부하분산을 해줍니다. 인스턴스별로 worker를 설정합니다

   - worker 설정: worker.<worker_name>.<directive>=<value>
   
 ※ worker_name은 JBoss의 인스턴스 id와 동일하게 맞춰야 합니다.

   - 1개의 인스턴스만으로 테스트 할 경우 아래 주황색 box만 추가하고, 여러 worker를 로드밸런싱 및 
      클러스터링 할 경우 인스턴스마다의 주황색 box를 설정합니다.
   - template는 ajp connection 전/후 ajp protocol로 CPING/CPONG 메세지 주고 받아 연결 이상여부
     확인하는 옵션들로 s or ms단위 입니다.

 # cd /apache/httpd2/conf

 # vi workers.properties


※ worker.worker_name.host : clustring 및 load balnancing 대상 host 
                                             두 대의 물리적 서버에 설치된 worker를 연동할 경우 IP를 넣어야 합니다
                                             DNS lookup하지 않도록 ip로 설정하는 것이 좋습니다.

※ worker.worker_name.port : Apache와 JBoss 통신하는 port로 단일 노드 기본 AJP  port는  "8009"

※ worker.worker_name.type : worker와 연결 시 사용할 프로토콜 type

※ Apache와 JBoss를 연결하게 되면 JBoss에서 기본으로 사용하던 8080 port는 더이상 유효하지 않습니다.
    8080은 http요청을 직접 받는 port이며, 이후 uriworkermap.properites의 설정으로 jmx-console의
    접속 정도 사용됩니다. 해당 port에 대해서는 JBoss의 아래 파일에도 설정되어 있습니다.
    - /JBoss설치경로/standalone/configuration/standalone*.xml
    - 
/JBoss설치경로/domain/configuration/domain.xml


3. uriworkermap.properties 설정

   - 웹서버와 JBoss가 처리할 요청을 분리하는 URI worker mapping 작업 설정하는 작업으로 
      properties에 패턴 추가 합니다.

 # cd /apache/httpd2/conf

 # vi uriworkermap.properties


※ worker.worker_name.host : clustring 및 load balnancing 대상 host로 두 대의 물리적 서버에
    설치된 worker를 연동 할 경우 IP를 넣어야 합니다
              

4. JBoss 설정

   - JBoss에서 AJP 프로토콜을 사용하도록 추가 설정해 줍니다.
   
-  8009port 도 바인딩하게 되어있는지 확인합니다.
   - JBoss기동하며 아래와 같이 8009 port에 대해 AJP 프로토콜 로그 확인 합니다.

 # cd /{JBOSS_HOME}/standalone/configuration

 # vi standalone.xml

......................

 # cd /{JBOSS_HOME}/bin

 # ./standalone.sh


※ http://localhost:8080 의 콘솔에 접속하여서도 간단히 AJP설정 할 수 있습니다.

1) Profile > Web (Servlet/HTTP) > Add         


2) ajp 프로토콜 추가

3) ajp 추가 완료

 

연동이 완료되었네요!
다음엔 간단한 디플로이 후 WAS 페이지를 띄워 연동까지 확인해 보겠습니다~



'1. 미들웨어이야기 > 03. JBoss' 카테고리의 다른 글

JBoss의 5가지 모드  (0) 2014.06.03
JBoss Community 제품과 Enterprise 제품의 차이점  (0) 2014.06.03
JBossEAP 포트 리스트(port list)  (0) 2014.05.29
JDK, JBoss 설치  (0) 2014.04.22
JBoss story  (0) 2014.04.18