ㅇ 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
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 |