14장. 브로커 클러스터 설정


클러스터는 함께 그룹화된 여러 브로커 인스턴스로 구성됩니다. 브로커 클러스터는 메시지 처리 부하를 여러 브로커에 배포하여 성능을 향상시킵니다. 또한 브로커 클러스터는 고가용성을 통해 다운타임을 최소화할 수 있습니다.

다양한 클러스터 토폴로지에서 브로커를 연결할 수 있습니다. 클러스터 내에서 각 활성 브로커는 자체 메시지를 관리하고 자체 연결을 처리합니다.

또한 클러스터 전체에서 클라이언트 연결의 균형을 유지하고 메시지를 재배포하여 브로커의 중단을 방지할 수도 있습니다.

14.1. 브로커 클러스터 이해

브로커 클러스터를 생성하기 전에 몇 가지 중요한 클러스터링 개념을 이해해야 합니다.

14.1.1. 브로커 클러스터의 메시지 부하를 분산하는 방법

브로커가 클러스터를 형성하기 위해 연결되어 있으면 AMQ Broker는 브로커 간 메시지 로드의 균형을 자동으로 조정합니다. 이렇게 하면 클러스터가 높은 메시지 처리량을 유지할 수 있습니다.

네 브로커로 구성된 대칭 클러스터를 고려하십시오. 각 브로커는 OrderQueue 라는 큐로 구성됩니다. OrderProducer 클라이언트는 Broker1 에 연결하고 OrderQueue 로 메시지를 보냅니다. Broker1 은 라운드 로빈 방식으로 메시지를 다른 브로커에 전달합니다. 각 브로커에 연결된 OrderConsumer 클라이언트는 메시지를 사용합니다.

그림 14.1. 클러스터의 메시지 로드 밸런싱

메시지는 클러스터의 브로커 전체에 부하를 분산합니다.

메시지 로드 밸런싱이 없으면 Broker1 로 전송된 메시지는 Broker1 에 남아 있으며 OrderConsumer1 만 사용할 수 있습니다.

AMQ Broker는 기본적으로 첫 번째 메시지 그룹을 첫 번째 브로커에 배포하고 두 번째 메시지 그룹을 두 번째 브로커에 분산합니다. 브로커가 시작된 순서에 따라 첫 번째, 두 번째 등을 결정합니다.

다음을 구성할 수 있습니다.

  • 일치하는 큐가 있는 브로커에 메시지를 로드 밸런싱하는 클러스터입니다.
  • 활성 소비자와 일치하는 큐가 있는 브로커에 메시지를 로드 밸런싱하는 클러스터입니다.
  • 부하 분산이 아니라 소비자가 있는 대기열에서 소비자가 없는 대기열의 메시지 재배포를 수행하기 위한 클러스터입니다.
  • 소비자가 있는 대기열에 대해 소비자가 없는 대기열에서 메시지를 자동으로 재배포하는 주소입니다.

추가 리소스

14.1.2. 브로커 클러스터의 안정성 개선 방법

브로커 클러스터는 고가용성 및 페일오버를 가능하게 하므로 독립 실행형 브로커보다 더 안정적으로 사용할 수 있습니다. 고가용성을 구성하면 브로커가 실패 이벤트에 직면하더라도 클라이언트 애플리케이션이 계속 메시지를 보내고 받을 수 있도록 할 수 있습니다.

고가용성을 사용하면 클러스터의 브로커가 라이브 백업 그룹으로 그룹화됩니다. 라이브 백업 그룹은 클라이언트 요청에 서비스를 제공하는 라이브 브로커와 실패하는 경우 라이브 브로커를 교체하기 위해 수동적으로 기다리는 백업 브로커로 구성됩니다. 오류가 발생하면 백업 브로커가 라이브 백업 그룹의 라이브 브로커를 교체하고 클라이언트는 다시 연결하고 작업을 계속합니다.

14.1.3. 클러스터 제한

다음 제한 사항은 클러스터형 환경에서 AMQ 브로커를 사용하는 경우에 적용됩니다.

임시 대기열
장애 조치 중에 클라이언트에 임시 대기열을 사용하는 소비자가 있는 경우 이러한 큐가 자동으로 다시 생성됩니다. 다시 생성된 큐 이름이 원래 큐 이름과 일치하지 않으므로 메시지 재배포가 실패하고 기존 임시 큐에서 메시지가 중단된 상태로 유지할 수 있습니다. 클러스터에서 임시 대기열을 사용하지 않는 것이 좋습니다. 예를 들어 요청/응답 패턴을 사용하는 애플리케이션은 JMSReplyTo 주소에 고정 큐를 사용해야 합니다.

14.1.4. 노드 ID 이해

브로커 노드 ID 는 브로커 인스턴스의 저널이 처음 생성되고 초기화될 때 프로그래밍 방식으로 생성된 GUID(Globally Unique Identifier)입니다. 노드 ID는 server.lock 파일에 저장됩니다. 노드 ID는 브로커가 독립 실행형 인스턴스인지 아니면 클러스터의 일부인지에 관계없이 브로커 인스턴스를 고유하게 식별하는 데 사용됩니다. 라이브 백업 브로커 쌍은 동일한 저널을 공유하므로 동일한 노드 ID를 공유합니다.

브로커 클러스터에서 브로커 인스턴스(노드)는 서로 연결하고 브리지 및 내부 "store-and-forward" 큐를 생성합니다. 이러한 내부 대기열의 이름은 다른 브로커 인스턴스의 노드 ID를 기반으로 합니다. 브로커 인스턴스도 자체 노드와 일치하는 노드 ID의 클러스터 브로드캐스트를 모니터링합니다. 브로커는 중복 ID를 식별하는 경우 로그에 경고 메시지를 생성합니다.

