16.2. 브로커 미러링 구성
브로커 연결을 사용하여 한 쌍의 브로커 간에 메시지를 미러링할 수 있습니다. 브로커는 언제든지 하나만 활성화할 수 있습니다.
사전 요구 사항
- 작업 브로커가 두 개 있습니다.
프로세스
첫 번째 브로커의
broker.xml
파일에broker-connections
요소를 생성합니다. 예를 들면 다음과 같습니다.<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC1"> <mirror/> </amqp-connection> </broker-connections>
<hostname>
- 다른 브로커 인스턴스의 호스트 이름입니다.
<port>
- 다른 호스트의 브로커가 사용하는 포트입니다.
첫 번째 브로커의 모든 메시지는 두 번째 브로커에 미러링되지만 미러가 생성되기 전에 존재하는 메시지는 미러링되지 않습니다.
첫 번째 브로커가 재해 복구에 대해 미러링된 브로커가 최신 상태임을 확인하기 위해 다음 예와 같이 첫 번째 브로커가 메시지를 동기적으로 미러링하려면 브로커의
amqp-connection
요소에sync=true
속성을 설정합니다.동기 미러링을 수행하려면 브로커가 미러링된 브로커로 전송한 메시지를 두 브로커의 볼륨에 동시에 기록해야 합니다. 두 브로커 모두에서 쓰기 작업이 완료되면 소스 브로커는 쓰기 요청이 완료되고 제어가 클라이언트에 반환됨을 확인합니다.
<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror sync="true"/> </amqp-connection> </broker-connections>
참고예를 들어 브로커를 사용할 수 없는 경우와 같이 미러링된 브로커에서 쓰기 요청을 완료할 수 없는 경우 최신 쓰기 요청을 완료하기 위해 미러를 사용할 수 있을 때까지 클라이언트 연결이 차단됩니다.
참고예제의 브로커 연결 이름은
$ACTIVEMQ_ARTEMIS_MIRROR_mirror
라는 큐를 생성하는 데 사용됩니다.큐가 해당 브로커에 표시되지 않더라도 해당 브로커가 해당 메시지를 수락하도록 구성되어 있는지 확인합니다.
두 번째 브로커의
broker.xml
파일에broker-connections
요소를 생성합니다. 예를 들면 다음과 같습니다.<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror/> </amqp-connection> </broker-connections>
두 번째 브로커가 메시지를 동기적으로 미러링하려면 브로커의
amqp-connection
요소에서sync=true
속성을 설정합니다. 예를 들면 다음과 같습니다.<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror sync="true"/> </amqp-connection> </broker-connections>
(선택 사항) 필요에 따라 미러에 대해 다음 매개변수를 구성합니다.
queue-removal
-
큐 또는 주소 제거 이벤트가 전송되는지 여부를 지정합니다. 기본값은
true
입니다. 메시지 확인
-
메시지 승인이 전송되는지 여부를 지정합니다. 기본값은
true
입니다. queue-creation
-
큐 또는 주소 생성 이벤트가 전송되는지 여부를 지정합니다. 기본값은
true
입니다.
예를 들면 다음과 같습니다.
<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror sync="true" queue-removal="false" message-acknowledgments ="false" queue-creation="false"/> </amqp-connection> </broker-connections>
(선택 사항) 브로커 재시도 시도를 대상 미러의 메시지 승인 시도를 사용자 지정합니다.
큐 메모리에 없는 메시지의 대상 미러에서 승인이 수신될 수 있습니다. 브로커에게 대상 미러에서 메시지를 승인할 충분한 시간을 제공하기 위해 환경에 대해 다음 매개변수를 사용자 지정할 수 있습니다.
- mirrorAckManagerQueueAttempts
-
브로커가 메모리에서 메시지를 찾는 시도 횟수입니다. 기본값은
5
입니다. 지정된 횟수의 시도 후 브로커가 메모리에 있는 메시지를 찾지 못하면 브로커는 페이지 파일에서 메시지를 검색합니다. - mirrorAckManagerPageAttempts
-
메모리에서 메시지를 찾을 수 없는 경우 브로커가 페이지 파일에서 메시지를 찾는 시도 횟수입니다. 기본값은
2
입니다. - mirrorAckManagerRetryDelay
- 브로커가 메모리에서 승인할 메시지를 찾은 다음 페이지 파일에서 시도하는 간격(밀리초)입니다.
broker-connections
요소 외부에서 이러한 매개변수 중 하나를 지정합니다. 예를 들면 다음과 같습니다.<mirrorAckManagerQueueAttempts>8</mirrorAckManagerQueueAttempts> <broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror/> </amqp-connection> </broker-connections>
(선택 사항) 메시지가 대상 미러에서 호출되는 경우 브로커가 메시지 파일에 메시지를 작성하여 중복 탐지 정보 쓰기를 조정하려면
mirrorPageTransaction
을true
로 설정합니다.mirrorPageTransaction
속성이 기본값인false
로 설정되고 브로커 간에 통신 오류가 발생하면 드문 경우 대상 미러에 중복 메시지를 쓸 수 있습니다.이 매개변수를
true
로 설정하면 브로커의 메모리 사용량이 증가합니다.- 15.6절. “다중 사이트 내결함성 메시징 시스템에서 클라이언트 구성” 에 설명된 지침을 사용하여 브로커 연결과 함께 이를 통해 공유 스토리지가 없습니다.
Red Hat은 미러 구성에서 두 브로커의 메시지를 사용하는 클라이언트 애플리케이션을 지원하지 않습니다. 클라이언트가 두 브로커 모두에서 메시지를 사용하지 않도록 하려면 브로커 중 하나에서 클라이언트 수락을 비활성화합니다.