2013-06-27 2 views
0

현재 생산 환경에서 cassandra 클러스터 (2 개의 씨드가있는 4 개 노드)를 설정하려고합니다. 쉼표로 구분 된 호스트 이름과 포트로 연결할 때 제대로 작동합니다.cassandra : lb를 사용하여 cassandra 클러스터를 연결하는 방법?

cluster = HFactory.getOrCreateCluster("Test Cluster", "host1:9160,host2:9160,host3:9160,host4:9160"); 

그러나 개인 노드에 연결하는 lb에서 클러스터 이름을 구성하고 Hector thrift 클라이언트에서 동일한 이름을 구성했습니다. me.prettyprint.hector.api.exceptions.HectorException : 아래 표시된 모든 호스트 풀하지만 난 아래의 우유 공급,

cluster = HFactory.getOrCreateCluster("Test Cluster", "lbname"); 

심각한을 얻었다. 클라이언트에게 재시도 부담이 가해졌습니다.

me.prettyprint.hector.api.exceptions.HectorException: All host pools marked down. Retry burden pushed out to client. 
     at me.prettyprint.cassandra.connection.HConnectionManager.getClientFromLBPolicy(HConnectionManager.java:393) 
     at me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:249) 
     at me.prettyprint.cassandra.service.AbstractCluster.describeKeyspace(AbstractCluster.java:199) 
     at com.july.storage.cassandra.util.CassandraDBUtil.getDb(CassandraDBUtil.java:107) 
     at com.july.storage.cassandra.util.CassandraDBUtil.hasTable(CassandraDBUtil.java:91) 
     at com.july.storage.cassandra.action.CassandraHandler.getCall(CassandraHandler.java:65) 
     at com.july.storage.service.StorageService.GET(StorageService.java:58) 
     at com.july.storage.cassandra.action.CassandraHandler.main(CassandraHandler.java:571) 

답변

2

카산드라 앞에서로드 밸런서를 사용하지 마십시오. 클라이언트가 모든 노드에 연결하게하십시오. 로드 밸런서는 단일 장애 지점 일뿐 아니라 불필요한 대기 시간을 추가합니다.

+0

나중에 노드를 추가하려면 클러스터를 사용하는 모든 클라이언트를 변경해야합니다. 다른 가능성이 있습니까? – user2527312

+1

대부분의 드라이버에는 자동 피어 검색 기능이있어 시드 노드 만 있으면 연결할 수 있으며 다른 모든 노드 (또는 구성에 따라 일부)에 연결됩니다. Hector에서 사용자 안내서의 "노드 자동 탐색 사용"으로 스크롤합니다. https://github.com/rantav/hector/wiki/User-Guide – Theo

+0

cassandra 1.2.5를 사용하고 있습니다. 클러스터에는 4 개의 노드가 있습니다. 클러스터에는 두 개의 시드 노드가 있습니다. AutoDiscoverHosts를 활성화하고 클라이언트에서 클러스터 생성을 위해 시드 노드를 사용했습니다. 해당 시드 노드가 작동 중이라면 클러스터의 모든 노드에 데이터를 쓰거나 읽을 수 있습니다. 하지만 다운되면 "모든 호스트 풀이 표시됩니다. 클라이언트에게 재시도 부담이 들었습니다"라는 메시지가 표시됩니다. furthur 읽기/쓰기가 발생하지 않습니다. (i) AutoDiscoverHosts를 사용하더라도 클라이언트 이벤트에서 클러스터를 만드는 동안 모든 노드를 지정해야합니다. – user2527312

관련 문제