4.2. Operator 기반 브로커 배포를 위한 주소 및 큐 구성

Operator 기반 브로커 배포의 경우 두 개의 별도의 CR(사용자 정의 리소스) 인스턴스를 사용하여 주소 및 대기열 및 관련 설정을 구성합니다.

  • 브로커에서 주소 및 큐를 생성하려면 주소 CRD(Custom Resource Definition)를 기반으로 CR 인스턴스를 배포합니다.

    • OpenShift CLI(명령줄 인터페이스)를 사용하여 Operator를 설치하는 경우 CRD는 다운로드 및 추출한 Operator 설치 아카이브의 deploy/crds 에 포함된 broker_activemqartemisaddress_crd.yaml 파일입니다.
    • OperatorHub를 사용하여 Operator를 설치하는 경우 CRD는 OpenShift Container Platform 웹 콘솔의 AdministrationCustom Resource Definitions 에 나열된 ActiveMQAretmisAddress CRD입니다.
  • 그런 다음 특정 주소와 일치하는 주소 및 큐 설정을 구성하려면 브로커 배포를 생성하는 데 사용되는 기본 CR(사용자 정의 리소스) 인스턴스에 구성을 포함합니다.

    • OpenShift CLI를 사용하여 Operator를 설치하는 경우 주요 브로커 CRD는 다운로드 및 추출한 Operator 설치 아카이브의 deploy/crds 에 포함된 broker_activemqartemis_crd.yaml 파일입니다.
    • OperatorHub를 사용하여 Operator를 설치하는 경우 기본 브로커 CRD는 OpenShift Container Platform 웹 콘솔의 AdministrationCustom Resource Definitions 에 나열된 ActiveMQAretmis CRD입니다.

    일반적으로 OpenShift Container Platform의 브로커 배포에 대해 구성할 수 있는 주소 및 큐 설정은 Linux 또는 Windows의 독립 실행형 브로커 배포 와 완전히 동일합니다. 그러나 이러한 설정이 구성된 방법 의 몇 가지 차이점이 있습니다. 이러한 차이점은 다음 섹션에서 설명합니다.

4.2.1. OpenShift와 독립 실행형 브로커 배포 간의 주소 및 대기열 설정 구성의 차이점

  • OpenShift Container Platform에서 브로커 배포에 대한 주소 및 큐 설정을 구성하려면 브로커 배포의 기본 CR(사용자 정의 리소스) 인스턴스의 address >-< 섹션에 구성을 추가합니다. 이는 Linux 또는 Windows의 독립 실행형 배포와 대조되며, broker.xml 구성 파일의 address-settings 요소에 구성을 추가합니다.
  • 구성 항목 이름에 사용되는 형식은 OpenShift Container Platform 및 독립 실행형 브로커 배포마다 다릅니다. OpenShift Container Platform 배포의 경우 구성 항목 이름은 camel 케이스에 있습니다(예: defaultQueueRoutingType ). 대조적으로 독립 실행형 배포의 구성 항목 이름은 소문자이며 대시(-) 구분자(예: default-queue-routing-type )를 사용합니다.

    다음 표에서는 이 이름 차이의 몇 가지 추가 예를 보여줍니다.

    독립 실행형 브로커 배포를 위한 구성 항목OpenShift 브로커 배포를 위한 구성 항목

    address-full-policy

    addressFullPolicy

    auto-create-queues

    autoCreateQueues

    default-queue-routing-type

    defaultQueueRoutingType

    last-value-queue

    lastValueQueue

추가 리소스

4.2.2. Operator 기반 브로커 배포를 위한 주소 및 큐 생성

다음 절차에서는 CR(사용자 정의 리소스) 인스턴스를 사용하여 Operator 기반 브로커 배포에 주소 및 관련 큐를 추가하는 방법을 보여줍니다.

참고

브로커 배포에서 여러 주소 및/또는 큐를 생성하려면 각각의 경우 새 주소 및/또는 큐 이름을 지정하여 별도의 CR 파일을 생성하고 개별적으로 배포해야 합니다. 또한 각 CR 인스턴스의 name 속성은 고유해야 합니다.

