Sun Java 로고     이전      목차      색인      다음     

Sun 로고
Sun Java System Message Queue 3 2005Q1 기술 개요 

5장
브로커 클러스터

Message Queue Enterprise Edition은 메시지 전달 서비스를 클라이언트에 제공하기 위해 함께 작업하는 브로커 그룹인 브로커 클러스터의 사용을 지원합니다. 클러스터를 사용하여 메시지 서버는 다중 브로커 간에 클라이언트 연결을 분배하는 방식으로 메시지 트래픽의 볼륨에 대한 작업 크기를 조절할 수 있습니다.

이 장에서는 이러한 브로커 클러스터의 구조 및 내부 기능에 대해 설명합니다. 이 장은 다음 내용으로 구성되어 있습니다.

브로커 클러스터를 구성 및 관리하는 관리자이거나 클러스터를 사용하여 메시징 응용 프로그램을 테스트해야 하는 개발자라면 이 장을 읽어야 합니다.


클러스터 구조

그림 5-1은 브로커 클러스터에 대한 Message Queue의 구조를 보여줍니다. 클러스터 내 각 브로커는 다른 모든 브로커에게 직접 연결됩니다. 각 클라이언트(메시지 생성자 또는 사용자)에는 직접 통신하는 단일 홈 브로커가 있어 서버에 해당 브로커만 있는 것처럼 메시지를 송수신합니다. 안보이는 곳에서 홈 브로커는 연결된 모든 클라이언트에 전달 서비스를 제공하는 로드를 공유하기 위해 클러스터의 다른 브로커와 함께 작업합니다.

클러스터 내에서 한 브로커를 마스터 브로커로 지정할 수 있습니다. 마스터 브로커는 클러스터의 지속성 항목(대상 및 영구 가입)에 대한 변경 사항이 기록되는 구성 변경 기록을 유지 관리합니다. 이 레코드는 변경이 발생할 당시 오프라인으로 있었던 브로커에게 이러한 변경 정보를 전파하는 데 사용됩니다. 자세한 내용은 아래의 클러스터 동기화를 참조하십시오.

그림 5-1
클러스터 구조

3개의 브로커(그 중 하나는 마스터 브로커)로 구성된 클러스터를 보여주는 다이어그램. 그림은 텍스트에 설명되어 있습니다.

다음 절에서는 하나 이상의 브로커가 오프라인이었던 경우라도 클러스터 내에서 메시지 전달이 이루어지는 방식 및 브로커의 구성 및 동기화 방식을 설명합니다.

메시지 전달

클러스터 구성에서 각 대상은 클러스터의 모든 브로커에 복제됩니다. 각 브로커는 다른 모든 브로커의 대상에 등록된 메시지 사용자에 대해 알고 있습니다. 따라서 각 브로커는 자신과 직접 연결된 메시지 생성자로부터 원격 메시지 사용자에게 메시지를 전달하고, 원격 생성자로부터 자신과 직접 연결된 사용자에게 메시지를 전달할 수 있습니다.

메시지 생성자 자신의 홈 브로커는 모든 저장소 및 경로 지정을 처리하고 해당 생성자가 보낸 메시지에 대한 모든 클라이언트의 확인을 처리합니다. 클러스터 내 메시지 트래픽을 최소화하기 위해 메시지는 대상 브로커에 연결된 사용자에게 전달될 때만 한 브로커에서 다른 브로커로 전송됩니다. 경우에 따라(예: 다중 사용자에게 대기열 전달) 로컬 사용자에 대한 전달이 원격 사용자에 대한 전달보다 높은 우선 순위를 갖도록 지정하여 트래픽을 더 줄일 수 있습니다. 클라이언트와 메시지 서버 간에 암호화된 보안 메시지 전달이 필요한 경우 브로커 간의 메시지 전달도 보안하도록 클러스터를 구성할 수 있습니다.


주

몇 가지 예외가 있지만 클러스터의 대상 등록 정보는 개별 대상 인스턴스가 아니라 전체 클러스터에 집합적으로 적용됩니다. 특정 대상 등록 정보에 대한 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.


클러스터 구성

시작 시 클러스터의 브로커 간에 연결을 설정하려면 각 브로커는 다른 모든 브로커(마스터 브로커 포함, 있을 경우)에 대한 호스트 이름 및 포트 번호를 전달 받아야 합니다. 이 정보는 클러스터의 모든 브로커에 대해 동일해야 하는 일련의 클러스터 구성 등록 정보에 의해 지정됩니다. 각 브로커에 대해 개별적으로 구성 등록 정보를 지정할 수 있지만 이 방법은 오류가 발생하기 쉽고 클러스터 구성의 일관성이 손상될 수 있습니다. 대신, 시작 시 각 브로커가 참조하는 하나의 중앙 클러스터 구성 파일에 모든 구성 등록 정보를 두는 것이 좋습니다. 이렇게 하면 모든 브로커가 동일한 구성 정보를 공유하게 됩니다.

