2014-06-05 1 views
2

다중 데이터 센터 카산드라 클러스터에 문제가 있습니다. 그것은 6 개의 노드로 구성된 새로운 클러스터입니다 (3 개는 서유럽, 3 개는 서구 -2 개). 보안 그룹은 각 노드가 다른 노드의 외부 IP와 통신 할 수 있도록 구성됩니다. 수신 주소는 로컬 VPC IP로 정의되며 브로드 캐스트 주소는 각 노드의 공용 IP로 설정됩니다.Ec2MultiRegionSnitch와의 카산드라 스키마 계약

모든 확인을 보인다

Datacenter: us-west-2 
===================== 
Status=Up/Down 
|/ State=Normal/Leaving/Joining/Moving 
-- Address  Load  Owns (effective) Host ID        Token         Rack 
UN (public ip) 121.3 KB 100.0%   b15c18bf-1689-4308-bbe2-d36d38f7c8ea -9103428429654321414      2b 
UN (public ip) 46.57 KB 100.0%   89378b79-4228-4b44-a3e3-c6d2f3bbd368 -9174198879812166340      2b 
UN (public ip) 46.58 KB 100.0%   4cbd586f-963c-4339-abaa-af313e023abe -9223053993127788404      2b 

Datacenter: eu-west 
=================== 
Status=Up/Down 
|/ State=Normal/Leaving/Joining/Moving 
-- Address  Load  Owns (effective) Host ID        Token         Rack 
UN (public ip) 46.59 KB 100.0%   2aad2d39-0099-4ae3-ae46-a1558b1b657c -9163190464402129696      1c 
UN (public ip) 98.55 KB 100.0%   94748d93-cf56-4cde-8b44-f75d17b41924 -9211541808465956929      1c 
UN (public ip) 84.5 KB 100.0%   3cdeba13-3026-4a1b-a8d1-63eef25049cb -9196529642979836746      1c 

그래서, 내가 필요로하는 keyspaces을 만들 수 있습니다.

하지만, 내가 클러스터에 내 중고품 응용 프로그램을 연결하려고 할 때, 그때 아 스티 아낙 스에서 다음과 같은 오류 참조 : 나는 새로운 키 스페이스는 다른 제대로 복제되지 않았기 때문에이 가정

Caused by: com.netflix.astyanax.connectionpool.exceptions.SchemaDisagreementException: 
    SchemaDisagreementException: [host=(internal ip):9160, latency=10002(10007), 
    attempts=1] Can't change schema due to pending schema agreement 

을 노드,하지만 난 왜 작동하지 않을 수 있습니다. 내가 nodetool describecluster를 실행하는 경우, 그것은 나에게이 (내가 Ec2MultiRegionSnitch을 사용하고 마음에 베어링을하지만, 어떤 이유로이 DynamicEndpointSnitch으로 표시) 제공합니다

Cluster Information: 
Name: mycluster_multiregion 
Snitch: org.apache.cassandra.locator.DynamicEndpointSnitch 
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner 
Schema versions: 
    UNREACHABLE: [(public IP of this node)] 

    f9de7b22-1486-37c6-8487-801 [(list of other node public IPs)] 

그것은 모든 노드에서 동일한 - 그것은이 도달 할 수없는 자신을 생각한다. 이것은 기술적으로 정확합니다. EC2 VPC에서는 노드가 NAT 때문에 공개 IP를 사용하여 자체 통신 할 수 없습니다. 그러나 이것이 스키마 불일치 문제를 일으키는 지 여부는 확실하지 않으며, 그렇다면 간단한 해결책이 있는지 확신 할 수 없습니다.

감사합니다.

답변

1

여기에 설명 된 바와 같이 http://nsinfra.blogspot.in/2013/06/cassandra-schema-disagreement-problem.html

당신이 NTP를 사용하여 시도하고 동기 클럭 할 수 있습니까?

AWS의 문서에서

- 구성 네트워크 시간 프로토콜 (NTP) NTP (Network Time Protocol)를 아마존 리눅스 인스턴스에서 기본적으로 구성되어 있습니다; 그러나 인스턴스는 표준 NTP 구성이 작동하려면 인터넷에 액세스해야합니다. 이 절의 절차에서는 기본 NTP 구성이 올바르게 작동하는지 확인하는 방법을 보여줍니다. 인스턴스에 인터넷에 액세스 할 수없는 경우 정확한 시간을 유지하기 위해 사설망의 다른 서버를 쿼리하도록 NTP를 구성해야합니다..

EC2 VPC 용일 수 있습니다. AWS 시간 서버 (x.amazon.pool.ntp.org)를 사용하도록 NTP를 구성해야합니다.