4.24. 재해 복구를 위한 데이터 미러링 구성


미러링은 재해 복구를 위해 브로커에서 하나 이상의 다른 브로커로 데이터를 복사하는 프로세스입니다. 미러의 소스 및 대상 브로커는 데이터 센터 중단을 방지하기 위해 다른 데이터 센터의 별도의 OpenShift 클러스터에 있을 수 있습니다. 미러링은 데이터 백업에 사용하거나 유지 관리 기간 중에 사용할 장애 조치 브로커를 생성할 수도 있습니다.

참고

미러가 생성되기 전에 존재하는 메시지는 미러링되지 않습니다.

프로세스

  1. 두 개의 ActiveMQArtemis CR(사용자 정의 리소스) 인스턴스를 구성하여 소스 브로커와 미러링된 데이터에 대한 대상 브로커를 생성합니다. 각각에 대해 고유한 이름을 지정합니다. 예를 들면 다음과 같습니다.

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: production-broker
      namespace: production
    spec:
      deploymentPlan:
        size: 1
    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: mirror-broker
      namespace: dr
    spec:
      deploymentPlan:
        size: 1
  2. 대상 브로커의 CR에 미러 연결에 대한 어셉터를 추가합니다. 예를 들면 다음과 같습니다.

    metadata:
      name: mirror-broker
      namespace: dr
    spec:
      ...
      acceptors:
      - expose: true
        name: amqp
        port: 5672
        protocols: amqp
      ...

    어셉터를 생성하면 다음 형식으로 수락자에 대한 경로가 노출됩니다.

    <브로커 이름>-<수락자 이름>-<ordinal>-svc-rte.<namespace>.<hostname>

    이 절차의 뒷부분에서 소스 브로커에 미러 구성을 추가하면 이 경로를 사용하여 대상 브로커에 대한 연결을 생성합니다.

    <ordinal>은 StatefulSet에 의해 브로커 Pod에 할당된 서수입니다. 클러스터의 첫 번째 브로커 포드에 0이 할당됩니다. 두 번째 포드에는 1의 오디널이 할당됩니다. Pod의 ordinal 값은 STATEFUL_SET_ORDINAL 변수에 저장됩니다. 소스 브로커의 미러 연결 세부 정보에서 서수 값 대신 이 변수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

    <브로커 이름>-<수락자 이름>-$STATEFUL_SET_ORDINAL}-svc-rte.<namespace>.<hostname>

    STATEFUL_SET_ORDINAL 변수를 사용하면 소스 및 대상 클러스터의 브로커 수를 확장하면 소스가 동일한 오디네탈 대상에 대한 미러 연결을 생성해야 합니다.

  3. 미러 연결을 통해 데이터를 안전하게 보내려면 연결에 대한 TLS(Transport Layer Security)를 구성합니다. 요구 사항에 따라 다양한 방법을 사용하여 SSL/TLS 인증서를 생성할 수 있습니다. 예를 들어 신뢰할 수 있는 CA(인증 기관), cert-manager Operator for OpenShift 또는 SSL(Secure Sockets Layer) 툴을 사용할 수 있습니다.

    다음 예제에서는 SSL/TLS 툴을 사용하여 자체 서명된 인증서를 수동으로 생성하여 브로커 간에 상호 TLS 인증(mTLS)을 구성하는 단계를 요약합니다.

    1. 대상 브로커의 자체 서명된 SSL/TLS 인증서를 생성합니다. 예를 들면 다음과 같습니다.

      keytool -genkey -trustcacerts -alias 브로커 -keyalg RSA -keystore broker.ks -keypass 암호 -storepass 암호

    2. 생성한 SSL/TLS 인증서의 공개 키를 파일로 내보내 소스 브로커에서 사용할 키를 신뢰 저장소 파일로 가져올 수 있습니다. 예를 들면 다음과 같습니다.

      keytool -export -noprompt -alias broker -keystore broker.ks -file for_source_truststore -storepass 암호

    3. 소스 브로커에서 사용할 신뢰 저장소 파일로 내보낸 SSL/TLS 인증서의 공개 키를 가져옵니다. 예를 들면 다음과 같습니다.

      keytool -import -noprompt -trustcacerts -alias broker -keystore client.ts -file for_source_truststore -storepass 암호

    4. 소스 브로커의 자체 서명된 SSL/TLS 인증서를 생성합니다. 예를 들면 다음과 같습니다.

      keytool -genkey -trustcacerts -alias 브로커 -keyalg RSA -keystore broker.ks -keypass 암호 -storepass 암호

    5. 생성한 SSL/TLS 인증서의 공개 키를 내보내 대상 브로커에서 사용할 키를 신뢰 저장소 파일로 가져올 수 있습니다.

      keytool -export -noprompt -alias broker -keystore broker.ks -file for_target_truststore -storepass 암호

    6. 대상 브로커에서 사용할 신뢰 저장소 파일로 내보낸 SSL/TLS 인증서의 공개 키를 가져옵니다. 예를 들면 다음과 같습니다.

      keytool -import -noprompt -trustcacerts -alias broker -keystore client.ts -file for_target_truststore -storepass 암호

    7. 소스 브로커용으로 생성한 키 저장소 및 신뢰 저장소 파일을 소스 브로커의 네임스페이스에 있는 시크릿에 추가합니다. 예를 들면 다음과 같습니다.

      oc create secret generic mirror --from-file=broker.ks=broker.ks --from-file=client.ts --from-literal=keyStorePassword=password --from-literal=trustStorePassword=password

      이 단계를 반복하여 대상 브로커에 대해 생성한 키 저장소 및 신뢰 저장소 파일을 대상 브로커의 네임스페이스의 시크릿에 추가합니다.

    8. 대상 브로커에 대해 구성된 수락자에서 sslEnabled 속성을 true 로 설정하고 대상 브로커의 네임스페이스에서 생성한 시크릿 이름을 지정합니다. 예를 들면 다음과 같습니다.

      metadata:
        name: mirror-broker
        namespace: dr
      spec:
        ...
        acceptors:
        - expose: true
          name: amqp
          port: 5672
          protocols: amqp
          sslEnabled: true
          sslSecret: mirror
        ...
    9. 소스 브로커의 CR에서 소스 브로커의 네임스페이스에서 생성한 보안에 대한 참조를 extraMounts 속성에 추가합니다. Operator가 각 브로커 Pod의 시크릿에 키 저장소 및 신뢰 저장소 파일을 마운트하려면 이 단계가 필요합니다. 예를 들면 다음과 같습니다.

      spec:
        ...
        deploymentPlan:
          extraMounts:
            secrets:
            - mirror
        ...

      시크릿의 키 저장소 및 신뢰 저장소 파일은 브로커 Pod의 /amq/extra/secrets/<시크릿 이름 > 디렉터리에 마운트됩니다.

  4. 소스 브로커의 CR에서 brokerProperties 속성 아래에 있는 미러 연결 세부 정보를 구성합니다. 연결 URI의 경우 대상 브로커에서 생성한 어셉터에 대해 노출된 경로를 지정합니다. SSL/TLS를 사용하여 미러 연결을 보호하려면 URI에 다음을 포함합니다.

    • 포트 번호 443
    • SSL/TLS를 활성화하는 sslEnabled=true
    • 키 저장소 및 신뢰 저장소 파일의 경로와 인증 정보

    예를 들면 다음과 같습니다.

    spec:
      ...
      brokerProperties:
      - AMQPConnections.datacenter1.uri=tcp://broker-dr-amqp-${STATEFUL_SET_ORDINAL}-svc-rte-dr.apps.lab.redhat.com:443?;sslEnabled=true;trustStorePath=/amq/extra/secrets/mirror/client.ts;trustStorePassword=password;keyStorePath=/amq/extra/secrets/mirror/broker.ks;keyStorePassword=password
      - AMQPConnections.datacenter1.connectionElements.mirror.type=MIRROR
      ...
    참고

    필요한 경우 소스 브로커에 대한 여러 미러 대상을 구성할 수 있습니다. 예를 들면 다음과 같습니다.

    spec:
      ...
      brokerProperties:
      - AMQPConnections.datacenter1.uri=tcp://primary-mirror-broker-amqp-${STATEFUL_SET_ORDINAL}-svc.dr.svc.cluster.local:61616
      - AMQPConnections.datacenter1.connectionElements.mirror.type=MIRROR
      - AMQPConnections.datacenter2.uri=tcp://backup-mirror-broker-amqp-${STATEFUL_SET_ORDINAL}-svc.dr.svc.cluster.local:61616
      - AMQPConnections.datacenter2.connectionElements.mirror.type=MIRROR
      ...
  5. 소스 브로커의 CR에서 필요에 따라 추가 미러 구성 속성을 구성합니다. 예를 들면 다음과 같습니다.

    - AMQPConnections.datacenter1.user=admin
    - AMQPConnections.datacenter1.password=admin
    - AMQPConnections.datacenter1.retryInterval=5000
    - AMQPConnections.datacenter1.connectionElements.mirror.messageAcknowledgements=true
    - AMQPConnections.datacenter1.connectionElements.mirror.queueCreation=true
    - AMQPConnections.datacenter1.connectionElements.mirror.queueRemoval=true
    - AMQPConnections.datacenter1.connectionElements.mirror.addressFilter=addresses
    참고

    영숫자 문자열을 사용하여 AMQP 연결의 이름을 지정할 수 있습니다. 이전 예에서 AMQP 연결 이름은 datacenter1 입니다.

    AMQPConnections.<name>.user
    필요한 이벤트를 미러링할 수 있는 권한이 있는 대상 브로커의 사용자 이름입니다.
    AMQPConnections.<이름>.password
    대상 브로커에 있는 사용자의 암호입니다.
    AMQPConnections.<name>.retryInterval
    대상 브로커에 연결을 시도하는 사이의 간격(밀리초)입니다.
    AMQPConnections.<name>.connectionElements.mirror.messageAcknowledgements
    메시지 승인이 미러링되는지 여부를 지정합니다. 기본값은 true입니다.
    AMQPConnections.<name>.connectionElements.mirror.queueCreation
    큐 또는 주소 생성 이벤트가 미러링되는지 여부를 지정합니다. 기본값은 true입니다.
    AMQPConnections.<name>.connectionElements.mirror.queueRemoval
    큐 또는 주소 제거 이벤트가 미러링되는지 여부를 지정합니다. 기본값은 true입니다.
    AMQPConnections.<name>.connectionElements.mirror.addressFilter

    소스 브로커가 이벤트가 미러링되는 주소를 포함하거나 제외하는 데 사용할 수 있는 필터입니다. 예를 들어 임시 큐가 미러링되지 않도록 제외하려고 할 수 있습니다.

    필터를 쉼표로 구분된 주소 목록으로 지정합니다. 제외할 주소 목록을 지정하려면 각 주소 앞에 느낌표(!)를 추가합니다. 다음 예에서 us.europe. 로 시작하는 주소에 대한 이벤트는 미러링되지 않습니다.

    AMQPConnections.<name>.connectionElements.mirror.addressFilter=!us.,!europe.

    참고

    포함할 주소를 하나 이상 지정하면 다른 모든 주소에 대한 이벤트가 미러링되지 않습니다. 제외할 주소를 하나 이상 지정하면 다른 모든 주소에 대한 이벤트가 미러링됩니다.

  6. 소스 브로커에 대한 CR의 status 섹션에서 BrokerPropertiesApplied 조건의 상태가 true 인지 확인하여 CR에 지정한 모든 속성이 적용되었는지 확인합니다. 자세한 내용은 3.7절. “브로커 배포에 대한 상태 정보 보기”의 내용을 참조하십시오.
  7. 다음과 유사한 행이 소스 브로커 Pod의 로그를 확인하여 미러 연결이 설정되었는지 확인합니다.

    broker-prod-ss-0 broker-prod-container Connected 서버 AMQP 연결 dr의 broker-dr-amqp-0-svc-rte-dr.lab.redhat.com:443 후 0 재시도 후

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동