MQ Enterprise Edition은 브로커 클러스터로 알려져 있는 상호 연결된 여러 브로커 인스턴스를 지원합니다. 브로커 클러스터를 사용하면 클라이언트 연결이 클러스터에 있는 모든 브로커 간에 분산됩니다. 클러스터링은 수평적 확장을 제공하며 가용성을 향상시킵니다.
이 절에서는 고가용성 Sun Java System Message Queue 클러스터를 사용하도록 Application Server를 구성하는 방법을 설명합니다. 또한 Message Queue 클러스터를 시작하고 구성하는 방법을 설명합니다.
Application Server 토폴로지 및 MQ 배포에 대한 자세한 내용은 Sun Java System Application Server 9.1 배포 계획 설명서의 Planning Message Queue Broker Deployment를 참조하십시오.
Sun Java System Message Queue 4.1에서는 새 "고가용성" 클러스터 유형을 통해 고가용성 메시징 서비스를 제공합니다. 이 유형의 MQ 클러스터에서는 모든 브로커 인스턴스가 피어 대 피어 관계를 공유하며 해당 클러스터에 속한 모든 브로커 인스턴스가 공통 지속성 데이터 저장소를 공유함으로써 '데이터 가용성'을 제공합니다.인스턴스는 인스턴스 실패를 자동으로 감지하고 실패한 브로커의 지속성 메시지를 동적 인계 선출을 통해 인계합니다. 따라서 Application Server에 배포된 응용 프로그램 구성 요소는 이러한 가용성 기능을 이용할 수 있습니다.
이 클러스터 유형을 사용하면 대기열 또는 영구 항목 가입에 대한 트랜잭션된 지속성 메시지가 손실되지 않습니다. 비지속성 메시지 또는 비영구 가입자에 대한 지속성 메시지는 클라이언트 런타임이 연결된 브로커를 사용할 수 없을 경우 손실될 수 있습니다.
HADB를 시작합니다.
Application Server 도메인을 만들고 시작합니다. 도메인을 만들고 시작하려면 asadmin 명령 create-domain 및 start-domain을 각각 사용합니다. 이 명령에 대한 자세한 내용은 create-domain(1) 및 start-domain(1)을 참조하십시오.
노드 에이전트를 만들고 시작합니다. 노드 에이전트를 만들고 시작하려면 asadmin 명령 create-node-agent 및 start-node-agent를 각각 사용합니다. 이 명령에 대한 자세한 내용은 create-node-agent(1) 및 start-node-agent(1)를 참조하십시오.
클러스터를 만듭니다. asadmin 명령 create-cluster를 사용하거나 관리 콘솔을 사용하여 클러스터를 만들 수 있습니다. create-cluster 명령에 대한 자세한 내용은 create-cluster(1)를 참조하십시오. 관리 콘솔을 사용하여 클러스터를 만드는 방법에 대한 자세한 내용은 관리 콘솔 온라인 도움말을 참조하십시오.
클러스터에서 인스턴스를 만듭니다. 인스턴스를 만드는 과정에서 원격 브로커에서 사용하는 JMS 공급자 포트 번호를 지정합니다. 지정하지 않으면 기본 JMS 공급자 포트 번호가 사용됩니다. 관리 콘솔 또는 asadmin 명령 create-instance를 사용하여 인스턴스를 만들 수 있습니다. 관리 콘솔을 사용하여 인스턴스를 만드는 방법에 대한 자세한 내용은 관리 콘솔 온라인 도움말을 참조하십시오. create-instance 명령에 대한 자세한 내용은 create-instance(1)를 참조하십시오.
클러스터를 시작합니다. 관리 콘솔 또는 asadmin 명령 start-cluster를 사용하여 시작할 수 있습니다. 관리 콘솔을 사용하여 클러스터를 시작하는 방법에 대한 자세한 내용은 관리 콘솔 온라인 도움말을 참조하십시오. start-cluster 명령에 대한 자세한 내용은 start-cluster(1)를 참조하십시오.
asadmin 명령 configure-ha-cluster를 사용하여 HA 클러스터를 구성합니다. 명령에 대한 자세한 내용은 configure-ha-cluster(1)를 참조하십시오.
HADB를 시작합니다.
데이터베이스 테이블을 만듭니다.
고가용성 브로커 클러스터를 만드는 경우 HA 드라이버를 복사합니다.
cp $AS_HOME/hadb/4.4.3-6/lib/hadbjdbc4.jar $S1AS_HOME/imq/lib/ext
도메인을 만들고 시작합니다. 이 작업을 수행하려면 asadmin 명령 create-domain 및 start-domain을 사용합니다. 이 명령에 대한 자세한 내용은 create-domain(1) 및 start-domain(1)을 참조하십시오.
노드 에이전트를 만들고 시작합니다. 이 작업을 수행하려면 asadmin 명령 create-domain 및 start-node-agent를 사용합니다. 이 명령에 대한 자세한 내용은 create-node-agent(1) 및 start-node-agent(1)를 참조하십시오.
클러스터를 만듭니다. asadmin 명령 create-cluster를 사용하거나 관리 콘솔을 사용하여 클러스터를 만들 수 있습니다. 자세한 내용은 create-cluster(1)를 참조하십시오. 관리 콘솔을 사용하여 클러스터를 만드는 방법에 대한 자세한 내용은 관리 콘솔 온라인 도움말을 참조하십시오.
클러스터에서 인스턴스를 만듭니다. 인스턴스를 만드는 과정에서 원격 브로커에서 사용하는 JMS 공급자 포트 번호를 지정합니다. 지정하지 않으면 기본 JMS 공급자 포트 번호가 사용됩니다.
기본 JMS 호스트를 삭제하고 인스턴스에서 연결할 수 있는 JMS 호스트를 만듭니다. 각 브로커를 별도의 JMS 호스트로 추가해야 합니다. JMS 호스트에 대한 자세한 내용은 JMS 호스트 목록을 참조하십시오.
JMS 유형을 REMOTE로 설정합니다. asadmin 명령 set을 사용하거나 관리 콘솔의 JMS 서비스 페이지에서 설정할 수 있습니다.
고가용성 브로커를 구성하는 경우에는 JMS 가용성을 true로 설정합니다. asadmin 명령 set을 사용하거나 관리 콘솔의 JMS 가용성 페이지에서 설정할 수 있습니다.
브로커 인스턴스를 시작합니다.
클러스터를 시작합니다. 자세한 내용은 start-cluster(1)를 참조하십시오.
지금까지 관리자는 이 절 뒤에 나오는 절차에 설명된 것처럼 '비 고가용성' MQ 클러스터(마스터 브로커가 있는 MQ 클러스터)를 별도로 설정해야 했습니다. 이 릴리스에서 Application Server는 MQ 클러스터의 수동 설정 프로세스(REMOTE 유형)와 함께 '자동 클러스터링' 기능을 제공합니다. 따라서 Application Server 클러스터를 만들 때 같은 위치에 비 HA 클러스터(LOCAL 유형)가 자동으로 생성됩니다. 이는 MQ 클러스터를 만드는 기본 모드입니다. 예를 들어 관리자가 세 개의 Application Server 인스턴스로 Application Server 클러스터를 만들면 각 Application Server 인스턴스는 같은 위치에 있는 브로커와 함께 작동하도록 구성되며, 그 결과 세 개의 MQ 브로커 인스턴스가 투명하게 MQ 클러스터를 형성하게 됩니다. 첫 번째 Application Server 인스턴스의 MQ 브로커는 마스터 브로커로 설정됩니다. 하지만 자동 클러스터링에는 단점도 있습니다. 관리자가 클러스터에 인스턴스를 추가하면 자동으로 생성된 MQ 브로커 인스턴스는 클러스터에 참가할 수 없습니다. 클러스터에서 인스턴스가 제거된 경우에도 이 동작이 적용됩니다.
클러스터가 REMOTE 유형인 경우 다음 절차를 수행합니다. 클러스터가 LOCAL 유형인 경우에는 단계 1~4가 적용되지 않습니다.
Application Server 클러스터가 아직 없으면 만듭니다.
클러스터를 만드는 방법에 대한 자세한 내용은 클러스터 만들기를 참조하십시오.
MQ 브로커 클러스터를 만듭니다.
먼저 Domain Administration Server에 의해 시작된 브로커를 참조하는 기본 JMS 호스트를 삭제한 후 MQ 브로커 클러스터에 포함될 세 개의 외부 브로커(JMS 호스트)를 만듭니다.
관리 콘솔이나 asadmin 명령줄 유틸리티에서 JMS 호스트를 만듭니다.
asadmin을 사용하려면 다음과 같이 명령을 지정합니다.
asadmin delete-jms-host --target cluster1 default_JMS_host asadmin create-jms-host --target cluster1 --mqhost myhost1 --mqport 6769 --mquser admin --mqpassword admin broker1 asadmin create-jms-host --target cluster1 --mqhost myhost2 --mqport 6770 --mquser admin --mqpassword admin broker2 asadmin create-jms-host --target cluster1 --mqhost myhost3 --mqport 6771 --mquser admin --mqpassword admin broker3 |
관리 콘솔을 사용하여 호스트 만들기
마스터 MQ 브로커 및 기타 MQ 브로커를 시작합니다.
JMS 호스트 시스템에서 세 개의 외부 브로커를 시작하고 임의의 시스템에서 하나의 마스터 브로커를 시작합니다. 이 마스터 브로커는 브로커 클러스터에 속할 필요가 없습니다. 예를 들면 다음과 같습니다.
/usr/bin/imqbrokerd -tty -name brokerm -port 6772 -cluster myhost1:6769,myhost2:6770,myhost2:6772,myhost3:6771 -D"imq.cluster.masterbroker=myhost2:6772" |
클러스터의 Application Server 인스턴스를 시작합니다.
클러스터에 JMS 자원을 만듭니다.
JMS 물리적 대상을 만듭니다.
예를 들어, asadmin을 사용하여 다음과 같이 지정합니다.
asadmin create-jmsdest --desttype queue --target cluster1 MyQueue asadmin create-jmsdest --desttype queue --target cluster1 MyQueue1 |
관리 콘솔을 사용하려면
JMS 연결 팩토리를 만듭니다.
예를 들어, asadmin을 사용하려면 다음과 같이 지정합니다.
asadmin create-jms-resource --target cluster1 --restype javax.jms.QueueConnectionFactory jms/MyQcf asadmin create-jms-resource --target cluster1 --restype javax.jms.QueueConnectionFactory jms/MyQcf1 |
관리 콘솔을 사용하려면
JMS 대상 자원을 만듭니다.
예를 들어, asadmin을 사용하려면 다음과 같이 지정합니다.
asadmin create-jms-resource --target cluster1 --restype javax.jms.Queue --property imqDestinationName=MyQueue jms/MyQueue asadmin create-jms-resource --target cluster1 --restype javax.jms.Queue --property imqDestinationName=MyQueue1 jms/MyQueue1 |
관리 콘솔을 사용하려면
응용 프로그램 클라이언트에 대해 – retrieve 옵션을 지정하여 응용 프로그램을 배포합니다. 예를 들면 다음과 같습니다.
asadmin deploy --target cluster1 --retrieve /opt/work/MQapp/mdb-simple3.ear |
응용 프로그램에 액세스한 후 예상대로 동작하는지 테스트합니다.
Application Server를 기본 JMS 구성으로 되돌리려면 만든 JMS 호스트를 삭제하고 기본 JMS 호스트를 다시 만듭니다. 예를 들면 다음과 같습니다.
asadmin delete-jms-host --target cluster1 broker1 asadmin delete-jms-host --target cluster1 broker2 asadmin delete-jms-host --target cluster1 broker3 asadmin create-jms-host --target cluster1 --mqhost myhost1 --mqport 7676 --mquser admin --mqpassword admin default_JMS_host |
관리 콘솔에서도 동일한 작업을 수행할 수 있습니다.
문제가 발생하면 다음을 참조하십시오.
as-install-dir/nodeagents/node-agent-name/instance-name/logs/server.log에 있는 Application Server 로그 파일을 확인합니다. 로그 파일에 MQ 브로커가 메시지에 응답하지 않는 것으로 나오면 브로커를 중지했다가 다시 시작합니다.
as-install-dir/nodeagents/node-agent-name/instance-name/imq/imq-instance-name/log/log.txt에서 볼 수 있는 브로커 로그를 확인합니다.
REMOTE JMS 유형의 경우 항상 MQ 브로커를 먼저 시작하고 그 다음에 Application Server 인스턴스를 시작해야 합니다.
Java Message Service에서 기본값을 지정할 경우 모든 MQ 브로커가 다운되면 Application Server가 다운되거나 다시 작동되는 데 30분 정도 소요됩니다. Java Message Service에서 이 시간 초과 값을 적절히 조정하십시오. 예를 들면 다음과 같습니다.
asadmin set --user admin --password administrator cluster1.jms-service.reconnect-interval-in-seconds=5