제3장 JEUS MQ 서버 설정

내용 목차

3.1. 개요
3.1.1. 디렉터리 구조
3.1.2. WebAdmin 사용
3.2. JMS 리소스 설정
3.2.1. Destination 설정
3.2.2. Durable Subscription 설정
3.3. JMS Quota 설정
3.3.1. Quota 설정
3.4. JMS 엔진 설정
3.4.1. 기본 정보 설정
3.4.2. 서비스 채널 설정
3.4.3. Connection Factory 설정
3.4.4. Persistence Store 설정
3.4.5. Message Sort 설정
3.5. 서버 관리 및 모니터링
3.5.1. 서버 관리
3.5.2. 서버 모니터링

본 장에서는 JEUS MQ 서버를 실행하기 위한 JMS 엔진과 리소스 설정 방법에 대해서 설명한다.

JEUS MQ 서버는 JMS 엔진으로 표현되며, 서버 당 하나의 JMS 엔진이 실행될 수 있다. JEUS의 각 구성 요소에 대한 설명은 JEUS Server 안내서”의 “제1장 소개”를 참고한다.

WebAdmin에서 [서버] 메뉴를 클릭하면 도메인 내에 설정된 JEUS 서버의 목록이 조회된다. 서버 목록에서 설정할 서버의 이름을 클릭하면 서버 설정 화면으로 이동한다. JEUS MQ 서버 설정은 WebAdmin를 통해 설정할 것을 권장한다.

JEUS WebAdmin에서 JEUS MQ 서버 설정은 다음의 메뉴에 대한 설명이다. [Basic] 메뉴는 JMS와 관련된 설정 부분이 없으므로 설명에서 제외한다.

Jms Resource 화면에서는 JMS 리소스에 대해 설정한다. WebAdmin에서 [서버] > [서버명] > [Resource] 탭의 [Jms Resource] 메뉴를 선택한다.

Jms Resource 화면은 다음의 2개 영역으로 구성된다.

영역설명
DestinationJEUS MQ 서버 내의 Destination에 관한 설정이다. 자세한 설정 방법은 “3.2.1. Destination 설정”을 참고한다.
Durable SubscriptionJEUS MQ 서버 내의 Durable Subscription에 관한 설정이다. 자세한 설정 방법은 “3.2.2. Durable Subscription 설정”을 참고한다.

Jms Quota 화면에서는 JEUS MQ Quota에 대해 설정한다. Webadmin에서 [서버] > [서버명] > [Resource] 탭의 [Jms Quota] 메뉴를 선택한다.

Destination에 클라이언트에게 전달되지 않은 메시지가 계속해서 늘어나면 JVM이 OutOfMemoryError를 내면서 서버가 종료될 수 있다. 이를 방지하기 위해 JEUS MQ는 Quota 설정을 통해 JMS Destination별 메모리 관리를 위한 Quota를 설정 할 수 있는 방법을 제공한다.

Destination이 많은 메모리를 사용하고 있지 않을 때 JEUS MQ 서버는 메시지 내용에 대한 Strong Reference를 가지고 있다. JMS Destination 내에 'Quota' 를 지정하면 메모리 사용량에 따라 JEUS MQ 서버는 다음과 같이 동작한다.

  • Destination이 사용하고 있는 메모리가 'Quota' 설정값 이상이면 클라이언트의 메시지 송신 시도는 실패하고 JMSException이 발생한다.

  • Destination이 사용하고 있는 메모리가 'Quota' 설정값의 75%이상이면 저장소에 저장한 메시지의 내용은 메모리에서 관리하지 않는다.

Destination에 도착한 메시지의 내용이 메모리에서 삭제되어도 메시지는 유실되지 않는다. 메시지는 저장소에 저장되어 있기 때문에 JEUS MQ 서버는 필요할 때 메시지 내용을 저장소로부터 읽어서 처리한다. 이 경우 처리 속도는 메시지 내용이 메모리에 있을 때보다 느릴 수 밖에 없다.

참고

JEUS MQ 서버는 저장소에 저장하지 않은 메시지 내용을 항상 메모리에 가지고 있으므로, 'Quota'에 의한 설정은 저장소가 설정되어 있고 메시지를 DeliveryMode.PERSISTENT로 지정한 경우에만 영향을 미친다.