사전 요구 사항

절차

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

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

      1. 브로커 배포의 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.

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

      1. 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 콘솔에 로그인합니다.
      2. 주소 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서 AdministrationCustom Resource Definitions 를 클릭합니다.
      3. ActiveMQArtemisAddresss CRD를 클릭합니다.
      4. Instances 탭을 클릭합니다.
      5. Create ActiveMQArtemisAddress 를 클릭합니다.

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

  2. CR의 spec 섹션에서 주소, 큐 및 라우팅 유형을 정의하는 행을 추가합니다. 예를 들면 다음과 같습니다.

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemisAddress
    metadata:
        name: myAddressDeployment0
        namespace: myProject
    spec:
        ...
        addressName: myAddress0
        queueName: myQueue0
        routingType: anycast
        ...

    앞의 구성은 myQueue0 이라는 큐와 anycast 라우팅 유형을 사용하여 myAddress0 이라는 주소를 정의합니다.

    참고

    metadata 섹션에서 namespace 속성을 포함하고 OpenShift Container Platform 웹 콘솔을 사용하여 CR 인스턴스를 생성하는 경우에만 값을 지정해야 합니다. 지정해야 하는 값은 브로커 배포를 위한 OpenShift 프로젝트의 이름입니다.

  3. CR 인스턴스를 배포합니다.

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

      1. CR 파일을 저장합니다.
      2. 브로커 배포를 위해 프로젝트로 전환합니다.

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

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

      1. CR 구성을 마쳤으면 생성을 클릭합니다.
  4. (선택 사항) CR 인스턴스를 사용하여 배포에 이전에 추가된 주소 및 큐를 삭제하려면 다음 명령을 사용합니다.

    $ oc delete -f <path/to/address_custom_resource_instance>.yaml

4.2.3. Operator 기반 브로커 배포에서 구성된 주소와 일치하는 주소 설정

클라이언트에 메시지 전달이 실패하면 브로커가 메시지를 지속적으로 전달하려고 시도하지 않을 수 있습니다. 무한한 전달 시도를 방지하기 위해, dead letter 주소와 연관된 dead letter queue 를 정의할 수 있습니다. 지정된 수의 전송 시도 후 브로커는 원래 큐에서 전달되지 않은 메시지를 제거하고 구성된 dead letter 주소로 메시지를 보냅니다. 나중에 시스템 관리자는 배달 못 한 편지 대기열에서 전달되지 않은 메시지를 사용하여 메시지를 검사할 수 있습니다.

다음 예제에서는 Operator 기반 브로커 배포에 대해 배달 못 한 주소 및 대기열을 구성하는 방법을 보여줍니다. 예제에서는 다음을 수행하는 방법을 보여줍니다.

  • 기본 브로커 CR(사용자 정의 리소스) 인스턴스의 addressSetting 섹션을 사용하여 주소 설정을 구성합니다.
  • 브로커 배포의 주소에 해당 주소 설정과 일치합니다.

사전 요구 사항

