제4장 JEUS MQ 클러스터링

내용 목차

4.1. 개요
4.2. 클러스터링 종류
4.2.1. Connection Factory 클러스터링
4.2.2. Destination 클러스터링
4.3. 클러스터링 사용
4.3.1. 서버 설정
4.3.2. 클라이언트 설정
4.4. 예제
4.4.1. 일반적인 사용 예제
4.4.2. 잘못된 사용 예제

본 장에서는 JEUS MQ 서버의 부하를 줄이고 원활한 서비스를 제공하기 위해서 여러 대의 서버를 하나로 묶어서 사용하는 클러스터링에 대해서 설명한다.

한 대의 JEUS MQ 서버를 사용해서 서비스를 제공할 경우 이를 이용하는 클라이언트의 수가 너무 많거나 또는 서버에 보관되고 있는 메시지의 양이 너무 많으면 네트워크에 부하가 걸리거나 서버의 메모리 사용량이 증가한다. 이는 전체적인 성능 저하나 서버 다운의 원인이 될 수 있다. 이런 경우 네트워크 또는 메모리 부하를 분산하고 전체적인 성능을 유지시키기 위해서 JEUS MQ 서버를 증설하고 전체 MQ 서버들을 한 대의 서버처럼 동작하게 하는 것을 JEUS MQ 클러스터링이라고 한다. 이때 JEUS MQ 클라이언트는 자신이 접속하려는 JEUS MQ 서버가 클러스터링 되어 있는지 여부와 상관없이 단일 서버를 이용할 때와 동일한 방법으로 접근할 수 있다.

또한, JEUS MQ 클러스터링은 JEUS MQ 장애 극복의 개념을 포함한 기능으로 제공하고 있다. 자세한 내용은 “제5장 JEUS MQ 장애 극복”을 참고한다.

클러스터링은 Connection Factory 클러스터링과 Destination 클러스터링의 두 종류로 나누어진다.

본 절에서는 JEUS MQ 클러스터링을 사용하기 위해서 필요한 설정들에 대해서 설명한다.

JEUS MQ 클러스터링의 전체적인 구성은 JEUS 서버의 클러스터링에 따른다. JEUS 서버 클러스터링에 관한 설명은 JEUS Domain 안내서”의 “제5장 JEUS 클러스터링”을 참고한다.

JEUS MQ 클러스터링 설정 주의 사항

JEUS MQ 클러스터링에 참여하는 JEUS MQ 서버들의 Destination, Durable Subscriber 설정들은 WebAdmin의 [Clusters] 메뉴에서 설정하여 그에 포함된 각 서버들에 동일하게 적용되며, 서버마다 주소가 다르기 때문에 별도로 설정해야 하는 Connection Factory는 WebAdmin의 [Servers] 메뉴에서 설정한다. 단, 이 경우도 이름은 동일하게 설정해야 한다.

클러스터에 Destination이나 Durable Subscriber를 설정하기위해 [Clusters] > [클러스터명] > [Engine] 탭의 [Jms Engine]를 선택하면, 다음과 같은 설정 화면이 나타난다. 각각의 Destination이나 Durable Subscriber를 설정하는 방법은 서버에 설정하는 것과 동일하므로 “3.2. JMS 리소스 설정”의 설명을 참고한다.


참고

1. 클러스터에 서버를 추가하는 방법에 대해서는 JEUS Domain 안내서”의 “5.6.1. 클러스터에 서버 추가”를 참고한다.

2. 클러스터 내의 Destination을 설정하는 경우 서버에 설정되었던 Destination이나 Durable Subscriber의 설정들은 무시되나 명확한 동작을 위해 중복된 이름을 사용하지 않도록 한다.

본 절에서는 JEUS MQ 클러스터링을 사용하는 방법에 대해서 설명한다. 클라이언트에서 JEUS MQ 클러스터링을 이용하기 위해서 제일 먼저 설정하는 것이 Connection Factory이기 때문에 주로 이에 관해서 설명한다.

JEUS MQ의 Connection Factory 클러스터링은 클라이언트가 Connection Factory를 얻어오는 방법에 따라서 다음과 같이 2가지로 구분할 수 있다.

  • 클러스터링된 Connection Factory를 사용하는 방법

    JEUS MQ 서버의 클러스터링 여부와 상관없이 “2.2.2. Connection Factory”에서 설명한 것과 같은 방법으로 사용할 수 있다. 단, 사용하려는 Connection Factory가 서버 설정절의 설명처럼 클러스터링된 서버간에 같은 이름을 사용해야한다. 한번 얻어온 Connection Factory를 재활용해서 커넥션만 다시 생성하여 사용하며, 여러 JEUS MQ서버들 중에서 접속할 곳을 선택하는 정책은 서버의 Connection Factory 설정에서 설정할 수 있는데, 현재는 Round-robin방식과 Random방식을 지원하고 있다.

  • JEUS MQ 전용 API를 사용하여 클러스터링된 Connection Factory를 생성하는 방법

    JEUS MQ 전용 API를 사용하여 Connection Factory를 직접 생성하는 경우에는 JEUS MQ 서버가 클러스터링되어 있다면 “2.2.2. Connection Factory”에서 설명한 방법에 외에 추가적인 작업이 필요하다.

    다음과 같이 JeusConnectionFactoryCreator.addServerAddress() 메소드를 이용하여 클러스터링에 참여하고 있는 모든 서버들의 정보를 추가해야 한다.

    jeus.jms.client.util.JeusConnectionFactoryCreator connectionFactoryCreator =
    new jeus.jms.client.util.JeusConnectionFactoryCreator();
    
    connectionFactoryCreator.setFactoryName("ConnectionFactory");
    connectionFactoryCreator.addServerAddress("192.168.1.2", 9741, <service-name>);
    connectionFactoryCreator.addServerAddress("192.168.1.3", 9741, <service-name>);
    connectionFactoryCreator.addServerAddress("192.168.1.4", 9741, <service-name>);
    
    ConnectionFactory connectionFactory = connectionFactoryCreator.createConnectionFactory();

본 절에서는 JEUS MQ 클러스터링의 사용 예에 대해 일반적인 경우와 잘못 사용된 경우를 예제를 사용해서 설명한다.