Quota를 설정한 후에 Destinaition에서 Quota 기능을 사용하도록 설정할 수 있다. 자세한 내용은 “3.2.1. Destination 설정”을 참고한다.

Jms Engine 화면에서는 JEUS MQ 서버에 대해 설정한다. 각각 JMS 엔진의 [서버] > [서버명] > [Engine] 탭의 [Jms Engine] 메뉴를 선택한다.

Jms Engine 화면에서 [Basic] 메뉴를 선택하면 JMS 엔진 기본 정보 설정 화면으로 이동한다.

JEUS MQ 서버의 Failover, Quota와 JMS 엔진의 고급 선택사항을 설정하는 화면으로 구성된다. 상단의 Failover 설정에서는 서버나 네트워크에 장애가 발생하는 경우 이를 복구하는 정보를 설정한다. Failover 설정에 대한 자세한 내용은 “제5장 JEUS MQ 장애 극복”을 참고한다.

엔진 메모리 관리

JMS 엔진 기본 설정 화면의 'Max Bytes', 'Max Messages' 항목은 JMS 엔진의 메모리 관리를 위한 Quota 정보를 설정한다.

JEUS MQ 서버는 서버 내 모든 Destination의 메모리를 통괄하는 JMS 엔진의 Quota 설정과 각 Destination의 Quota 설정 정보를 사용하여 메모리를 관리한다. 메모리 관리 정책에 대한 자세한 내용은 “3.3.1. Quota 설정”를 참고한다.

고급 선택사항 설정

JMS 엔진 고급 선택사항 화면에서는 JEUS MQ 서버가 사용하는 Thread에 대한 정보를 설정한다.

JMS 엔진의 메시지 처리 방식은 크게 두 가지로 나뉜다. 먼저, 일반적인 메시지는 순서 보장과 동시처리에 따른 경쟁을 피하기 위해 Event manager에 의해 Single Thread로 처리된다. 그외의 특수 기능, 클러스터간 메시지 전송, 트랜잭션 제어, JMS 엔진 제어를 위한 메시지 등은 각 형태에 따라 Thread pool의 Thread로 처리하고 있다.

Persistence Store는 서버가 재기동될 때 메시지나 Subscription, 트랜잭션들의 이전 상태를 복구하기 위해 필요하다. Persistence Store를 설정하지 않으면 클라이언트에서 DeliveryMode.PERSISTENT 방식으로 메시지를 송신한 경우에 서버에서 장애가 발생했을 때 메시지 전달을 보장할 수 없다. JEUS MQ에서 제공하는 Persistence Store의 종류에는 저널 로그와 데이터베이스가 있다.

Persistence Store 설정은 WebAdmin의 [서버] > [서버명] > [Engine] > [Jms Engine] > [Persistence Store] 메뉴를 선택한다.

Persistence Store를 설정하지 않으려면 'None', 저널 로그 방식을 사용하려면 'Journal', 데이터베이스 방식을 사용하려면 'Jdbc'를 선택해서 설정한다.

JEUS MQ 서버 관리는 다음과 같은 작업을 통해 메시지 유실 없이 지속적인 서비스가 가능하도록 하는 것이다.

  • 운용 중인 JEUS MQ 서버의 리소스 관리 및 모니터링

    다음의 리소스들이 관리 및 모니터링의 대상이 된다.

    • Connection Factory, Destination과 같은 JMS 관리 객체

    • Destination과 Durable Subscription의 메시지

    • 클라이언트에 할당된 커넥션, 세션, 메시지 송/수신자

    • JEUS MQ 서버가 차지하는 메모리 영역

    • JEUS MQ 서버가 사용하는 Persistent Storage

  • 장애 상황에 대처하고 장애로부터 JEUS MQ 서버를 복구

JEUS는 콘솔 툴인 jeusadmin과 WebAdmin을 제공해서 JEUS MQ 서버 관리 및 모니터링하는 기능을 제공한다. 본 절에서는 각 툴을 사용해서 JEUS MQ 서버를 관리 및 모니터링하는 방법에 대해 설명한다.

