2013-10-17 4 views
2
var cluster: Cluster = null 
var session: Session = null 
cluster = Cluster.builder().addContactPoints("192.168.1.3","192.168.1.2").build() 
val metadata = cluster.getMetadata() 
printf("Connected to cluster: %s\n", 
metadata.getClusterName()) 
metadata.getAllHosts() map { 
case host => 
    printf("Datatacenter: %s; Host: %s; Rack: %s\n", 
    host.getDatacenter(), host.getAddress(), host.getRack()) 

} 

이 코드를 사용하여 cassandra 클러스터에 연결할 수 없습니다. 위의 코드에서 내 실수 무엇"[NoHostAvailableException : cassandra 클러스터 연결에 실패한 모든 호스트가 예외가 발생했습니다"

[NoHostAvailableException: All host(s) tried for query failed (tried: /192.168.1.3 ([/192.168.1.3] Cannot connect), /192.168.1.2 ([/192.168.1.2] Cannot connect))]

독일인의 나에게 오류를주고있다.

+0

은 당신 카산드라 노드에 액세스 할 수 'telnet 192.168.1.3 9082'또는'netcat 192.168.1.3 9082' 또는'nc 192.168.1.3 9082'를 사용하여 클라이언트 호스트로부터? 이렇게하면 방화벽이없고 포트가 올바른지 확인할 수 있습니다. –

답변

3

첫 번째 홍조에서 코드가 정상적으로 보입니다. 이 오류는 카산드라가 실제로 IP "192.168.1.3", "192.168.1.2", "192.168.1.2",

,,

의 포트에서 실제로 실행되지 않는다는 것을 보여줍니다. Cassandra가 이러한 IP에서 실행 중이지만 다른 포트 인 경우

int port = 19042; // Put the correct port here 
cluster = Cluster.builder().addContactPoints("192.168.1.3","192.168.1.2").withPort(port).build() 
0

Cassandra에 대한 원격 액세스는 스 트리지 포트를 통해 이루어집니다 (일부 제한된 작업을 수행하는 데 JMX 포트를 사용할 수 있음).

드리프트 포트는 cassandra.yaml에 rpc_port 매개 변수로 정의되며 기본값은 9160입니다. cassandra 노드는 서버 네트워크 카드의 IP 주소에 바인딩되어야합니다. 127.0.0.1 또는 localhost가 아니어야합니다. 루프백 인터페이스의 IP이므로 바인딩하면 직접 원격 액세스가 차단됩니다. 바운드 주소는 cassandra.yaml의 rpc_address 매개 변수로 구성합니다. 이 값을 0.0.0.0으로 설정하면 "모든 네트워크 인터페이스에서 수신 대기"가 표시되며 이는 적합하지 않을 수도 있습니다.

연결하려면 다음을 사용할 수 있습니다

The cassandra-cli in the cassandra distribution's bin directory provides simple get/set/list operations and depends on Java 
The cqlsh shell which provides CQL access to cassandra, this depends on Python 
A higher level interface such as Apollo 
0

는 포트 9042을 사용하려고 할 수있는 IP 로컬 호스트 또는 다른 컴퓨터에 연결하기 위해 다음과 같이

public String serverIP = "127.0.0.1"; //change ip with yours 
//public String serverIP = "52.10.160.197"; //for prod 
public String keyspace = "database name"; //for prod 
//public String keyspace = "dbname_test"; //for staging 
Cluster cluster = Cluster.builder().addContactPoint(serverIP).build(); 
Session session = cluster.connect(keyspace); 
관련 문제