2014-05-25 3 views
0

지리적으로 분산 된 3 개의 데이터 센터 A, B, C가 있다고 가정 해 봅시다. 이들 각각에서 Cassandra 클러스터가 실행 중입니다. 이제 DC A가 B와 C를 사용하여 더 이상 가십이 수 없다고 가정합니다. LOCAL_QUORUM으로 A에 기록하면 으로 계속 기록되지만 B와 C에 더 이상 전파되지 않습니다. 그 반대.카산드라 - 여러 데이터 센터 간 연결 모니터링

이러한 상황은 매우 비참한 결과를 가질 수

...를 사용하여 빠른 속도로 다른 데이터 센터에서 DC A는 '고립'이 될 것을 확인하는 방법에 대한 몇 가지 팁 (무엇 내가 찾고

기본 Java 드라이버).

푸시 알림에 대해 읽었지만 로컬 클러스터의 상태 만 참조했음을 기억합니다. 아무도 아이디어가 있니? 감사.

답변

0

A가 B와 C에 더 이상 연결할 수없는 경우 힌트가 네트워크 연결 복원시 저장되고 전달된다는 점에 유의해야합니다. 따라서 오랜 기간 동안 지속되지 않는 정전에 대해서는 이미 안전 메커니즘이 있으므로 아무 것도 할 필요가 없습니다.

더 이상 중단되는 경우 복제본을 동기화하기 위해 이러한 중단 이후 복구 명령을 사용하는 것이 가장 좋습니다.

즉, DC 간 통신이 중단되었을 때를 결정할 방법을 찾고 있다면 몇 가지 옵션이 있습니다.

1) Datastax Opscenter와 같은 도구를 사용하여 클러스터 상태를 모니터링하십시오.이 도구는 이러한 종류의 이벤트가 발생하면 자동으로 검색하여 기록합니다. 또한 트리거 된 이벤트를 설정할 수 있다고 믿지만 Opscenter의 작동 방법에 대한 전문가는 아닙니다.

2) Java 드라이버의 공용 클러스터 레지스터 (Host.StateListener 수신기)를 사용하여 노드 작동 중지 이벤트에서 호출 할 함수를 등록하면 전체 DC가 언제 중단되는지 확인할 수 있습니다.

3) 각 DC의 JMX를 통해 현재 가십의 상태를 추적하면 각 데이터 센터가 모든 컴퓨터의 현재 가용성에 대해 어떻게 생각하는지 볼 수 있습니다. 이 작업은 직접 또는 nodetool 상태를 통해 수행 할 수 있습니다.

+0

감사합니다 Russ. 내 목표는 DC가 격리되어 있다고 생각하면 자동으로 특정 쓰기 허용을 중지하는 것입니다. 번호 2는 흥미로운 것 같습니다. –

0

@RussS은 ... 나는 모든 세 호스트에 도달 할 수없는 경우 점 (2) 일 것 같아요 .. 예를 들어

상태 리스너를 구현 .. 난 그리고 난 내 로컬 컴퓨터에서 내 클러스터에 poining하고 .. 노드가 위/아래로 갈 때 청취자가 호출된다는 것을 알 수 있습니다.하지만 내 에테르를 뽑을 때이 청취자가 호출되는 것을 보지 못합니다.