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

다중 브로커 클러스터

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

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

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

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

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

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

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

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

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

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