我已经创建了密钥空间,并使用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
图式
密钥空间
CREATE KEYSPACE test WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 2};
桌子
CREATE TABLE testrep(id INT PRIMARY KEY);
请注意,从节点工具状态来看,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