Cassandra - 无法理解为什么这个简单的设置不起作用?

时间:2016-03-14 05:26:20

标签: cassandra

我是cassandra的新手。我尝试了这两个简单的设置:单个数据中心集群。但我不明白为什么第二个不起作用?

所有节点都安装了cassandra 3.3,配置为链接: https://docs.datastax.com/en/cassandra/3.x/cassandra/initialize/initSingleDS.html

设置1:

  • 3个节点的群集大小:192.168.1.201,192.168.1.202和192.168.1.203
  • 复制因子:2
  • 写一致性级别:QUORUM(2个节点)
  • 读取一致性级别:QUORUM(2个节点)
  

数据中心: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:

  • 群集大小为4个节点 - 192.168.1.201,192.168.1.202,192.168.1.203和192.168.1.204
  • 复制因子:2
  • 写一致性级别:QUORUM(2个节点)
  • 读取一致性级别:QUORUM(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一样运行吗?

有人可以解释原因吗?

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)