4.16. 클러스터 스케일 다운을 지원하는 메시지 마이그레이션 활성화


클러스터의 브로커 수를 축소하고 메시지를 클러스터의 나머지 Pod로 마이그레이션하려면 메시지 마이그레이션을 활성화해야 합니다.

메시지 마이그레이션이 활성화된 클러스터를 축소하면 스케일다운 컨트롤러에서 메시지 마이그레이션 프로세스를 관리합니다.

4.16.1. 메시지 마이그레이션 프로세스의 단계

메시지 마이그레이션 프로세스는 다음 단계를 따릅니다.

  1. 배포의 의도적인 스케일 다운으로 인해 배포의 브로커 Pod가 종료되면 Operator는 메시지 마이그레이션을 준비하기 위해 스케일 다운 사용자 정의 리소스를 자동으로 배포합니다.
  2. 고립된 PV(영구 볼륨)를 확인하려면 scaledown 컨트롤러에서 볼륨 클레임의 서신을 확인합니다. 컨트롤러는 볼륨 클레임의 ordinal을 프로젝트의 StatefulSet(즉, 브로커 클러스터)에서 여전히 실행 중인 브로커 Pod의 것과 비교합니다.

    볼륨 클레임의 ordinal이 브로커 클러스터에서 계속 실행 중인 브로커 Pod의 서수보다 높으면 scaledown 컨트롤러에서 해당 ordinal의 브로커 Pod가 종료되었으며 메시징 데이터를 다른 브로커 Pod로 마이그레이션해야 합니다.

  3. scaledown 컨트롤러는 drainer Pod를 시작합니다. drainer Pod는 클러스터의 다른 라이브 브로커 Pod 중 하나에 연결하고 해당 라이브 브로커 Pod로 메시지를 마이그레이션합니다.

다음 그림은 scaledown 컨트롤러 ( drain controller라고도 함)에서 실행 중인 브로커 Pod로 메시지를 마이그레이션하는 방법을 보여줍니다.

그림 4.1. scaledown 컨트롤러를 사용한 메시지 마이그레이션

메시지가 작동 브로커 Pod로 성공적으로 마이그레이션되면 드레인터 Pod가 종료되고 축소 컨트롤러에서 고립된 PV의 PVC를 제거합니다. PV는 "Released" 상태로 반환됩니다.

참고

PV의 회수 정책이 유지 되도록 설정된 경우 PV를 삭제하고 다시 생성할 때까지 다른 Pod에서 PV를 사용할 수 없습니다. 예를 들어, 축소 후 클러스터를 확장하면 PV를 삭제하고 다시 생성할 때까지 Pod에서 PV를 사용할 수 없습니다.

추가 리소스

4.16.2. 메시지 마이그레이션 활성화

ActiveMQArtemis 사용자 정의 리소스(CR)에서 메시지 마이그레이션을 활성화할 수 있습니다.

사전 요구 사항

참고
  • 스케일다운 컨트롤러는 단일 OpenShift 프로젝트 내에서만 작동합니다. 컨트롤러는 별도의 프로젝트의 브로커 간에 메시지를 마이그레이션할 수 없습니다.
  • 브로커 배포를 0(zero)으로 축소하면 메시징 데이터를 마이그레이션할 수 있는 실행 중인 브로커 Pod가 없으므로 메시지 마이그레이션이 수행되지 않습니다. 그러나 배포를 0으로 축소한 다음 원래 배포보다 작은 크기로 백업하면 종료되는 브로커에 대해 드레인터 Pod가 시작됩니다.