절차

  1. 배포의 각 브로커에 대해 전달되지 않은 메시지를 수신하도록 배달 못 한 주소 및 큐를 추가하도록 CR 인스턴스 구성을 시작합니다.

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

      1. 브로커 배포의 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.

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

      1. 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 콘솔에 로그인합니다.
      2. 주소 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서 AdministrationCustom Resource Definitions 를 클릭합니다.
      3. ActiveMQArtemisAddresss CRD를 클릭합니다.
      4. Instances 탭을 클릭합니다.
      5. Create ActiveMQArtemisAddress 를 클릭합니다.

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

  2. CR의 spec 섹션에서 dead letter address 및 큐를 지정하여 전달되지 않은 메시지를 수신할 행을 추가합니다. 예를 들면 다음과 같습니다.

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemisAddress
    metadata:
      name: ex-aaoaddress
    spec:
      ...
      addressName: myDeadLetterAddress
      queueName: myDeadLetterQueue
      routingType: anycast
      ...

    앞의 구성은 myDeadLetterQueue 라는 dead letter 큐와 anycast 라우팅 유형을 사용하여 myDeadLetterAddress 라는 dead letter 주소를 정의합니다.

    참고

    metadata 섹션에서 namespace 속성을 포함하고 OpenShift Container Platform 웹 콘솔을 사용하여 CR 인스턴스를 생성하는 경우에만 값을 지정해야 합니다. 지정해야 하는 값은 브로커 배포를 위한 OpenShift 프로젝트의 이름입니다.

  3. 주소 CR 인스턴스를 배포합니다.

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

      1. CR 파일을 저장합니다.
      2. 브로커 배포를 위해 프로젝트로 전환합니다.

        $ oc project <project_name>
      3. 주소 CR을 생성합니다.

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

      1. CR 구성을 마쳤으면 생성을 클릭합니다.
  4. 브로커 배포용 CR(사용자 정의 리소스) 인스턴스 구성을 시작합니다.

    1. 샘플 CR 파일에서 다음을 수행합니다.

      1. 다운로드 및 추출한 Operator 설치 아카이브의 deploy/crs 디렉터리에 포함된 broker_activemqartemis_cr.yaml 이라는 샘플 CR 파일을 엽니다.
    2. OpenShift Container Platform 웹 콘솔 사용:

      1. 기본 브로커 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서 AdministrationCustom Resource Definitions 를 클릭합니다.
      2. ActiveMQArtemis CRD를 클릭합니다.
      3. Instances 탭을 클릭합니다.
      4. 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에서 컨테이너 이미지를 선택하는 방법” 를 참조하십시오.

    참고

    metadata 섹션에서 namespace 속성을 포함하고 OpenShift Container Platform 웹 콘솔을 사용하여 CR 인스턴스를 생성하는 경우에만 값을 지정해야 합니다. 지정해야 하는 값은 브로커 배포를 위한 OpenShift 프로젝트의 이름입니다.

  5. CR의 deploymentPlan 섹션에서 다음과 같이 단일 addressSetting 섹션이 포함된 새 주소 10.0.0.1 섹션을 추가합니다.

    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true
      addressSettings:
        addressSetting:
  6. match 속성의 단일 인스턴스를 addressSetting 블록에 추가합니다. address-matching 표현식을 지정합니다. 예를 들면 다음과 같습니다.

    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true
      addressSettings:
        addressSetting:
        -  match: myAddress
    match
    브로커가 다음 구성을 적용하는 주소 또는 주소 집합을 지정합니다. 이 예에서 match 속성 값은 myAddress 라는 단일 주소에 해당합니다.
  7. 전달되지 않은 메시지와 관련된 속성을 추가하고 값을 지정합니다. 예를 들면 다음과 같습니다.

    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true
      addressSettings:
        addressSetting:
        - match: myAddress
          deadLetterAddress: myDeadLetterAddress
          maxDeliveryAttempts: 5
    deadLetterAddress
    브로커가 전달되지 않은 메시지를 전송하는 주소입니다.
    maxDeliveryAttempts

    구성된 배달 주소로 메시지를 이동하기 전에 브로커가 수행하는 최대 전달 시도 횟수입니다.

    위 예에서 브로커가 5번의 실패한 시도를 하는 경우 myAddress 로 시작하는 주소로 메시지를 전달하려고 하면 브로커는 메시지를 지정된 dead letter 주소 myDeadLetterAddress 로 이동합니다.

  8. (선택 사항) 다른 주소 또는 주소에 유사한 구성을 적용합니다. 예를 들면 다음과 같습니다.

    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true
      addressSettings:
        addressSetting:
        - match: myAddress
          deadLetterAddress: myDeadLetterAddress
          maxDeliveryAttempts: 5
        - match: 'myOtherAddresses*'
          deadLetterAddress: myDeadLetterAddress
          maxDeliveryAttempts: 3

    이 예제에서 두 번째 match 속성 값에는 별표 와일드카드 문자가 포함됩니다. 와일드카드 문자는 이전 구성이 myECDHEAddresses 문자열로 시작하는 모든 주소에 적용됨을 나타냅니다.

    참고

    와일드카드 표현식을 match 속성의 값으로 사용하는 경우 해당 값을 작은 따옴표로 묶어야 합니다(예: 'myECDHEAddresses*' ).

  9. address>-&lt; 섹션의 시작 부분에 applyRule 속성을 추가하고 값을 지정합니다. 예를 들면 다음과 같습니다.

    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true
      addressSettings:
        applyRule: merge_all
        addressSetting:
        - match: myAddress
          deadLetterAddress: myDeadLetterAddress
          maxDeliveryAttempts: 5
        - match: 'myOtherAddresses*'
          deadLetterAddress: myDeadLetterAddress
          maxDeliveryAttempts: 3

    applyRule 속성은 Operator가 일치하는 각 주소 또는 주소 집합에 대해 CR에 추가하는 구성을 적용하는 방법을 지정합니다. 지정할 수 있는 값은 다음과 같습니다.

    merge_all
    • CR 기본 구성에 지정된 주소 설정의 경우 동일한 주소 또는 주소 집합과 일치하는 기본 구성의 경우 다음을 수행합니다.

      • 기본 구성에 지정된 속성 값을 CR에 지정된 속성 값으로 바꿉니다.
      • CR 또는 기본 구성에 고유하게 지정된 속성 값을 유지합니다. 병합된 최종 구성에 각 항목을 포함합니다.
    • 특정 주소 또는 주소 집합과 고유하게 일치하는 CR 또는 기본 구성에 지정된 주소 설정의 경우 최종 병합 구성에 포함합니다.
    merge_replace
    • CR 및 동일한 주소 또는 주소 집합과 일치하는 기본 구성에 둘 다 지정된 주소 설정의 경우 최종 병합 구성에 CR 에 지정된 설정을 포함합니다. CR에 지정되지 않은 경우에도 기본 구성에 지정된 속성을 포함하지 마십시오.
    • 특정 주소 또는 주소 집합과 고유하게 일치하는 CR 또는 기본 구성에 지정된 주소 설정의 경우 최종 병합 구성에 포함합니다.
    replace_all
    기본 구성에 지정된 모든 주소 설정을 CR에 지정된 주소로 바꿉니다. 병합된 최종 구성은 CR에 지정된 구성과 정확히 일치합니다.
    참고

    CR에 applyRule 속성을 명시적으로 포함하지 않으면 Operator에서 기본값 merge_all 을 사용합니다.

  10. 브로커 CR 인스턴스를 배포합니다.

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

      1. CR 파일을 저장합니다.
      2. CR 인스턴스를 생성합니다.

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

      1. CR 구성을 마쳤으면 생성을 클릭합니다.

