Sun Java System Application Server 9.1 배포 계획 설명서

Message Queue 브로커 배포 계획

Java Message Service(JMS) API는 J2EE 응용 프로그램 및 구성 요소가 메시지를 작성하고, 보내고, 받고, 읽을 수 있도록 하는 메시징 표준입니다. 또한 느슨하게 결합되고 안정적인 비동기식 분산 통신을 가능하게 합니다. JMS를 구현하는 Sun Java System Message Queue는 Application Server와 통합되어 MDB(Message-Driven Bean)와 같은 구성 요소를 만들 수 있도록 합니다.

Sun Java System Message Queue(MQ)는 J2EE Connector Architecture(JCA) 사양 1.5에서 정의된 자원 어댑터라고도 하는 커넥터 모듈을 사용하여 Application Server와 통합됩니다. 커넥터 모듈은 Application Server에 기능을 추가하는 표준화된 방법입니다. Application Server에 배포된 J2EE 구성 요소는 커넥터 모듈을 통해 통합된 JMS 공급자를 사용하여 JMS 메시지를 교환합니다. 기본적으로 JMS 공급자는 Sun Java System Message Queue이지만 원하는 경우 JCA 1.5를 구현하는 다른 JMS 공급자를 사용할 수 있습니다.

Application Server에서 JMS 자원을 만들면 백그라운드에서 커넥터 자원이 만들어집니다. 따라서 각 JMS 작업은 커넥터 런타임을 호출하며 백그라운드에서 MQ 자원 어댑터를 사용합니다.

자원 어댑터 API 사용 외에도 Application Server에서는 추가 MQ API를 사용하여 MQ와 향상된 통합을 제공합니다. 이러한 긴밀한 통합으로 인해 MDB에 대한 커넥터 페일오버, 아웃바운드 연결의 로드 균형 조정 및 인바운드 메시지의 로드 균형 조정과 같은 기능을 사용할 수 있습니다. 이러한 기능은 메시징 트래픽에 내결함성과 고가용성을 제공합니다.

다중 브로커 클러스터

MQ Enterprise Edition에서는 브로커 클러스터라고도 하는 여러 개의 상호 연결된 브로커 인스턴스를 사용할 수 있습니다. 브로커 클러스터를 사용하면 클라이언트 연결이 클러스터에 있는 모든 브로커 간에 분산됩니다. 클러스터링은 수평적 확장을 제공하며 가용성을 향상시킵니다.

단일 메시지 브로커는 약 8개까지 CPU를 확장할 수 있으며 일반적인 응용 프로그램에 충분한 처리량을 제공합니다. 브로커 프로세스에 오류가 발생하면 브로커가 자동으로 다시 시작됩니다. 그러나 브로커에 연결된 클라이언트 수가 증가하고 전달되는 메시지 수가 증가함에 따라 브로커는 결국 파일 설명자 수 및 메모리 등의 제한을 초과하게 됩니다.

한 클러스터에 단일 브로커가 아니라 여러 개의 브로커를 사용하면 다음이 가능합니다.

그러나 브로커가 여러 개 있어도 브로커 오류 발생 시 진행 중인 트랜잭션이 대체 브로커에서 계속되지 않을 수도 있습니다. MQ에서 실패한 연결을 클러스터 내 다른 브로커와 다시 설정하지만 진행 중인 트랜잭션 메시징과 롤백 트랜잭션이 손실됩니다. 완료하지 못한 트랜잭션을 제외하고 사용자 응용 프로그램에는 영향이 없습니다. 연결을 계속 사용할 수 있으므로 서비스 페일오버가 보장됩니다.

따라서 MQ는 클러스터에서 고가용성 지속성 메시징을 지원하지 않습니다. 브로커가 오류 발생 이후 다시 시작되면 지속성 메시지 전달을 자동으로 복구하여 완료합니다. 지속성 메시지는 파일 시스템 또는 데이터베이스에 저장될 수 있습니다. 그러나 브로커를 호스팅하는 시스템의 하드웨어 고장이 복구되지 않으면 메시지가 손실될 수 있습니다.

Sun Message Queue용 Sun Cluster 데이터 서비스가 설치된 Solaris 플랫폼에서는 지속성 메시지의 투명한 페일오버를 지원합니다. 이 구성은 Sun Cluster의 전역 파일 시스템과 IP 페일오버를 사용하여 신뢰할 수 있는 고가용성을 제공하며 Java Enterprise System에 포함되어 있습니다.

마스터 브로커와 클라이언트 동기화

