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

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

4장
브로커 클러스터

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

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

브로커 클러스터는 데이터 가용성이 아닌 서비스 가용성을 제공합니다. 클러스터에 있는 브로커에서 장애가 발생하면 해당 브로커에 연결된 클라이언트는 클러스터에 있는 다른 브로커에 연결되지만 이 때 일부 데이터가 손실될 수 있습니다.


클러스터 구조

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

클러스터에서 서비스 가용성은 대상 및 영구 가입자에 대한 정보를 공유할 수 있는 브로커에 따라 다릅니다. 클러스터된 브로커에서 장애가 발생하면 이러한 상태 정보는 동기화되지 않을 수 있습니다. 클러스터 내에서 하나의 브로커를 마스터 브로커로 지정하면 이러한 가능성을 방지할 수 있습니다. 마스터 브로커는 클러스터의 지속성 항목(대상 및 영구 가입)에 대한 변경 사항을 추적하는 구성 변경 기록을 유지 관리합니다. 이러한 기록은 변경 사항이 생길 때 오프라인으로 있었던 브로커에게 변경 정보를 전파하는 데 사용됩니다.

그림 4-1 클러스터 구조

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

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


메시지 전달

클러스터 구성에서 브로커는 대상 및 메시지 사용자에 대한 정보를 공유합니다. 각 브로커는 다음 정보에 대해서도 알고 있습니다.

이러한 정보를 가지고 각 브로커는 자신과 직접 연결된 메시지 생성자로부터 원격 메시지 사용자에게 메시지 경로를 지정할 수 있습니다. 생성자의 홈 브로커는 사용자의 홈 브로커와는 다른 기능을 합니다.

클러스터된 브로커는 클러스터 내의 메시지 트래픽을 최소화하기 위해 함께 작동합니다. 예를 들어, 원격 브로커에 같은 주제 대상에 대해 두 개의 동일한 가입이 있으면 메시지는 회선을 통해 한 번만 전송됩니다. 로컬 사용자에 대한 전달이 원격 사용자에 대한 전달보다 높은 우선 순위를 갖도록 대상 등록 정보를 설정하여 트래픽을 더 줄일 수 있습니다.

클라이언트와 브로커 간의 암호화된 보안 메시지를 전달하려면 브로커 간의 메시지 전달도 보안하도록 클러스터를 구성할 수 있습니다.

대상 속성

클러스터된 브로커에 있는 물리적 대상에 대해 설정된 속성은 클러스터에 있는 해당 대상의 모든 인스턴스에 적용됩니다. 그러나 이러한 속성에서 지정한 제한 중 일부는 클러스터에 전체적으로 적용되고 나머지는 개별 대상 인스턴스에 적용됩니다. 표 4-1에서는 물리적 대상에 대해 설정할 수 있는 속성을 나열하고 해당 속성의 범위를 지정합니다.

표 4-1 클러스터된 브로커에 있는 물리적 대상의 등록 정보

등록 정보 이름

범위

maxNumMsgs

각 브로커. 클러스터에 생성자를 배포하면 사용하지 않은 전체 메시지에 제한을 증가시킬 수 있습니다.

maxTotalMsgBytes

각 브로커. 클러스터에 생성자를 배포하면 사용하지 않은 메시지에 예약된 전체 메모리에 대한 제한을 증가시킬 수 있습니다.

lmitBehavior

전역

maxBytesPerMsg

각 브로커

maxNumProducers

각 브로커

maxNumActiveConsumers

전역

maxNumBackupConsumers

전역

consumerFlowLimit

전역

localDeliveryPreferred

전역

isLocalOnly

전역

useDMQ

각 브로커

클러스터링 및 대상

대상이 관리 작성 대상, 자동 작성 대상 또는 임시 대상인지의 여부의 따라 클러스터 내에서 대상이 전파되는 방법과 대상의 연결 또는 브로커 오류 발생 시 대상이 처리되는 방법이 달라집니다.

그림 4-2는 클러스터된 브로커 4개를 보여줍니다. 브로커와 클라이언트 간의 연결과 같이 브로커 간의 직접(개별) 연결이 표시되어 있습니다. 이 그림은 다음 절에서 설명하는 바와 같이 많은 가능성을 나타냅니다.

그림 4-2 클러스터 예

클러스터 내에서 대상의 전파 방식를 보여주는 그림. 자세한 내용은 텍스트에 설명되어 있습니다.

회신 모델을 사용하여 대기열로 생성