복제 HA(고가용성) 정책을 사용하는 경우 시작되며 check-for-live-servertrue 로 설정된 마스터 브로커는 노드 ID를 사용하는 브로커를 검색합니다. 마스터 브로커가 동일한 노드 ID를 사용하여 다른 브로커를 발견하면 HA 구성에 따라 failback이 시작되지 않습니다.

노드 ID는 내구성이 있습니다. 즉, 브로커를 다시 시작할 수 있습니다. 그러나 브로커 인스턴스( journal 포함)를 삭제하면 노드 ID도 영구적으로 삭제됩니다.

추가 리소스

14.1.5. 일반적인 브로커 클러스터 토폴로지

브로커를 연결하여 대칭 또는 체인 클러스터 토폴로지를 형성할 수 있습니다. 구현하는 토폴로지는 환경 및 메시징 요구 사항에 따라 다릅니다.

대칭 클러스터

대칭 클러스터에서 모든 브로커는 다른 모든 브로커에 연결됩니다. 즉, 모든 브로커가 다른 브로커에서 1 홉 이상 떨어져 있지 않습니다.

그림 14.2. 대칭 클러스터 토폴로지

4브로커 대칭 클러스터에서 각 브로커는 다른 브로커에 연결되어 있습니다.

대칭 클러스터의 각 브로커는 클러스터의 다른 모든 브로커에 존재하는 모든 큐와 해당 대기열에서 수신 대기하는 소비자를 알고 있습니다. 따라서 대칭 클러스터는 체인 클러스터보다 최적의 메시지를 로드 밸런싱하고 재배포할 수 있습니다.

대칭 클러스터는 체인 클러스터보다 쉽게 설정할 수 있지만 네트워크 제한으로 인해 브로커가 직접 연결되지 않는 환경에서 사용하기 어려울 수 있습니다.

체인 클러스터

체인 클러스터에서 클러스터의 각 브로커는 클러스터의 모든 브로커에 직접 연결되지 않습니다. 대신 브로커는 체인의 각 끝에 브로커와 체인을 형성하고 다른 모든 브로커는 체인의 이전 및 다음 브로커에 연결합니다.

그림 14.3. 체인 클러스터 토폴로지

4브러 체인 클러스터에서 브로커는 체인에 연결되어 있습니다.

체인 클러스터는 대칭 클러스터보다 설정하기가 더 어렵지만 브로커가 별도의 네트워크에 있고 직접 연결할 수 없는 경우 유용할 수 있습니다. 체인 클러스터를 사용하면 중개 브로커가 두 브로커를 간접적으로 연결하여 두 브로커가 직접 연결되지 않더라도 메시지 간에 전달될 수 있습니다.

14.1.6. 브로커 검색 방법

Discovery는 클러스터의 브로커가 연결 세부 정보를 서로 전파하는 메커니즘입니다. AMQ Broker는 동적 검색 및 정적 검색을 모두 지원합니다.

동적 검색

클러스터의 각 브로커는 UDP 멀티 캐스트 또는 Cryostat를 통해 다른 멤버에게 연결 설정을 브로드캐스트합니다. 이 방법에서는 각 브로커는 다음을 사용합니다.

  • 클러스터 연결에 대한 정보를 다른 잠재적인 클러스터 구성원으로 푸시하는 브로드캐스트 그룹 입니다.
  • 클러스터의 다른 브로커에 대한 클러스터 연결 정보를 수신하고 저장하는 검색 그룹 입니다.
정적 검색

네트워크에서 UDP 또는 Cryostat를 사용할 수 없거나 클러스터의 각 멤버를 수동으로 지정하려면 정적 검색을 사용할 수 있습니다. 이 방법에서는 브로커가 두 번째 브로커에 연결하고 연결 세부 정보를 전송하여 클러스터를 "함께"합니다. 그런 다음 두 번째 브로커는 해당 세부 정보를 클러스터의 다른 브로커에 전파합니다.

14.1.7. 클러스터 크기 조정 고려 사항

브로커 클러스터를 생성하기 전에 메시징 처리량, 토폴로지 및 고가용성 요구 사항을 고려하십시오. 이러한 요소는 클러스터에 포함할 브로커 수에 영향을 미칩니다.

참고

클러스터를 생성한 후 브로커를 추가 및 제거하여 크기를 조정할 수 있습니다. 메시지를 손실하지 않고 브로커를 추가하고 제거할 수 있습니다.

메시징 처리량

클러스터에 필요한 메시징 처리량을 제공할 수 있는 충분한 브로커가 포함되어야 합니다. 클러스터에서 브로커가 많을수록 처리량이 향상됩니다. 그러나 대규모 클러스터는 관리하기가 복잡할 수 있습니다.

토폴로지

대칭 클러스터 또는 체인 클러스터를 생성할 수 있습니다. 선택한 토폴로지 유형은 필요한 브로커 수에 영향을 미칩니다.

자세한 내용은 14.1.5절. “일반적인 브로커 클러스터 토폴로지”의 내용을 참조하십시오.

고가용성

HA(고가용성)가 필요한 경우 클러스터를 생성하기 전에 HA 정책을 선택하는 것이 좋습니다. 각 마스터 브로커에는 하나 이상의 슬레이브 브로커가 있어야 하므로 HA 정책은 클러스터 크기에 영향을 미칩니다.

자세한 내용은 14.3절. “고가용성 구현”의 내용을 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.