다음은 콘솔 툴(jeusadmin)과 WebAdmin을 사용해서 서버를 관리하는 방법에 대한 설명이다.

WebAdmin 사용

WebAdmin을 통해 JMS에 필요한 Connection Factory, Destination, Durable Subscription 관리할 수 있다. 각 목록에서 [ADD], [DEL] 버튼을 통해 Connection Factory를 추가하거나 삭제할 수 있다.

  • Connection Factory 관련

    [서버] > [서버명] > [Engine] > [Jms Engine] > [Connection Factory] 메뉴를 선택하면 설정된 Connection Factory 목록을 조회할 수 있다.

  • Destination 관련

    [서버] > [서버명] > [Resource] > [Jms Resource] 메뉴를 선택하면 설정된 Destination 목록을 조회할 수 있다.

  • Durable Subscription 관련

    [서버] > [서버명] > [Resource] > [Jms Resource] 메뉴를 선택하면 설정된 Durable Subscription 목록을 조회할 수 있다.

콘솔 툴 사용

콘솔 툴은 콘솔에서 여러 가지 명령어를 실행해서 서버 관리작업을 수행할 수 있는 툴로 다음의 경로에 위치한다.

JEUS_HOME/bin/

다음은 서버 관리를 위해서 제공되는 명령어 목록이다.

  • Connection Factory 관련

    명령어설명
    add-jms-connection-factoryConnection Factory를 추가한다.
    remove-jms-connection-factoryConnection Factory를 제거한다.
  • Destination 관련

    명령어설명
    add-jms-destinationDestination을 추가한다.
    remove-jms-destinationDestination을 제거한다.
  • Durable Subscription 관련

    명령어설명
    add-jms-durable-subscriptionDurable Subscription을 추가한다.
    remove-jms-durable-subscriptionDurable Subscription을 제거한다.

다음은 콘솔 툴과 WebAdmin을 사용해서 서버 모니터링을 하는 방법에 대한 설명이다.

WebAdmin 사용

WebAdmin의 [상태] > [JMS] 메뉴를 통해 JEUS MQ 서버의 현재 상태를 모니터링할 수 있다.

콘솔 툴 사용

콘솔 툴은 콘솔에서 여러 가지 명령어를 실행해서 서버 관리작업을 수행할 수 있는 툴로 다음의 경로에 위치한다.

JEUS_HOME/bin/

다음은 서버 모니터링을 위해서 제공되는 명령어 목록이다.

  • Connection Factory 관련

    명령어설명
    list-jms-connection-factoriesConnection Factory 목록을 조회하거나 지정된 Conntection Factory의 정보를 출력한다.
  • Destination 관련

    명령어설명
    list-jms-destinationsDestination 목록을 조회하거나 지정된 Destination 정보를 출력한다.
    control-jms-destination지정된 Destination의 상태를 제어한다.
  • 메시지 관련

    명령어설명
    list-jms-messages지정된 Destination 내의 메시지들의 정보를 조회한다.
    view-jms-message지정된 메시지의 상세한 정보를 조회한다.
    move-jms-messages지정된 메시지들을 서버나 클러스터 내의 다른 Destination으로 이동한다.
    delete-jms-messages지정된 메시지들을 Destination에서 삭제한다.
    export-jms-messages지정된 메시지들을 XML 파일 형태로 내보낸다.
    import-jms-messages내보내진 XML 파일의 메시지들을 지정된 Destination으로 가져온다.
  • Durable Subscription관련

    명령어설명
    list-jms-durable-subscriptionsDurable Subscription 목록을 조회하거나 지정된 Durable Subscription 정보를 조회한다.
  • 클라이언트 관련

    명령어설명
    list-jms-clients클라이언트 목록을 조회하고 정보를 출력한다.
    ban-jms-client클라이언트로부터의 연결을 강제로 끊는다.
  • 트랜잭션 관련

    명령어설명
    list-jms-pending-transactionspending 트랜잭션 목록을 출력한다.
    commit-jms-pending-transaction지정된 pending 트랜잭션을 강제로 commit한다.