使用cassandra集群管理器,我创建了一个包含4个节点的集群:node1,node2,node3,node4。
然后我使用cqlsh创建一个复制因子为3的密钥空间。
所以我想我的数据应该有3个副本。我期待的是,如果我创建一个表,那么将有4个“副本”分布在这4个节点上
但如果我停止node1,我根本无法访问该表。我收到的消息是没有主机可用。
我的推理错误在哪里?如何设置复制因子,以便我的数据实际上分布在多个节点上?
答案 0 :(得分:2)
cqlsh使用白名单策略,这意味着客户端只会连接到一台主机。如果该1主机出现故障,您将获得NoHostAvailable异常,并且它将无法尝试任何其他节点。尝试将cqlsh连接到您取下的主机以外的主机,或使用其中一个cassandra驱动程序和适当的负载平衡策略。