4.23. 고가용성을 위해 leader-follower 브로커 배포 구성


leader-follower 구성에는 별도의 배포에 단일 브로커가 있습니다. 각 배포의 브로커는 동일한 JDBC 데이터베이스를 사용하여 메시지를 저장하도록 구성해야 합니다. 데이터베이스 전용 액세스 권한을 부여하는 JDBC 잠금을 얻기 위해 경쟁하는 브로커에 의해 고가용성을 달성합니다. JDBC 잠금을 얻는 브로커는 클라이언트 요청을 제공하는 리더 브로커가 됩니다. JDBC 잠금을 취득하지 못하는 브로커는 후속 조치가 됩니다. 팔로워는 지속적으로 JDBC 잠금을 획득하려고 시도하며, 성공하면 즉시 클라이언트를 제공하는 리더가 됩니다.

leader-follower 배포는 하나 이상의 브로커를 사용하는 단일 배포를 위해 Openshift에서 제공하는 노드 장애로부터 복구(MTTR)할 때 보다 신속하게 복구(MTTR)할 수 있습니다. 리더-추어 배포에서 브로커는 클러스터 장애로부터 보호하기 위해 별도의 클러스터에 있을 수 있습니다. 이러한 클러스터는 다른 데이터 센터에 있을 수 있으므로 데이터 센터 중단에 브로커 서비스를 탄력적으로 만들 수도 있습니다.

사전 요구 사항

