3.4. Operator 기반 브로커 배포 생성

3.4.1. 기본 브로커 인스턴스 배포

다음 절차에서는 CR(사용자 정의 리소스) 인스턴스를 사용하여 기본 브로커 배포를 생성하는 방법을 보여줍니다.

참고

사전 요구 사항

절차

Operator를 성공적으로 설치하면 Operator가 실행되고 CR과 관련된 변경 사항을 수신 대기합니다. 다음 예제 절차에서는 CR 인스턴스를 사용하여 프로젝트에 기본 브로커를 배포하는 방법을 보여줍니다.

  1. 브로커 배포용 CR(사용자 정의 리소스) 인스턴스 구성을 시작합니다.

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

      1. 배포를 생성하는 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.

        oc login -u <user> -p <password> --server=<host:port>
      2. 다운로드 및 추출한 Operator 설치 아카이브의 deploy/crs 디렉터리에 포함된 broker_activemqartemis_cr.yaml 이라는 샘플 CR 파일을 엽니다.
    2. OpenShift Container Platform 웹 콘솔 사용:

      1. 배포를 생성하는 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 콘솔에 로그인합니다.
      2. 기본 브로커 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서 AdministrationCustom Resource Definitions 를 클릭합니다.
      3. ActiveMQArtemis CRD를 클릭합니다.
      4. Instances 탭을 클릭합니다.
      5. 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 선택기에서 이 라벨을 사용할 수 있습니다.

  2. size 속성은 배포할 브로커 수를 지정합니다. 값 2 이상은 클러스터형 브로커 배포를 지정합니다. 그러나 단일 브로커 인스턴스를 배포하려면 값이 1 로 설정되어 있는지 확인합니다.
  3. CR 인스턴스를 배포합니다.

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

      1. CR 파일을 저장합니다.
      2. 브로커 배포를 생성하는 프로젝트로 전환합니다.

        $ oc project <project_name>
      3. CR 인스턴스를 생성합니다.

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift 웹 콘솔 사용:

      1. CR 구성을 마쳤으면 생성을 클릭합니다.
  4. OpenShift Container Platform 웹 콘솔에서 WorkloadsStatefulSets 를 클릭합니다. ex-aao-ss 라는 새로운 StatefulSet이 표시됩니다.

    1. ex-aao-ss StatefulSet을 클릭합니다. CR에 정의된 단일 브로커에 해당하는 하나의 Pod가 있음을 확인할 수 있습니다.
    2. StatefulSet에서 Pod 탭을 클릭합니다. ex-aao-ss Pod를 클릭합니다. 실행 중인 Pod의 이벤트 탭에서 브로커 컨테이너가 시작된 것을 확인할 수 있습니다. Logs (로그) 탭에 브로커 자체가 실행 중임을 보여줍니다.
  5. 브로커가 정상적으로 실행되고 있는지 테스트하려면 브로커 Pod의 쉘에 액세스하여 일부 테스트 메시지를 보냅니다.

    1. OpenShift Container Platform 웹 콘솔 사용:

      1. 워크로드포드 를 클릭합니다.
      2. ex-aao-ss Pod를 클릭합니다.
      3. 터미널 탭을 클릭합니다.
    2. OpenShift 명령줄 인터페이스 사용:

      1. 프로젝트의 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
      2. 브로커 Pod 쉘에 액세스합니다.

        $ oc rsh ex-aao-ss-0
  6. 쉘에서 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

추가 리소스

3.4.2. 클러스터 브로커 배포

프로젝트에 두 개 이상의 브로커 Pod가 실행 중인 경우 Pod는 브로커 클러스터를 자동으로 형성합니다. 클러스터형 구성을 사용하면 브로커가 서로 연결하고 필요에 따라 부하 분산을 위해 메시지를 재배포할 수 있습니다.

다음 절차에서는 클러스터형 브로커를 배포하는 방법을 보여줍니다. 기본적으로 이 배포의 브로커는 수요 부하 분산에 사용됩니다. 즉 브로커는 일치하는 소비자가 있는 다른 브로커로만 메시지를 전달합니다.

사전 요구 사항

절차

  1. 기본 브로커 배포에 사용한 CR 파일을 엽니다.
  2. 클러스터된 배포의 경우 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 프로젝트의 이름입니다.

  3. 수정된 CR 파일을 저장합니다.
  4. 이전에 기본 브로커 배포를 생성한 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.

    $ oc login -u <user> -p <password> --server=<host:port>
  5. 이전에 기본 브로커 배포를 생성한 프로젝트로 전환합니다.

    $ oc project <project_name>
  6. 명령줄에서 변경 사항을 적용합니다.

    $ oc apply -f <path/to/custom_resource_instance>.yaml

    OpenShift Container Platform 웹 콘솔에서 CR에 지정된 수에 따라 추가 브로커 Pod가 프로젝트에서 시작됩니다. 기본적으로 프로젝트에서 실행되는 브로커는 클러스터됩니다.

  7. 각 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이 변경되어 기존 브로커가 다시 시작됩니다. 배포에 여러 개의 브로커가 있는 경우 한 번에 하나의 브로커만 다시 시작됩니다.