프로세스

  1. 브로커 배포의 CR 인스턴스를 편집합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift Container Platform에 로그인합니다.
      2. 배포에 사용할 CR을 편집합니다.

         oc edit ActiveMQArtemis <CR instance name> -n <namespace>
        Copy to Clipboard Toggle word wrap
    2. OpenShift Container Platform 웹 콘솔 사용:

      1. 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift Container Platform에 로그인합니다.
      2. 왼쪽 창에서 Administration Custom Resource Definitions 를 클릭합니다.
      3. ActiveMQArtemis CRD를 클릭합니다.
      4. Instances 탭을 클릭합니다.
      5. 브로커 배포에 사용할 인스턴스를 클릭합니다.
      6. YAML 탭을 클릭합니다.

        콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 편집할 수 있습니다.

  2. CR의 deploymentPlan 섹션에서 messageMigration 속성을 추가하고 true 로 설정합니다. 아직 구성되지 않은 경우 persistenceEnabled 특성을 추가하고 true 로 설정합니다. 예를 들면 다음과 같습니다.

    spec:
      deploymentPlan:
        messageMigration: true
        persistenceEnabled: true
      ...
    Copy to Clipboard Toggle word wrap

    이러한 설정은 나중에 클러스터형 브로커 배포 크기를 축소할 때 Operator는 확장 컨트롤러를 자동으로 시작하고 여전히 실행 중인 브로커 Pod로 메시지를 마이그레이션합니다.

  3. CR을 저장합니다.
  4. (선택 사항) 클러스터를 축소하고 메시지 마이그레이션 프로세스를 보려면 다음 단계를 완료합니다.

    1. 기존 브로커 배포에서 실행 중인 포드를 확인합니다.

      $ oc get pods
      Copy to Clipboard Toggle word wrap

      다음과 같은 출력이 표시됩니다.

      activemq-artemis-operator-8566d9bf58-9g25l   1/1   Running   0   3m38s
      ex-aao-ss-0                                  1/1   Running   0   112s
      ex-aao-ss-1                                  1/1   Running   0   8s
      Copy to Clipboard Toggle word wrap

      이전 출력에서는 3개의 Pod가 실행 중임을 보여줍니다. 하나는 브로커 Operator 자체 및 배포의 각 브로커에 대해 별도의 Pod입니다.

    2. 각 Pod에 로그인하고 각 브로커에 일부 메시지를 보냅니다.

      1. Pod ex-aao-ss-0 에 클러스터 IP 주소가 172.17.0.6 이므로 다음 명령을 실행합니다.

        $ /opt/amq/bin/artemis producer --url tcp://172.17.0.6:61616 --user admin --password admin
        Copy to Clipboard Toggle word wrap
    3. Pod ex-aao-ss-1 에 클러스터 IP 주소가 172.17.0.7 인 경우 다음 명령을 실행합니다.

      $ /opt/amq/bin/artemis producer --url tcp://172.17.0.7:61616 --user admin --password admin
      Copy to Clipboard Toggle word wrap

      위의 명령은 각 브로커에서 queue이라는 를 생성하고 각 큐에 1000개의 메시지를 추가합니다.

    4. 클러스터를 두 브로커에서 1개로 축소합니다.

      1. 기본 브로커 CR, broker_activemqartemis_cr.yaml 을 엽니다.
      2. CR에서 deploymentPlan.size1 로 설정합니다.
      3. 명령줄에서 변경 사항을 적용합니다.

        $ oc apply -f deploy/crs/broker_activemqartemis_cr.yaml
        Copy to Clipboard Toggle word wrap

        Pod ex-aao-sss-1 이 종료되기 시작합니다. scaledown 컨트롤러는 동일한 이름의 새 드레이닝 Pod를 시작합니다. 이 드레인러 Pod는 브로커 Pod ex-aao-sss-1에서 클러스터의 다른 브로커 Pod인 ex- aao-ss-0 으로 모든 메시지를 마이그레이션한 후 종료됩니다.

    5. drainer Pod가 종료되면 브로커 Pod의 ex-aao-sss-0 의 메시지 수를 확인합니다. 드레인러 Pod가 종료된 브로커 Pod에서 1000개의 메시지를 성공적으로 마이그레이션했음을 나타내는 큐의 메시지 수가 2000개입니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동