AMQ Broker에서 사용하려는 JDBC 데이터베이스의 JAR 파일이 포함된 컨테이너 이미지가 있습니다. 컨테이너 이미지 생성에 대한 자세한 내용은 Openshift 설명서에서 이미지 생성 을 참조하십시오. 각 브로커의 구성에서 init 컨테이너를 지정하여 컨테이너 이미지에서 런타임 시 브로커에 사용할 수 있는 위치로 JAR 파일을 복사할 수 있습니다.

  1. 별도의 브로커 배포를 생성하도록 두 개의 ActiveMQArtemis 사용자 지정 리소스 인스턴스를 구성합니다.

    각 사용자 정의 리소스에서 고유한 이름을 지정하고 클러스터형persistenceEnabled 속성이 false 로 설정되어 있는지 확인합니다. size 속성을 1 로 설정하여 각 배포에서 단일 브로커를 생성합니다. 예를 들면 다음과 같습니다.

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: peer-broker-a
    spec:
      deploymentPlan:
        size: 1
        clustered: false
        persistenceEnabled: false
    Copy to Clipboard Toggle word wrap
    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: peer-broker-b
    spec:
      deploymentPlan:
        size: 1
        clustered: false
        persistenceEnabled: false
    Copy to Clipboard Toggle word wrap
    참고

    동일한 Openshift 클러스터에서 두 브로커 배포를 모두 구성하는 경우 브로커 Pod가 클러스터의 개별 노드에 프로비저닝되므로 두 브로커는 노드 장애의 영향을 받지 않습니다. 노드에서 Pod 배치를 제어하는 방법에 대한 자세한 내용은 4.17절. “OpenShift Container Platform 노드에서 브로커 Pod 배치 제어” 을 참조하십시오.

  2. 각 브로커 구성에 활성 프로브를 추가합니다.

    활성 상태 프로브를 구성하지 않으면 브로커의 상태를 확인하기 위해 기본 프로브가 활성화됩니다. 기본 프로브는 AMQ 관리 콘솔에 연결할 수 있는지 확인합니다. leader-follower 구성에서 특정 시간에 후속 조치인 브로커의 AMQ 관리 콘솔에 연결할 수 없으므로 해당 브로커에서 활성 프로브가 실패합니다. 활성 프로브가 실패할 때마다 브로커를 재시작하여 브로커를 영구 재시작 루프에 배치합니다. 결과적으로 후속 브로커는 CrashLoopBackOff 상태로 전환되고 현재 리더가 실패하면 리더가 될 수 없습니다.

    기본 활성 프로브가 실행되지 않도록 하려면 브로커가 리더 또는 후속자일 때 성공적으로 실행할 수 있는 활성 상태 프로브를 구성해야 합니다. 다음 예에서 활성 프로브는 브로커를 실행하는 명령이 실행되었는지 확인합니다. 이 명령은 cli.lock 파일의 존재로 표시됩니다.

    spec:
      ..
      livenessProbe:
        exec:
          command:
          - test
          - -f
          - /home/jboss/amq-broker/lock/cli.lock
      ..
    Copy to Clipboard Toggle word wrap

    활성 프로브 구성에 대한 자세한 내용은 4.15.2절. “활성 상태 프로브 및 준비 상태 프로브 구성” 을 참조하십시오.

  3. 각 브로커 구성에서 brokerProperties 속성을 사용하여 JDBC 데이터베이스 지속성을 활성화합니다. 예를 들면 다음과 같습니다.

    spec:
      ..
      brokerProperties:
      - storeConfiguration=DATABASE
      - storeConfiguration.jdbcDriverClassName=<class name>
      - storeConfiguration.jdbcConnectionUrl=jdbc:<Database URL>
      - HAPolicyConfiguration=SHARED_STORE_PRIMARY
      - storeConfiguration.jdbcLockRenewPeriodMillis=2000
      - storeConfiguration.jdbcLockExpirationMillis=6000
    Copy to Clipboard Toggle word wrap

    JDBC 데이터베이스 지속성 활성화에 대한 자세한 내용은 4.5.2절. “데이터베이스 지속성 구성” 을 참조하십시오.

  4. 각 브로커 구성에서 JDBC 데이터베이스에 연결하는 데 필요한 JAR 파일을 로드하도록 브로커를 구성합니다.

    • resourceTemplates 특성을 사용하여 각 브로커에 대한 StatefulSet 리소스를 사용자 지정합니다. 사용자 지정에서 patch 속성을 사용하여 준비한 사용자 지정 컨테이너 이미지에서 JAR 파일을 브로커 Pod에 복사하는 init 컨테이너를 지정합니다.
    • env 속성을 사용하여 ARTEMIS_EXTRA_LIBS 환경 변수를 생성하여 JDBC 데이터베이스의 JAR 파일이 복사되는 디렉터리를 포함하도록 브로커의 Java 클래스 경로를 확장합니다. Java classpath를 확장하면 브로커는 런타임 시 Pod의 지정된 디렉터리에서 JAR 파일을 로드할 수 있습니다.

      spec:
        ..
        env:
        - name: ARTEMIS_EXTRA_LIBS
          value: '/amq/init/config/extra-libs'
        resourceTemplates:
        - selector:
            kind: StatefulSet
          patch:
            kind: StatefulSet
            spec:
              template:
                spec:
                  initContainers:
                  - name: jdbc-driver-init
                    image: <custom container image with JAR>
                    volumeMounts:
                    - name: amq-cfg-dir
                      mountPath: /amq/init/config
                    command:
                    - "bash"
                    - "-c"
                    - "mkdir -p /amq/init/config/extra-libs && cp <__JAR file_> /amq/init/config/extra-libs"
      Copy to Clipboard Toggle word wrap

      Operator에서 생성한 Openshift 리소스를 사용자 정의하는 방법에 대한 자세한 내용은 4.21절. “Operator에서 생성한 Openshift 리소스 사용자 정의” 을 참조하십시오.

  5. 각 사용자 정의 리소스를 저장합니다.

    다음 예제에서는 Oracle 데이터베이스를 사용하는 leader-follower 브로커 배포를 위한 전체 구성을 보여줍니다.

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: peer-broker-a
    spec:
      deploymentPlan:
        size: 1
        clustered: false
        persistenceEnabled: false
        livenessProbe:
          exec:
            command:
            - test
            - -f
            - /home/jboss/amq-broker/lock/cli.lock
      env:
        - name: ARTEMIS_EXTRA_LIBS
          value: '/amq/init/config/extra-libs'
      brokerProperties:
        - criticalAnalyser=false
        - storeConfiguration=DATABASE
        - storeConfiguration.jdbcDriverClassName=oracle.jdbc.OracleDriver
        - storeConfiguration.jdbcConnectionUrl=jdbc:<Database URL>
        - storeConfiguration.jdbcLockRenewPeriodMillis=2000
        - storeConfiguration.jdbcLockExpirationMillis=6000
        - HAPolicyConfiguration=SHARED_STORE_PRIMARY
      acceptors:
      - name: ext-acceptor
        protocols: CORE
        port: 61626
        expose: true
        sslEnabled: true
        sslSecret: ext-acceptor-ssl-secret
      console:
        expose: true
      resourceTemplates:
      - selector:
          kind: StatefulSet
        patch:
          kind: StatefulSet
          spec:
            template:
              spec:
                initContainers:
                - name: oracle-database-jdbc-driver-init
                  image: <custom container image with JAR>
                  volumeMounts:
                  - name: amq-cfg-dir
                    mountPath: /amq/init/config
                  command:
                  - "bash"
                  - "-c"
                  - "mkdir -p /amq/init/config/extra-libs && cp <JAR file> /amq/init/config/extra-libs"
    Copy to Clipboard Toggle word wrap
    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: peer-broker-b
    spec:
      deploymentPlan:
        size: 1
        clustered: false
        persistenceEnabled: false
        livenessProbe:
          exec:
            command:
            - test
            - -f
            - /home/jboss/amq-broker/lock/cli.lock
      env:
        - name: ARTEMIS_EXTRA_LIBS
          value: '/amq/init/config/extra-libs'
      brokerProperties:
        - criticalAnalyser=false
        - storeConfiguration=DATABASE
        - storeConfiguration.jdbcDriverClassName=oracle.jdbc.OracleDriver
        - storeConfiguration.jdbcConnectionUrl=jdbc:<Database URL>
        - storeConfiguration.jdbcLockRenewPeriodMillis=2000
        - storeConfiguration.jdbcLockExpirationMillis=6000
        - HAPolicyConfiguration=SHARED_STORE_PRIMARY
      acceptors:
      - name: ext-acceptor
        protocols: CORE
        port: 61626
        expose: true
        sslEnabled: true
        sslSecret: ext-acceptor-ssl-secret
      console:
        expose: true
      resourceTemplates:
      - selector:
          kind: StatefulSet
        patch:
          kind: StatefulSet
          spec:
            template:
              spec:
                initContainers:
                - name: oracle-database-jdbc-driver-init
                  image: <custom container image with JAR>
                  volumeMounts:
                  - name: amq-cfg-dir
                    mountPath: /amq/init/config
                  command:
                  - "bash"
                  - "-c"
                  - "mkdir -p /amq/init/config/extra-libs && cp <JAR file> /amq/init/config/extra-libs"
    Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동