我创建了密钥空间,并使用Cassandra 3.0服务器创建了一个表。我正在使用3节点架构。其中三台服务器正在工作,能够连接3个节点。但是,当我使用CQL插入或选择数据时,它显示错误,说明" NoHostAvailable:"。请有人能告诉我这个问题的原因和解决方案。
nodetool status
输出
UN 172.30.1.7 230.22 KB 256 ? 2103dcd3-f09b-47da-a187-bf28b42b918e rack1
DN 172.30.1.20 ? 256 ? 683db65d-0836-40e4-ab5b-fa0db20bae30 rack1
DN 172.30.1.2 ? 256 ? 2b1f15d1-2f92-41ef-a03e-0e5f5f578cf4 rack1
KEYSPACE
CREATE KEYSPACE test WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 2};
表
CREATE TABLE testrep(id INT PRIMARY KEY);
答案 0 :(得分:0)
请注意,从nodetool状态,3个节点群集中有2个已关闭(DN)。 您可能正在插入无法满足的一致性级别。
nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
UN 127.0.0.1 237.31 MiB 256 ? 3c8a8d8d-992c-4b7c-a220-6951e37870c6 rack1
cassandra@cqlsh> create KEYSPACE qqq WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 2};
cassandra@cqlsh> use qqq;
cassandra@cqlsh:qqq> CREATE TABLE testrep(id INT PRIMARY KEY);
cassandra@cqlsh:qqq> insert into testrep (id) VALUES ( 1);
cassandra@cqlsh:qqq> CONSISTENCY
Current consistency level is ONE.
cassandra@cqlsh:qqq> CONSISTENCY TWO ;
Consistency level set to TWO.
cassandra@cqlsh:qqq> insert into testrep (id) VALUES (2);
NoHostAvailable:
cassandra@cqlsh:qqq> exit