위 그림의 내용은 다음과 같습니다.

  1. 관리자는 물리적 대상인 QW를 만듭니다. 대기열은 생성 시 클러스터를 통해 복제됩니다.
  2. 생산자 ProdQW는 대기열 QW로 메시지를 보내고 임시 대기열 TempQ1W로 회신을 보내는 회신 모델을 사용합니다. (임시 대기열은 응용 프로그램에서 임시 대상을 만들고 사용자를 추가할 때 만들어지고 복제됩니다.)
  3. 홈 브로커 BrokerW는 QW에 전송된 메시지를 지속적으로 처리하고 이 메시지의 선택 기준을 충족하는 첫 번째 활성 사용자에게로 메시지 경로를 지정합니다. 메시지를 받을 준비가 된 사용자에 따라 메시지는 BrokerX에 있는 사용자 C1QW나 BrokerY에 있는 사용자 C2QW에게 전달됩니다. 메시지를 받은 사용자는 대상 TempQ1W로 회신을 보냅니다.

자동 작성 대상에 생성

앞의 그림의 내용은 다음과 같습니다.

  1. 생성자 ProdAutoQY는 브로커에 없는 대상인 AutoQY로 메시지를 보냅니다.
  2. 브로커는 지속적으로 메시지를 처리하고 대상 AutoQY를 만듭니다.
  3. 자동 작성 대상은 클러스터 전체에서 자동으로 복제되지 않습니다. 사용자가 대기열 AutoQY로부터 메시지를 받도록 선택한 경우에만 사용자의 홈 브로커는 대상 AutoQY를 만들고 사용자에게 메시지를 전달합니다. 사용자가 자동 작성 대상을 만들 때 대상은 클러스터 전체로 복제됩니다.

주제 대상에 생성

앞의 그림의 내용은 다음과 같습니다.

  1. 관리자가 물리적 주제 대상인 TY를 만들었습니다. 관리 작성 대상인 TY는 대상이 사용되기 전에 브로커 클러스터 전체로 복제됩니다.
  2. 게시자 PubTY는 TY로 메시지를 보냅니다.
  3. 홈 브로커 BrokerY는 TY에 게시된 모든 메시지를 지속적으로 처리하고 이 메시지의 선택 기준에 일치하는 모든 주제 가입자에게로 메시지 경로를 지정합니다.

연결 또는 브로커 오류 발생 시 대상 처리

표 4-2에서는 클러스터에서 여러 종류의 대상이 복제되고 삭제되는 방법에 대해 설명합니다.

표 4-2 클러스터에서 대상 처리

대상

전파 및 삭제

관리 작성

대상이 만들어지면 클러스터 내에서 전파되고 각 브로커는 대상 정보를 지속적으로 저장합니다.

관리자가 명시적으로 대상을 삭제하면 해당 대상은 삭제됩니다.

마스터 브로커가 있으면 작성 및 삭제 기록이 마스터 브로커에 저장되어 클러스터 내의 브로커가 상태 정보를 동기화할 수 있습니다.

임시

대상이 만들어지면 클러스터 주위로 전파됩니다.

임시 대상과 관련된 사용자가 다시 연결되도록 허용되면 대상은 사용자의 홈 브로커에 지속적으로 저장됩니다. 그렇지 않으면 대상은 저장될 수 없습니다.

사용자의 연결이 끊어지면 모든 브로커에서 대상이 삭제됩니다.

사용자의 홈 브로커가 충돌하여 사용자가 다시 연결되도록 허용된 경우 이 사용자와 관련된 임시 대상은 모니터됩니다. 사용자 클라이언트가 특정 시간 내에 다시 연결되지 않으면 클라이언트에서 오류가 발생한 것으로 가정하고 대상이 삭제됩니다.

자동 작성

생성자가 만들어졌으나 대상이 없는 경우 대상은 생성자의 홈 브로커에 만들어집니다.

존재하지 않는 대상에 대해 사용자가 만들어지면 사용자 및 대상 정보는 클러스터 전체로 전파됩니다.

자동 작성 대상은 관리자에 의해 명시적으로 삭제되거나 다음과 같은 경우 각 브로커에 의해 자동으로 삭제됩니다.

  • 특정 시간 동안 사용자 또는 메시지가 없는 경우
  • 브로커를 다시 시작하거나 해당 대상에 대한 메시지가 없는 경우


클러스터 구성

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

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


주

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



클러스터 동기화

클러스터의 구성이 변경될 때마다 변경에 대한 정보가 클러스터의 모든 브로커로 자동 전파됩니다. 다음 이벤트 중 하나가 발생하면 클러스터 구성이 변경됩니다.

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

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



이전      목차      색인      다음     


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