我是cassandra的新手。我尝试了这两个简单的设置:单个数据中心集群。但我不明白为什么第二个不起作用?
所有节点都安装了cassandra 3.3,配置为链接: https://docs.datastax.com/en/cassandra/3.x/cassandra/initialize/initSingleDS.html
设置1:
数据中心:dc1
===============
状态=上/下| /状态=正常/离开/加入/移动
- 地址加载令牌拥有主机ID Rack
UN 192.168.1.201 4.57 MB 256? a0138a81-45f9-4df5-af97-362c1bd2e242 rack1
UN 192.168.1.202 1.67 MB 256? e8a73b59-8852-4e3d-951e-bf8e231d6b5f rack1
UN 192.168.1.203 4.87 MB 256? 7b02c94c-14c5-4b34-8a0d-dc16dec8c1f9 rack1
所有3个节点都已启动!
设置2:
数据中心:dc1
===============
状态=上/下| /状态=正常/离开/加入/移动
- 地址加载令牌拥有主机ID Rack
UN 192.168.1.201 3.87 MB 256? a0138a81-45f9-4df5-af97-362c1bd2e242 rack1
UN 192.168.1.202 2.54 MB 256? 42bcba40-3941-43af-b694-06c1d4f615cc rack1
UN 192.168.1.203 3.77 MB 256? 7b02c94c-14c5-4b34-8a0d-dc16dec8c1f9 rack1
DN 192.168.1.204 1.67 MB 256? e8a73b59-8852-4e3d-951e-bf8e231d6b5f rack1
正如您所看到的,节点192.168.1.204已关闭(我将其强行关闭以进行测试),其他3个节点仍在运行! 但是,它不会工作。每次运行查询时,都会返回错误(使用DevCenter GUI工具): “在一致性QUORUM(需要2个但只有1个活着)的查询中没有足够的副本”
如果我使用nodetool来重新编码192.168.1.204,并且SETUP 2变为SETUP 1,那么它会再次工作。
我认为,SETUP 2应该能够像SETUP 1一样运行吗?
有人可以解释原因吗?
答案 0 :(得分:2)
要达到法定人数(超过一半),您需要复制件数量/ 2 + 1.
你有一个4节点集群,有3个。如果复制因子为2,则需要两个节点向上(2/2+1 = 2 of the 2 replicas)
才能使仲裁成功。如果您拥有的某条数据属于已关闭的节点,则无法满足仲裁要求,因此您会收到该错误。如果一致性级别为ONE
,则可以使用。为了使1个节点关闭并仍然能够达到法定数量,您需要将复制因子设置为至少3 (3/2+1 = 2 of the 3 required)
。