다중 브로커 구성에서 각 대상은 클러스터 내 모든 브로커에서 복제됩니다. 각 브로커는 다른 모든 브로커의 대상에 등록된 메시지 사용자를 인식합니다. 따라서 각 브로커는 직접 연결된 해당 고유 메시지 생성자에서 원격 메시지 사용자로 메시지를 라우팅하고 원격 생성자에서 직접 연결된 해당 고유 사용자로 메시지를 전달합니다.

클러스터 구성에서 각 메시지가 생성자가 직접 연결된 브로커는 해당 생성자에 의해 브로커에 전송된 메시지의 라우팅을 수행합니다. 따라서, 지속성 메시지는 메시지의 홈 브로커에 의해 저장 및 라우팅됩니다.

관리자가 브로커에서 대상을 만들거나 삭제할 때마다 이 정보는 클러스터에 속한 다른 모든 브로커에 자동으로 전파됩니다. 마찬가지로 메시지 사용자가 홈 브로커에 등록될 때마다 또는 명시적으로 지정되었거나 클라이언트나 네트워크 오류, 홈 브로커 다운으로 인해 메시지 사용자가 홈 브로커에서 연결이 끊어질 때마다 해당 메시지 사용자에 대한 관련 정보가 클러스터 전체에 전파됩니다. 영구 가입 정보도 비슷한 방식으로 클러스터의 모든 브로커에 전파됩니다.

Message Queue 브로커를 사용하도록 Application Server 구성

Application Server의 Java Message Service는 Message Queue에 대한 커넥터 모듈(자원 어댑터)을 나타냅니다. 관리 콘솔이나 asadmin 명령줄 유틸리티를 사용하여 Java Message Service를 관리할 수 있습니다.

MQ 브로커(JMS 호스트)는 Application Server 프로세스와 다른 JVM에서 실행됩니다. 따라서 여러 Application Server 인스턴스나 클러스터가 같은 MQ 브로커 집합을 공유할 수 있습니다.

Application Server에서 JMS 호스트는 MQ 브로커를 나타냅니다. Application Server의 Java Message Service 구성에는 사용할 모든 JMS 호스트가 포함된 JMS 호스트 목록(AddressList)이 있습니다.

관리 콘솔을 사용하여 JMS 관리

관리 콘솔에서 Java Message Service 노드를 사용하여 특정 구성에 대한 JMS 등록 정보를 설정할 수 있습니다. 다시 연결 간격 및 다시 연결 시도와 같은 등록 정보를 설정할 수 있습니다. 자세한 내용은 Sun Java System Application Server 9.1 관리 설명서의 4 장, JMS(Java Message Service) 자원 구성을 참조하십시오.

Java Message Service 노드 아래의 JMS 호스트 노드에는 JMS 호스트 목록이 포함되어 있습니다. 목록에서 호스트를 추가 및 제거할 수 있습니다. 각 호스트에 대한 호스트 이름, 포트 번호, 그리고 관리 사용자 이름 및 비밀번호를 설정할 수 있습니다. 기본적으로 JMS 호스트 목록에는 Application Server와 통합된 로컬 MQ 브로커를 나타내는 “default_JMS_host”라는 MQ 브로커가 포함되어 있습니다.

클러스터의 모든 MQ 브로커를 포함하도록 JMS 호스트 목록을 구성합니다. 예를 들어 세 개의 MQ 브로커가 포함된 클러스터를 설정하려면 브로커별로 Java Message Service 내에 JMS 호스트를 추가합니다. Message Queue 클라이언트는 Java Message Service의 구성 정보를 사용하여 MQ 브로커와 통신합니다.

asadmin을 사용하여 JMS 관리

관리 콘솔 외에도 asadmin 명령줄 유틸리티를 사용하여 Java Message Service와 JMS 호스트를 관리할 수 있습니다. 다음 asadmin 명령을 사용합니다.

Java Message Service 유형

Application Server와 MQ 브로커 간 통합에는 로컬과 원격의 두 가지 유형이 있습니다. 관리 콘솔의 Java Message Service 페이지에서 이 유형 속성을 설정할 수 있습니다.

로컬 Java Message Service

유형 속성이 LOCAL인 경우 Application Server에서 MQ 브로커를 시작 및 중지합니다. Application Server가 시작될 때 기본 JMS 호스트로 지정된 MQ 브로커를 시작합니다. 마찬가지로 Application Server 인스턴스가 종료될 때 MQ 브로커를 종료합니다. 독립 실행형 Application Server 인스턴스에는 LOCAL 유형이 가장 적절합니다.

LOCAL 유형을 사용할 경우 Start Arguments 속성을 사용하여 MQ 브로커 시작 매개 변수를 지정합니다.

원격 Java Message Service

