WAS/JBoss

[정보] mod_cluster 설명

투칼론 2016. 10. 4. 09:42
반응형

1. mod_cluster 란?


mod_cluster은 mod_jk와 mod_proxy와 마찬가지로 아파치와 JBoss 간의 통신을 담당하는 플러그인 중의 하나이다. mod_jk와 mod_proxy와 달리 mod_cluster는 애플리케이션 서버 노드와 웹서버 사이의 추가 연결을 이용한다. 응용 프로그램 서버 노드는 이 추가 연결을 통해 Mod Cluster Management Protocol(MCMP)이라는 Custom HTTP 메소드를 통해 다시 부하 분산 팩터와 라이프 사이클 등의 이벤트를 전송한다. 



2. mod_cluster의 특징 및 장점


1) httpd workers 동적 구성


기존 플러그인들은 JBoss 연결을 위해 workers의 환경(properties)을 명시적으로 설정하였다. 이는 뒷단의 JBoss 인스턴스가 추가되고 확장될 때마다, workers 관련 환경을 변경하고, 웹서버 재기동이 필요했다.

그리고, 부하 분산 알고리즘도 설정된 환경 정보에 따라 단순한 방법으로 처리했다. 

보다 확장적이고, 가용성을 높이기 위해, mod_cluster는 환경을 WAS인 JBoss 측에 설정한다.



2) 서버 측의 부하 분산 계수의 계산


기존 플러그인과 달리, mod_cluster는 proxy 쪽이 아닌, JBoss 서버 쪽의 부하 분산 정보를 가지고 실제 처리한다.

그리고, JBoss 인스턴스가 있는 서버의 리소스 사용량 정보를 수시로 보내고, 기동/중지 상태를 주기적으로 전송함으로써 보다 효율적인 부하분산과 빠른 페일오버를 할 수 있다.



3) 세밀한 웹 응용 프로그램 라이프 사이클 관리


기존 httpd 기반의 로드 밸런서는 웹 애플리케이션의 undeployments를 잘 처리할 수 없다. 프록시 관점 요청에서 제거 배포하는 Web 어플리케이션에 존재하지 않는 리소스에 대한 요청과 구별이되지 않고 404 오류가 발생한다. mod_cluster는 임의의 Web 어플리케이션 컨텍스트의 라이프 사이클 이벤트 (예를 들어, 웹 응용 프로그램 배포 / 제거)에 대해서도 해당 서버에 특정 컨텍스트 요청 라우팅을 중지/시작을 전송한다.



4) AJP 설정은 옵션임


mod_jk와 달리 mod_cluster은 AJP를 필요로 하지않는다. 아파치에서 JBoss와 연결은 HTTP, HTTPS 또는 AJP를 사용할 수 있다.



3. mod_cluster 설정 - Apache 사이드


Apache 설정파일(httpd.conf)에 mod_cluster 플러그인을 로딩하도록 설정하고, mod_cluster 관련 파라미터를 설정한다. 

예시는 아래와 같다.


############### mod_cluster Setting - STARTED ###############

LoadModule slotmem_module modules/mod_slotmem.so

LoadModule manager_module modules/mod_manager.so

LoadModule proxy_cluster_module modules/mod_proxy_cluster.so

LoadModule advertise_module modules/mod_advertise.so

 

Listen 1.1.1.1:80

 

<VirtualHost 1.1.1.1:80>

    <Directory />

        Order deny,allow

        Allow from all

    </Directory>

    <Location /mod_cluster-manager>

        SetHandler mod_cluster-manager

        Order deny,allow

        Allow from all

    </Location>

          KeepAliveTimeout 60

          ManagerBalancerName mycluster

          ServerAdvertise On

</VirtualHost>

############### mod_cluster Setting - ENDED ############### 



4. JBoss 사이드 설정


Standalone 모드와 Domain 모드를 지원한다. 아래 예시에서는 Standalone 모드 기준으로 설명한다.


1) 유일한 서버명 설정


standalone-node1

<server name="standalone-node1" xmlns="urn:jboss:domain:1.2"> 


standalone-node2

<server name="standalone-node2" xmlns="urn:jboss:domain:1.2"> 



2) 유일한 인스턴스 ID 설정


각 인스턴스의 Web 서비스시스템에 "instance-id"라는 속성을 설정한다.

예시는 아래와 같다.


<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" instance-id="${jboss.node.name}" native="false">

    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>

    <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>

    .

    .

    .

</subsystem> 



3) proxy-list 설정


JBoss에서 서버에 대한 정보를 전송할 웹서버(Apache) 목록을 설정한다.

modcluster라는 서브시스템에 "proxy-list"라는 속성을 추가하면 된다.

예시는 아래와 같다.


<subsystem xmlns="urn:jboss:domain:modcluster:1.0">

    <mod-cluster-config advertise-socket="modcluster" proxy-list="1.1.1.1:80">

    .

    .

    .

    </mod-cluster-config>

</subsystem> 



4) 설정 테스트


"mod_cluster-manager"를 통해 설정이 잘되었는지 확인할 수 있다.

예시는 아래 그림과 같다.




[출처]

http://mod-cluster.jboss.org/

http://middlewaremagic.com/jboss/?p=2147