我在两个节点上运行Cassandra 3.11。这是密钥空间:
CREATE KEYSPACE backend_platform_dev
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;
我有两个节点,在我的机器上的VM上运行。当两个节点都启动时,一切正常。但是当我取下一个节点时,我的应用程序(elixir)开始抛出错误,以及cqlsh(NoHostAvailable
或InvalidRequest: Error from server: code=2200 [Invalid query] message="unconfigured table test"
)。
我搜索过错误,每个人都遇到为单个节点设置NetworkTopologyStrategy
的问题,但这不是我的情况。
这里发生了什么?
编辑:这是驱动程序给出的错误:
[不可用]无法达到一致性等级ONE:%{alive:0, 一致性:一,必需:1}
我确定一个节点还活着,一个节点已关闭。使用本地系统中的cqlsh
连接到Cassandra节点可以确认这一点。我现在更加困惑。
答案 0 :(得分:1)
问题出在" replication_factor"被配置为1.因此只有一个数据副本。假设您正在存储10条记录,那么每个节点应该获得其记录份额,为简单起见,我们可以说前5条记录存储在node1中,后5条记录存储在node2中。现在当您取下node1并查找第一条记录时,您将最终得到报告的驱动程序错误,因为没有节点可用于提供该记录。
SimleStrategy应该适用于Single DataCenter场景。仍然推荐的PROD配置是NetworkTopology Strategy。