3.4. Operator 기반 브로커 배포 생성
3.4.1. 기본 브로커 인스턴스 배포
다음 절차에서는 CR(사용자 정의 리소스) 인스턴스를 사용하여 기본 브로커 배포를 생성하는 방법을 보여줍니다.
여러 CR(사용자 정의 리소스) 인스턴스를 배포하여 지정된 OpenShift 프로젝트에서 둘 이상의 브로커 배포를 생성할 수 있지만 일반적으로 프로젝트에 단일 브로커 배포를 생성한 다음 주소에 대해 여러 CR 인스턴스를 배포합니다.
별도의 프로젝트에서 브로커 배포를 생성하는 것이 좋습니다.
AMQ Broker 7.10에서 다음 항목을 구성하려면 CR을 처음 배포하기 전에 기본 브로커 CR 인스턴스에 적절한 구성을 추가해야 합니다.
사전 요구 사항
AMQ Broker Operator가 설치되어 있어야 합니다.
- OpenShift CLI(명령줄 인터페이스)를 사용하여 AMQ Broker Operator를 설치하려면 3.2절. “CLI를 사용하여 Operator 설치” 을 참조하십시오.
- OperatorHub 그래픽 인터페이스를 사용하여 AMQ Broker Operator를 설치하려면 3.3절. “OperatorHub를 사용하여 Operator 설치” 을 참조하십시오.
- Operator에서 브로커 배포에 사용할 브로커 컨테이너 이미지를 선택하는 방법을 이해해야 합니다. 자세한 내용은 2.4절. “Operator에서 컨테이너 이미지를 선택하는 방법”의 내용을 참조하십시오.
- AMQ Broker 7.3부터 새 버전의 Red Hat Ecosystem Catalog를 사용하여 컨테이너 이미지에 액세스합니다. 이 새 버전의 레지스트리는 인증된 사용자가 되어 이미지에 액세스할 수 있어야 합니다. 이 섹션의 절차를 수행하기 전에 먼저 Red Hat Container Registry Authentication 에 설명된 단계를 완료해야 합니다.
절차
Operator를 성공적으로 설치하면 Operator가 실행되고 CR과 관련된 변경 사항을 수신 대기합니다. 다음 예제 절차에서는 CR 인스턴스를 사용하여 프로젝트에 기본 브로커를 배포하는 방법을 보여줍니다.
브로커 배포용 CR(사용자 정의 리소스) 인스턴스 구성을 시작합니다.
OpenShift 명령줄 인터페이스 사용:
배포를 생성하는 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.
oc login -u <user> -p <password> --server=<host:port>
-
다운로드 및 추출한 Operator 설치 아카이브의
deploy/crs
디렉터리에 포함된broker_activemqartemis_cr.yaml
이라는 샘플 CR 파일을 엽니다.
OpenShift Container Platform 웹 콘솔 사용:
- 배포를 생성하는 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 콘솔에 로그인합니다.
-
기본 브로커 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서
를 클릭합니다. - ActiveMQArtemis CRD를 클릭합니다.
- Instances 탭을 클릭합니다.
Create ActiveMQArtemis 를 클릭합니다.
콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 구성할 수 있습니다.
기본 브로커 배포의 경우 구성은 다음과 같이 표시될 수 있습니다.
apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemis metadata: name: ex-aao application: ex-aao-app spec: deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true
broker_activemqartemis_cr.yaml
샘플 CR 파일에서image
속성이자리 표시자
의 기본값으로 설정되어 있는지 확인합니다. 이 값은 기본적으로image
속성이 배포에 사용할 브로커 컨테이너 이미지를 지정하지 않음을 나타냅니다. Operator에서 사용할 적절한 브로커 컨테이너 이미지를 결정하는 방법을 알아보려면 2.4절. “Operator에서 컨테이너 이미지를 선택하는 방법” 를 참조하십시오.참고broker_activemqartemis_cr.yaml
샘플 CR은ex-aao
의 이름 지정 규칙을 사용합니다. 이 이름 지정 규칙은 CR이 AMQ Broker Operator 의 예제 리소스임을 나타냅니다. AMQ Broker는 ActiveMQ Artemis 프로젝트를 기반으로 합니다. 이 샘플 CR을 배포하면 결과 StatefulSet에서ex-aao-ss
이름을 사용합니다. 또한 배포의 브로커 Pod는 StatefulSet 이름 (예:ex-aao-ss-0
,ex-aao-sss-1
등)을 기반으로 합니다. CR의 애플리케이션 이름은 배포에 StatefulSet의 레이블로 표시됩니다. 예를 들어 Pod 선택기에서 이 라벨을 사용할 수 있습니다.-
size
속성은 배포할 브로커 수를 지정합니다. 값2
이상은 클러스터형 브로커 배포를 지정합니다. 그러나 단일 브로커 인스턴스를 배포하려면 값이1
로 설정되어 있는지 확인합니다. CR 인스턴스를 배포합니다.
OpenShift 명령줄 인터페이스 사용:
- CR 파일을 저장합니다.
브로커 배포를 생성하는 프로젝트로 전환합니다.
$ oc project <project_name>
CR 인스턴스를 생성합니다.
$ oc create -f <path/to/custom_resource_instance>.yaml
OpenShift 웹 콘솔 사용:
- CR 구성을 마쳤으면 생성을 클릭합니다.
OpenShift Container Platform 웹 콘솔에서
를 클릭합니다. ex-aao-ss
라는 새로운 StatefulSet이 표시됩니다.- ex-aao-ss StatefulSet을 클릭합니다. CR에 정의된 단일 브로커에 해당하는 하나의 Pod가 있음을 확인할 수 있습니다.
- StatefulSet에서 Pod 탭을 클릭합니다. ex-aao-ss Pod를 클릭합니다. 실행 중인 Pod의 이벤트 탭에서 브로커 컨테이너가 시작된 것을 확인할 수 있습니다. Logs (로그) 탭에 브로커 자체가 실행 중임을 보여줍니다.
브로커가 정상적으로 실행되고 있는지 테스트하려면 브로커 Pod의 쉘에 액세스하여 일부 테스트 메시지를 보냅니다.
OpenShift Container Platform 웹 콘솔 사용:
-
를 클릭합니다. - ex-aao-ss Pod를 클릭합니다.
- 터미널 탭을 클릭합니다.
-
OpenShift 명령줄 인터페이스 사용:
프로젝트의 Pod 이름 및 내부 IP 주소를 가져옵니다.
$ oc get pods -o wide NAME STATUS IP amq-broker-operator-54d996c Running 10.129.2.14 ex-aao-ss-0 Running 10.129.2.15
브로커 Pod 쉘에 액세스합니다.
$ oc rsh ex-aao-ss-0
쉘에서
artemis
명령을 사용하여 일부 테스트 메시지를 보냅니다. URL에서 브로커 Pod의 내부 IP 주소를 지정합니다. 예를 들면 다음과 같습니다.sh-4.2$ ./amq-broker/bin/artemis producer --url tcp://10.129.2.15:61616 --destination queue://demoQueue
위 명령은 브로커에서
demoQueue
라는 큐를 자동으로 생성하고 기본 1000개의 메시지 수량을 큐에 보냅니다.다음과 유사한 출력이 표시되어야 합니다.
Connection brokerURL = tcp://10.129.2.15:61616 Producer ActiveMQQueue[demoQueue], thread=0 Started to calculate elapsed time ... Producer ActiveMQQueue[demoQueue], thread=0 Produced: 1000 messages Producer ActiveMQQueue[demoQueue], thread=0 Elapsed time in second : 3 s Producer ActiveMQQueue[demoQueue], thread=0 Elapsed time in milli second : 3492 milli seconds
추가 리소스
- 주요 브로커 CR(사용자 정의 리소스)에 대한 전체 구성 참조는 8.1절. “사용자 정의 리소스 구성 참조” 을 참조하십시오.
- 실행 중인 브로커를 AMQ 관리 콘솔에 연결하는 방법은 5장. Operator 기반 브로커 배포를 위해 AMQ 관리 콘솔에 연결 을 참조하십시오.
3.4.2. 클러스터 브로커 배포
프로젝트에 두 개 이상의 브로커 Pod가 실행 중인 경우 Pod는 브로커 클러스터를 자동으로 형성합니다. 클러스터형 구성을 사용하면 브로커가 서로 연결하고 필요에 따라 부하 분산을 위해 메시지를 재배포할 수 있습니다.
다음 절차에서는 클러스터형 브로커를 배포하는 방법을 보여줍니다. 기본적으로 이 배포의 브로커는 수요 부하 분산에 사용됩니다. 즉 브로커는 일치하는 소비자가 있는 다른 브로커로만 메시지를 전달합니다.
사전 요구 사항
- 기본 브로커 인스턴스가 이미 배포되어 있습니다. 3.4.1절. “기본 브로커 인스턴스 배포”을 참조하십시오.
절차
- 기본 브로커 배포에 사용한 CR 파일을 엽니다.
클러스터된 배포의 경우
deploymentPlan.size
값이2
이상인지 확인합니다. 예를 들면 다음과 같습니다.apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemis metadata: name: ex-aao application: ex-aao-app spec: deploymentPlan: size: 4 image: placeholder ...
참고metadata
섹션에서namespace
속성을 포함하고 OpenShift Container Platform 웹 콘솔을 사용하여 CR 인스턴스를 생성하는 경우에만 값을 지정해야 합니다. 지정해야 하는 값은 브로커 배포를 위한 OpenShift 프로젝트의 이름입니다.- 수정된 CR 파일을 저장합니다.
이전에 기본 브로커 배포를 생성한 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.
$ oc login -u <user> -p <password> --server=<host:port>
이전에 기본 브로커 배포를 생성한 프로젝트로 전환합니다.
$ oc project <project_name>
명령줄에서 변경 사항을 적용합니다.
$ oc apply -f <path/to/custom_resource_instance>.yaml
OpenShift Container Platform 웹 콘솔에서 CR에 지정된 수에 따라 추가 브로커 Pod가 프로젝트에서 시작됩니다. 기본적으로 프로젝트에서 실행되는 브로커는 클러스터됩니다.
각 Pod의 로그 탭을 엽니다. 로그에 OpenShift가 각 브로커에 클러스터 연결 브리지를 설정했음을 보여줍니다. 특히 로그 출력에는 다음과 같은 행이 포함됩니다.
targetConnector=ServerLocatorImpl (identity=(Cluster-connection-bridge::ClusterConnectionBridge@6f13fb88
3.4.3. 실행 중인 브로커 배포에 사용자 정의 리소스 변경 적용
다음은 브로커 배포 실행에 CR(사용자 정의 리소스) 변경 사항을 적용하는 방법에 유의해야 할 몇 가지 중요한 사항입니다.
-
CR의
persistenceEnabled
속성을 동적으로 업데이트할 수 없습니다. 이 특성을 변경하려면 클러스터를 0 브로커로 축소합니다. 기존 CR을 삭제합니다. 그런 다음 변경 사항으로 CR을 다시 생성하고 재배포하여 배포 크기를 지정합니다. -
CR의
deploymentPlan.size
속성 값은oc scale
명령을 통해 브로커 배포 크기에 대한 변경 사항을 덮어씁니다. 예를 들어oc scale
을 사용하여 배포 크기를 3개의 브로커에서 2개로 변경하지만 CR의deploymentPlan.size
값은 여전히3
입니다. 이 경우 OpenShift는 처음에 배포를 두 개의 브로커로 축소합니다. 그러나 scaledown 작업이 완료되면 Operator는 CR에 지정된 대로 배포를 세 개의 브로커로 복원합니다. -
3.2.2절. “CLI를 사용하여 Operator 배포” 에 설명된 대로, CR에서 persistenceEnabled=true를 설정하여 영구 스토리지를 사용하여 브로커 배포를 생성하는 경우 (즉, CR에서
persistenceEnabled=true
)를 설정하여 브로커 Pod에 요청하는 AMQ Broker Operator에 대한 PV(영구 볼륨)를 프로비저닝해야 할 수 있습니다. 브로커 배포 크기를 축소하면 Operator는 현재 종료된 브로커 Pod에 대해 이전에 요청한 모든 PV를 해제합니다. 그러나 CR을 삭제하여 브로커 배포를 제거하면 AMQ Broker Operator 는 이를 제거할 때 배포에 계속 있는 브로커 포드에 대한 PVC(영구 볼륨 클레임)를 해제하지 않습니다. 또한 릴리스되지 않은 PV는 새 배포에서 사용할 수 없습니다. 이 경우 볼륨을 수동으로 릴리스해야 합니다. 자세한 내용은 OpenShift 문서의 영구 볼륨 릴리스 를 참조하십시오. AMQ Broker 7.10에서 다음 항목을 구성하려면 CR을 처음 배포하기 전에 기본 CR 인스턴스에 적절한 구성을 추가해야 합니다.
- 활성 확장 이벤트 중에 적용하는 추가 변경 사항은 Operator에 의해 큐에 추가되고 스케일링이 완료된 경우에만 실행됩니다. 예를 들어 배포 크기를 4개 브로커에서 1개로 축소한다고 가정합니다. 그러면 스케일다운이 진행되는 동안 브로커 관리자의 사용자 이름과 암호 값도 변경합니다. 이 경우 Operator는 배포가 하나의 활성 브로커로 실행될 때까지 사용자 이름과 암호를 대기열에 넣습니다.
-
배포 크기를 변경하거나 어셉터, 커넥터 또는 콘솔에 대한
expose
특성 값을 변경하는 것 외에 모든 CR이 변경되어 기존 브로커가 다시 시작됩니다. 배포에 여러 개의 브로커가 있는 경우 한 번에 하나의 브로커만 다시 시작됩니다.