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