클러스터 구성 등록 정보에 대한 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.


주

원래 클러스터 구성 파일은 구성 용도로 만들어졌지만 클러스터의 모든 브로커에서 공유하는 다른 등록 정보를 저장하기에도 편리한 장소입니다.


클러스터 동기화

클러스터의 구성이 변경될 때마다 변경에 대한 정보가 클러스터의 모든 브로커로 자동 전파됩니다. 이러한 구성 변경의 경우는 다음과 같습니다.

이러한 구성 변경 정보는 변경 시 온라인 상태인 클러스터의 모든 브로커로 즉시 전파됩니다. 하지만 오프라인 상태의 브로커(예: 충돌한 브로커)는 변경이 발생할 때 변경에 대한 알림을 수신하지 않습니다. 오프라인된 브로커를 수용하기 위해 Message Queue는 작성되거나 삭제된 모든 지속성 항목(대상 및 영구 가입)을 기록하여 클러스터에 대한 구성 변경 기록을 유지 관리합니다. 오프라인된 브로커가 다시 온라인 상태로 되면(또는 새 브로커가 클러스터에 추가되면) 해당 브로커는 대상 및 영구 가입자에 대한 정보를 이 레코드에서 참조한 다음 다른 브로커들과 현재 활성 메시지 사용자에 대한 정보를 교환합니다.

마스터 브로커로 지정된 클러스터의 한 브로커가 구성 변경 기록을 유지 관리합니다. 다른 브로커는 마스터 브로커 없이는 초기화를 완료할 수 없으므로 클러스터 내에서 마스터 브로커가 항상 처음으로 시작되어야 합니다. 마스터 브로커가 오프라인이 되면 다른 브로커가 구성 변경 기록에 액세스할 수 없으므로 구성 정보를 클러스터 전체에 전달할 수 없습니다. 이 상태에서 대상이나 영구 가입을 작성하거나 삭제하려는 경우 또는 영구 가입 재활성화와 같은 관련 작업을 시도할 경우 예외가 발생합니다. 하지만 비관리 메시지 전달은 계속해서 정상적으로 작동합니다.


배포 환경

브로커 클러스터의 사용은 개발 환경에서 배포되었는지 아니면 작업 환경에서 배포되었는지에 따라 달라집니다.

개발 환경

클러스터를 테스트 용도로 사용하고 확장성 및 브로커 복구를 심각하게 고려하지 않아도 되는 개발 환경에서는 마스터 브로커가 별로 필요하지 않습니다. 테스트 환경에서는 종종 대상이 자동 작성되고(자동 작성 대상 참조), 이 대상에 대한 영구 가입은 테스트 중인 응용 프로그램에서 작성하고 삭제합니다. 마스터 브로커가 없는 경우 Message Queue는 다른 브로커를 시작하기 위해 마스터 브로커가 반드시 실행 중이어야 할 필요는 없으며, 대상 및 영구 가입을 변경할 수 있고 이 변경 사항은 실행 중인 모든 브로커에게 전달될 수 있습니다. 그러나 브로커가 오프라인되었다가 나중에 복원될 경우 오프라인 상태였을 때 변경된 사항은 동기화하지 않습니다. 마스터 브로커를 사용하도록 환경을 재구성할 경우 Message Queue는 일반 요구 사항을 다시 적용합니다.

작업 환경

확장성 및 브로커 복구를 심각하게 고려해야 하는 작업 환경에서는 반드시 마스터 브로커를 사용하고 구성 변경 기록을 유지 관리해야 합니다. 그래야 브로커가 오프라인되었다가 다시 복원될 경우 오프라인이었을 때 변경된 사항과 동기화됩니다.

실제로 구성 변경 기록을 정기적으로 백업하여 사고에 의한 기록 손상 및 마스터 브로커 오류를 방지하는 것이 바람직합니다. Message Queue는 구성 변경 기록을 백업하고 복구할 수 있는 명령줄 옵션을 제공합니다. 필요하면 마스터 브로커 역할을 하는 브로커를 변경할 수도 있습니다. 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.



이전      목차      색인      다음     


부품 번호: 819-2222.   Copyright 2005 Sun Microsystems, Inc. 모든 권리는 저작권자의 소유입니다.