16.10 클러스터 그룹
JBoss EAP 6에서는 하나의 물리 네트워크 내에 여러 클러스터 그룹을 구성할 수 있다. 지금까지 설명은 기본적으로 네트워크 내에 있는 전체 서버 노드를 하나의 클러스터로 구성하는 것을 전제로 설명했다. 클러스터 그룹이란 같은 서비스를 제공하는 서버 노드들을 묶어서 네트워크 내에 여러 클러스터를 구축하는 방법이다. 웹 애플리케이션, EJB 애플리케이션, JMS 각각의 클러스터링에 대해 설명했지만, 클러스터 그룹에 대해서도 각각 애플리케이션 단위 또는 서버 노드 단위로 구성할 수 있다.
웹, EJB 애플리케이션의 클러스터링을 위해서는 Infinispan와 JGroups 컴포넌트를 이용한다. 한편, JMS에서는 HornetQ 자체가 클러스터링 기능을 가지고 있다. 이 때문에 클러스터 그룹의 설정 방법도 다르다. 그래서 웹, EJB와 JMS를 나누어 설명한다.
웹, EJB 컨테이너 클러스터 그룹
웹, EJB 컨테이너는 클러스터링을 설정하는 서버 노드 간의 임의의 서버 노드에 대해서만 그룹을 구성할 수 있다. 다음 그림을 보면, 클러스터 그룹 A와 B를 구성하고 있다.

그림 14. 웹/EJB 컨테이너의 클러스터 그룹
웹, EJB클러스터 그룹 분할 방법
웹, EJB 애플리케이션은 클러스터링을 설정하기 위한 도구로 Infinispan와 JGroups라는 컴포넌트를 사용하고 있다. 클러스터 그룹을 분할하려면 Infinispan 또는 JGroups의 설정을 변경하여야 한다.
클러스터 노드 간 통신에 사용하는 JGroups는 데이터 전송 프로토콜은 UDP 멀티캐스트나 TCP를 사용할 수 있다. 기본적으로 UDP 멀티캐스트를 사용하기 때문에 네트워크를 나누려면 멀티캐스트 주소를 변경하면 된다.
JBoss EAP 6의 시스템 프로퍼티 jboss.default.multicast.address 를 변경하여 논리적으로 네트워크를 분리할 수 있다. 멀티캐스트 주소 기본값은 230.0.0.4이다.
따라하기
jboss.default.multicast.address확인jboss.default.multicast.address를 시작 옵션으로 변경
jboss.default.multicast.address확인
[standalone@localhost:9999 /] cd /socket-binding-group=standard-sockets/socket-binding=jgroups-udp
[standalone@localhost:9999 socket-binding=jgroups-udp/] :read-resource
{
"outcome" => "success",
"result" => {
"client-mappings" => undefined,
"fixed-port" => false,
"interface" => undefined,
"multicast-address" => expression "${jboss.default.multicast.address:230. 0.0. 4}",
"multicast-port" => 45688,
"name" => "jgroups-udp",
"port" => 55200
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
-
jboss.default.multicast.address를 시작 옵션으로 변경-u옵션이나 시스템 프로퍼티를 사용하여 변경할 수 있다.$ ./standalone.sh -u=230.10.0.5 -c=standalone-ha.xml$ ./standalone.sh -Djboss.default.multicast.address=230.10.0.5 -c=standalone-ha.xml
HornetQ 클러스터 그룹
HornetQ에서는 클러스터링을 구성하는 노드 그룹을 구성하여 여러 클러스터 그룹을 구성할 수 있다. 클러스터링을 구성하는 목적지(Queue/Topic)도 주소 단위로 지정할 수 있고, 주소마다 다른 클러스터링 그룹을 지정할 수도 있다. 하나의 JMS 서버가 여러 클러스터 그룹에 동시에 참가할 수 있어 다양한 클러스터 토폴로지를 구성하는 것이 가능하다.
HornetQ는 클러스터 그룹 구성을 쉽게 할 수 있도록 멀티캐스트를 사용하고 있다.
JBoss EAP 6의 JMS 기능을 제공하는 full 프로파일 중에서 JMS 클러스터링을 사용하려면 full-ha 프로파일을 사용하여야 한다. 스탠드얼론 모드에서는 standalone-full-ha.xml 를 사용한다. full-ha 프로파일에 클러스터 그룹을 구성하기 위한 설정이 이미 정의되어 있다. 소켓 바인딩에 설정된 JMS가 사용하는 UDP 멀티캐스트 주소와 포트를 사용하여 클러스터 그룹을 구성한다.
| 항목 | 설명 | 기본 설정값 |
|---|---|---|
multicast-address | 소켓이 멀티캐스트의 트래픽을 송수신할 때 사용하는 멀티캐스트 주소. | ${jboss.messaging.group.address:231.7.7.7} |
multicast-port | 소켓이 멀티캐스트 트래픽을 송수신할 때 사용하는 포트. | ${jboss.messaging.group.port:9876} |
표 1. JMS에서 사용하는 소켓바인딩 설정
JBoss EAP 6를 시작하면 동일 네트워크 내에 있는 HornetQ 서버는 소켓 바인딩의 UDP 멀티캐스트 주소와 포트를 사용하여 자동으로 클러스터 그룹을 구성한다. 기본 설정으로도 클러스터링 기능을 사용할 수 있도록 충분히 설정되어 있다.
-
클러스터 그룹 분할
HornetQ의 클러스터 그룹 분할 방법도 웹 컨테이너와 마찬가지로 사용하는 논리적으로 네트워크를 나누어 클러스터 그룹을 나누는 방법은 그룹마다 멀티캐스트 주소와 포트를 변경하는 방법이다. JBoss EAP 6 시작 인수로 지정하여 간단하게 변경할 수 있다.
서버시작 시 시스템 파라미터
jboss.messaging,group.address와jboss.messaging.group.port를 사용하여 멀티캐스트 그룹을 분리한다. 보통 멀티캐스트 주소만 변경하여 관리한다.
$ ./standalone.sh -c=standalone-full-ha.xml -Djboss.messaging.group.address=231.7.7.8 -Djboss.messaging.group.port=9877