유형 속성이 REMOTE인 경우 Application Server에서는 외부에서 구성된 브로커나 브로커 클러스터를 사용합니다. 이 경우 Application Server와는 별도로 MQ 브로커를 시작 및 중지해야 하며 MQ 도구를 사용하여 브로커 또는 브로커 클러스터를 구성하고 조정해야 합니다. REMOTE 유형은 Application Server 클러스터에 가장 적절합니다.

REMOTE 유형을 사용할 경우 MQ 도구를 사용하여 MQ 브로커 시작 매개 변수를 지정해야 합니다. Start Arguments 속성은 무시됩니다.

기본 JMS 호스트

관리 콘솔의 Java Message Service 페이지에서 기본 JMS 호스트를 지정할 수 있습니다. Java Message Service 유형이 LOCAL인 경우 Application Server 인스턴스가 시작될 때 Application Server에서 기본 JMS 호스트를 시작합니다.

MQ 브로커 클러스터를 사용하려면 기본 JMS 호스트를 삭제한 다음 클러스터의 모든 MQ 브로커를 JMS 호스트로 추가합니다. 이 경우 JMS 호스트 목록의 첫 번째 JMS 호스트가 기본 JMS 호스트가 됩니다.

JMS 호스트 중 하나를 기본 JMS 호스트로 지정하여 설정할 수도 있습니다. Application Server에서 Message Queue 클러스터를 사용할 경우 기본 JMS 호스트가 MQ 특정 명령을 실행합니다. 예를 들어 MQ 브로커 클러스터에 대한 물리적 대상을 만들 때 기본 JMS 호스트는 물리적 대상을 만드는 명령을 실행하지만 클러스터의 모든 브로커는 물리적 대상을 사용합니다.

배포 시나리오 예

메시징 요구 사항을 수용하려면 배포, 성능 및 가용성 요구에 맞게 Java Message Service와 JMS 호스트 목록을 수정합니다. 다음 절에서는 몇 가지 일반적인 시나리오에 대해 설명합니다.

최상의 가용성을 얻기 위해서는 메시징 요구 사항이 Application Server와 맞지 않을 경우 MQ 브로커와 Application Server를 서로 다른 시스템에 배포하거나, 메시징 용량이 충분해질 때까지 각 시스템에서 Application Server 인스턴스와 MQ 브로커를 실행합니다.

기본 배포

Application Server를 설치하면 DAS(Domain Administration Server)가 자동으로 생성됩니다. 기본적으로 DAS의 Java Message Service 유형은 LOCAL입니다. 따라서 DAS를 시작하면 기본 MQ 브로커도 시작됩니다.

새 도메인을 만들면 새 브로커도 생성됩니다. 기본적으로 독립 실행형 서버 인스턴스나 클러스터를 도메인에 추가하면 해당 Java Message Service는 REMOTE로 구성되며 DAS에 의해 시작되는 브로커가 기본 JMS 호스트가 됩니다.

기본 배포에서는 세 개의 인스턴스가 포함된 Application Server 클러스터를 사용한 기본 배포의 예를 보여줍니다.

Application Server 클러스터와 함께 MQ 브로커 클러스터 사용

MQ 브로커 클러스터를 사용하도록 Application Server를 구성하려면 Application Server의 Java Message Service에서 모든 MQ 브로커를 JMS 호스트로 추가합니다. 생성된 모든 JMS 연결 팩토리와 배포된 MDB는 지정된 JMS 구성을 사용합니다.

다음 그림은 브로커 클러스터의 MQ 브로커 세 개와 클러스터의 Application Server 인스턴스 세 개를 사용하는 배포 예를 보여줍니다.

응용 프로그램 특정 MQ 브로커 클러스터 지정

경우에 따라 응용 프로그램은 Application Server 클러스터에서 사용하는 MQ 브로커 클러스터와 다른 클러스터를 사용해야 할 수 있습니다. 응용 프로그램 특정 MQ 브로커 클러스터 지정에서는 이러한 시나리오의 예를 보여줍니다. 이를 위해서는 JMS 연결 팩토리의 AddressList 등록 정보나 MDB 배포 설명자의 activation-config 요소를 사용하여 MQ 브로커 클러스터를 지정합니다.

연결 팩토리 구성에 대한 자세한 내용은 Sun Java System Application Server 9.1 관리 설명서JMS 연결 팩토리를 참조하십시오. MDB에 대한 자세한 내용은 Sun Java System Application Server 9.1 Developer’s GuideUsing Message-Driven Beans를 참조하십시오.

응용 프로그램 클라이언트

응용 프로그램 클라이언트나 독립 실행형 응용 프로그램에서 JMS 관리 대상 객체에 처음 액세스하면 클라이언트 JVM이 서버에서 Java Message Service 구성을 검색합니다. 클라이언트 JVM을 다시 시작해야 JMS 서비스의 추가 변경 사항을 사용할 수 있습니다.