추가 리소스

  • OpenShift Container Platform 브로커 배포의 주소, 큐 및 주소 설정에 대한 모든 구성 옵션에 대한 자세한 내용은 8.1절. “사용자 정의 리소스 구성 참조” 을 참조하십시오.
  • OpenShift CLI(명령줄 인터페이스)를 사용하여 AMQ Broker Operator를 설치한 경우 다운로드 및 추출한 설치 아카이브에는 주소 설정 구성의 몇 가지 추가 예가 포함되어 있습니다. 설치 아카이브의 deploy/examples 폴더에 있는 다음을 참조하십시오.

    • artemis-basic-address-settings-deployment.yaml
    • artemis-merge-replace-address-settings-deployment.yaml
    • artemis-replace-address-settings-deployment.yaml
  • 독립 실행형 브로커 배포의 주소, 큐 및 관련 주소 설정 구성에 대한 포괄적인 내용은 AMQ Broker 구성의 주소 및 대기열 구성을 참조하십시오. 이 정보를 사용하여 OpenShift Container Platform에서 브로커 배포에 대해 동등한 구성을 생성할 수 있습니다.
  • OpenShift Container Platform의 Init Container에 대한 자세한 내용은 OpenShift Container Platform 설명서에 Pod를 배포하기 전에 Init Container를 사용하여 작업을 수행합니다.