4.23. 고가용성을 위해 leader-follower 브로커 배포 구성
leader-follower 구성에는 별도의 배포에 단일 브로커가 있습니다. 각 배포의 브로커는 동일한 JDBC 데이터베이스를 사용하여 메시지를 저장하도록 구성해야 합니다. 데이터베이스 전용 액세스 권한을 부여하는 JDBC 잠금을 얻기 위해 경쟁하는 브로커에 의해 고가용성을 달성합니다. JDBC 잠금을 얻는 브로커는 클라이언트 요청을 제공하는 리더 브로커가 됩니다. JDBC 잠금을 취득하지 못하는 브로커는 후속 조치가 됩니다. 팔로워는 지속적으로 JDBC 잠금을 획득하려고 시도하며, 성공하면 즉시 클라이언트를 제공하는 리더가 됩니다.
leader-follower 배포는 하나 이상의 브로커를 사용하는 단일 배포를 위해 Openshift에서 제공하는 노드 장애로부터 복구(MTTR)할 때 보다 신속하게 복구(MTTR)할 수 있습니다. 리더-추어 배포에서 브로커는 클러스터 장애로부터 보호하기 위해 별도의 클러스터에 있을 수 있습니다. 이러한 클러스터는 다른 데이터 센터에 있을 수 있으므로 데이터 센터 중단에 브로커 서비스를 탄력적으로 만들 수도 있습니다.
사전 요구 사항
AMQ Broker에서 사용하려는 JDBC 데이터베이스의 JAR 파일이 포함된 컨테이너 이미지가 있습니다. 컨테이너 이미지 생성에 대한 자세한 내용은 Openshift 설명서에서 이미지 생성 을 참조하십시오. 각 브로커의 구성에서 init 컨테이너를 지정하여 컨테이너 이미지에서 런타임 시 브로커에 사용할 수 있는 위치로 JAR 파일을 복사할 수 있습니다.
별도의 브로커 배포를 생성하도록 두 개의
ActiveMQArtemis사용자 지정 리소스 인스턴스를 구성합니다.각 사용자 정의 리소스에서 고유한 이름을 지정하고
클러스터형및persistenceEnabled속성이false로 설정되어 있는지 확인합니다.size속성을1로 설정하여 각 배포에서 단일 브로커를 생성합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고동일한 Openshift 클러스터에서 두 브로커 배포를 모두 구성하는 경우 브로커 Pod가 클러스터의 개별 노드에 프로비저닝되므로 두 브로커는 노드 장애의 영향을 받지 않습니다. 노드에서 Pod 배치를 제어하는 방법에 대한 자세한 내용은 4.17절. “OpenShift Container Platform 노드에서 브로커 Pod 배치 제어” 을 참조하십시오.
각 브로커 구성에 활성 프로브를 추가합니다.
활성 상태 프로브를 구성하지 않으면 브로커의 상태를 확인하기 위해 기본 프로브가 활성화됩니다. 기본 프로브는 AMQ 관리 콘솔에 연결할 수 있는지 확인합니다. leader-follower 구성에서 특정 시간에 후속 조치인 브로커의 AMQ 관리 콘솔에 연결할 수 없으므로 해당 브로커에서 활성 프로브가 실패합니다. 활성 프로브가 실패할 때마다 브로커를 재시작하여 브로커를 영구 재시작 루프에 배치합니다. 결과적으로 후속 브로커는
CrashLoopBackOff상태로 전환되고 현재 리더가 실패하면 리더가 될 수 없습니다.기본 활성 프로브가 실행되지 않도록 하려면 브로커가 리더 또는 후속자일 때 성공적으로 실행할 수 있는 활성 상태 프로브를 구성해야 합니다. 다음 예에서 활성 프로브는 브로커를 실행하는 명령이 실행되었는지 확인합니다. 이 명령은
cli.lock파일의 존재로 표시됩니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 활성 프로브 구성에 대한 자세한 내용은 4.15.2절. “활성 상태 프로브 및 준비 상태 프로브 구성” 을 참조하십시오.
각 브로커 구성에서
brokerProperties속성을 사용하여 JDBC 데이터베이스 지속성을 활성화합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow JDBC 데이터베이스 지속성 활성화에 대한 자세한 내용은 4.5.2절. “데이터베이스 지속성 구성” 을 참조하십시오.
각 브로커 구성에서 JDBC 데이터베이스에 연결하는 데 필요한 JAR 파일을 로드하도록 브로커를 구성합니다.
-
resourceTemplates특성을 사용하여 각 브로커에 대한StatefulSet리소스를 사용자 지정합니다. 사용자 지정에서patch속성을 사용하여 준비한 사용자 지정 컨테이너 이미지에서 JAR 파일을 브로커 Pod에 복사하는 init 컨테이너를 지정합니다. env속성을 사용하여ARTEMIS_EXTRA_LIBS환경 변수를 생성하여 JDBC 데이터베이스의 JAR 파일이 복사되는 디렉터리를 포함하도록 브로커의 Java 클래스 경로를 확장합니다. Java classpath를 확장하면 브로커는 런타임 시 Pod의 지정된 디렉터리에서 JAR 파일을 로드할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator에서 생성한 Openshift 리소스를 사용자 정의하는 방법에 대한 자세한 내용은 4.21절. “Operator에서 생성한 Openshift 리소스 사용자 정의” 을 참조하십시오.
-
각 사용자 정의 리소스를 저장합니다.
- 예
다음 예제에서는 Oracle 데이터베이스를 사용하는 leader-follower 브로커 배포를 위한 전체 구성을 보여줍니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow