2017-12-24 4 views
0

우리는 3 개의 노드 카산드라 클러스터가 있습니다. 2 노드는 EU (종자)에 있고 1 노드는 미국에 있습니다. 때로는 EU와 미국의 노드간에 노드 간의 핑 문제가 발생합니다.. 네트워크 문제가 발생하면 미국 노드에서 일부 데이터가 손실됩니다. 복구를 위해 수동으로 nodetool repair을 시작해야합니다. 이 사건을 어떻게 다루는 지 조언 해 줄 수있는 사람이 있습니까? - 유럽 연합 (EU) 서버 - 2 개 노드 카산드라 클러스터 핑 손실

dc2

- 미국 서버 -

CREATE KEYSPACE test WITH replication = {'class': 'NetworkTopologyStrategy', 'dc1': '2', 'dc2': '1'} AND durable_writes = false; 

dc1 1 개 노드

답변

0

우리는 카산드라 복구를 자동화하여 유사한 문제를 해결 한 :

는 여기에 우리의 키 스페이스 생성합니다.

우리는 cassandra 운영 시스템 (클러스터의 일부가 아니지만 고려중인 클러스터에 대한 nodetool 명령을 실행할 수있는 시스템)에서 cron 작업을 실행합니다.

cron 작업은 모든 자정마다 nodetool 복구를 실행합니다. 매달 1 일에 수리를 완전히 마친 경우를 제외하고 매일 증분 수리가 실행됩니다. 필요에 따라 일정을 결정할 수 있습니다.

다른 해결책이 없습니다. 노드가 가장 기본적인 문제 (핑 손실)를 겪고있을 때 수행 할 수있는 작업.

다른 방법으로는 다중 지역 클러스터 결정을 재고해야합니다. 다중 영역 (노드가 다른 물리적 위치이지만 한 지역 내에있는 노드) 클러스터를 고려하는 것이 좋습니다.

+0

안녕하세요. 답변 해 주셔서 감사합니다. 이 문제에 대해 자세히 읽고 시나리오를 분석했습니다. 누락 된 데이터는'''gc_grace_seconds = 60'' 매개 변수가있는 테이블에서 나온 것 같습니다. '''''gc_grace_seconds'''가 12 시간 인 다른 테이블에서는 누락 된 데이터가 없습니다. ''''gc_grace_seconds'''를 12 시간으로 늘리면 문제가 해결 될 것이라고 생각하십니까? –

+0

"유예 기간 동안 읽기 요청에 대해 만료 된 데이터를 계속 사용할 수 있습니다 (gc_grace_seconds 참조)." 내가 모르는 것은 만료 된 데이터가 복제되었는지 여부입니다. 그렇지 않은 경우 특정 노드에서 더 큰 gc_grace_seconds를 갖는 데이터의 경우 데이터 손실이 더 두드러집니다. 하지만 들어가기 전에 문제의 범위를 좁혀 야합니다. 네트워크 문제이거나 다른 것입니까? –

0

저희 문제는 gc_grace_seconds에있는 것 같습니다. 우리 테이블은 다음과 같이 작성됩니다

default_time_to_live = 7200 gc_grace_seconds = 60

미국의 노드가 DOWN 경우, gc_grace_seconds 기간 데이터를 동기화 할 수없는 후에 것으로 보인다. 우리는 gc_grace_seconds의 값을 7200까지 늘리려고 시도했으며 미국 노드가 UP되면 데이터가 동기화되어있는 것처럼 보입니다.

관련 문제