4.16. 클러스터 스케일 다운을 지원하는 메시지 마이그레이션 활성화
클러스터의 브로커 수를 축소하고 메시지를 클러스터의 나머지 Pod로 마이그레이션하려면 메시지 마이그레이션을 활성화해야 합니다.
메시지 마이그레이션이 활성화된 클러스터를 축소하면 스케일다운 컨트롤러에서 메시지 마이그레이션 프로세스를 관리합니다.
4.16.1. 메시지 마이그레이션 프로세스의 단계 링크 복사링크가 클립보드에 복사되었습니다!
메시지 마이그레이션 프로세스는 다음 단계를 따릅니다.
- 배포의 의도적인 스케일 다운으로 인해 배포의 브로커 Pod가 종료되면 Operator는 메시지 마이그레이션을 준비하기 위해 스케일 다운 사용자 정의 리소스를 자동으로 배포합니다.
고립된 PV(영구 볼륨)를 확인하려면 scaledown 컨트롤러에서 볼륨 클레임의 서신을 확인합니다. 컨트롤러는 볼륨 클레임의 ordinal을 프로젝트의 StatefulSet(즉, 브로커 클러스터)에서 여전히 실행 중인 브로커 Pod의 것과 비교합니다.
볼륨 클레임의 ordinal이 브로커 클러스터에서 계속 실행 중인 브로커 Pod의 서수보다 높으면 scaledown 컨트롤러에서 해당 ordinal의 브로커 Pod가 종료되었으며 메시징 데이터를 다른 브로커 Pod로 마이그레이션해야 합니다.
- 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절. “메시지 마이그레이션 활성화” 를 참조하십시오.
4.16.2. 메시지 마이그레이션 활성화 링크 복사링크가 클립보드에 복사되었습니다!
ActiveMQArtemis 사용자 정의 리소스(CR)에서 메시지 마이그레이션을 활성화할 수 있습니다.
사전 요구 사항
- 이미 기본 브로커 배포가 있습니다. 3.4.1절. “기본 브로커 인스턴스 배포”을 참조하십시오.
- 메시지 마이그레이션이 작동하는 방식을 이해합니다. 자세한 내용은 4.16.1절. “메시지 마이그레이션 프로세스의 단계”의 내용을 참조하십시오.
- 스케일다운 컨트롤러는 단일 OpenShift 프로젝트 내에서만 작동합니다. 컨트롤러는 별도의 프로젝트의 브로커 간에 메시지를 마이그레이션할 수 없습니다.
- 브로커 배포를 0(zero)으로 축소하면 메시징 데이터를 마이그레이션할 수 있는 실행 중인 브로커 Pod가 없으므로 메시지 마이그레이션이 수행되지 않습니다. 그러나 배포를 0으로 축소한 다음 원래 배포보다 작은 크기로 백업하면 종료되는 브로커에 대해 드레인터 Pod가 시작됩니다.
프로세스
브로커 배포의 CR 인스턴스를 편집합니다.
OpenShift 명령줄 인터페이스 사용:
- 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift Container Platform에 로그인합니다.
배포에 사용할 CR을 편집합니다.
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
oc edit ActiveMQArtemis <CR instance name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift Container Platform 웹 콘솔 사용:
- 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift Container Platform에 로그인합니다.
-
왼쪽 창에서
를 클릭합니다. - ActiveMQArtemis CRD를 클릭합니다.
- Instances 탭을 클릭합니다.
- 브로커 배포에 사용할 인스턴스를 클릭합니다.
YAML 탭을 클릭합니다.
콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 편집할 수 있습니다.
CR의
deploymentPlan섹션에서messageMigration속성을 추가하고true로 설정합니다. 아직 구성되지 않은 경우persistenceEnabled특성을 추가하고true로 설정합니다. 예를 들면 다음과 같습니다.spec: deploymentPlan: messageMigration: true persistenceEnabled: true ...spec: deploymentPlan: messageMigration: true persistenceEnabled: true ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이러한 설정은 나중에 클러스터형 브로커 배포 크기를 축소할 때 Operator는 확장 컨트롤러를 자동으로 시작하고 여전히 실행 중인 브로커 Pod로 메시지를 마이그레이션합니다.
- CR을 저장합니다.
(선택 사항) 클러스터를 축소하고 메시지 마이그레이션 프로세스를 보려면 다음 단계를 완료합니다.
기존 브로커 배포에서 실행 중인 포드를 확인합니다.
oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같은 출력이 표시됩니다.
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
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 8sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 출력에서는 3개의 Pod가 실행 중임을 보여줍니다. 하나는 브로커 Operator 자체 및 배포의 각 브로커에 대해 별도의 Pod입니다.
각 Pod에 로그인하고 각 브로커에 일부 메시지를 보냅니다.
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
$ /opt/amq/bin/artemis producer --url tcp://172.17.0.6:61616 --user admin --password adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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
$ /opt/amq/bin/artemis producer --url tcp://172.17.0.7:61616 --user admin --password adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 위의 명령은 각 브로커에서 queue이라는
큐를 생성하고 각 큐에 1000개의 메시지를 추가합니다.클러스터를 두 브로커에서 1개로 축소합니다.
-
기본 브로커 CR,
broker_activemqartemis_cr.yaml을 엽니다. -
CR에서
deploymentPlan.size를1로 설정합니다. 명령줄에서 변경 사항을 적용합니다.
oc apply -f deploy/crs/broker_activemqartemis_cr.yaml
$ oc apply -f deploy/crs/broker_activemqartemis_cr.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod
ex-aao-sss-1이 종료되기 시작합니다. scaledown 컨트롤러는 동일한 이름의 새 드레이닝 Pod를 시작합니다. 이 드레인러 Pod는 브로커 Podex-aao-sss-1에서 클러스터의 다른 브로커 Pod인으로 모든 메시지를 마이그레이션한 후 종료됩니다.ex-aao-ss-0
-
기본 브로커 CR,
-
drainer Pod가 종료되면 브로커 Pod의
ex-aao-sss-0의 메시지 수를 확인합니다.드레인러 Pod가 종료된 브로커 Pod에서 1000개의 메시지를 성공적으로 마이그레이션했음을 나타내는 큐의 메시지 수가 2000개입니다.