是否可以在不影响应用程序的情况下关闭一半的cassandra节点?

aiazj4mn  于 2021-06-14  发布在  Cassandra
关注(0)|答案(2)|浏览(339)

如果有一个4节点的cassandra集群,是否可以在不影响应用程序的情况下将cassandra配置为使一半节点关闭(在本例中为两个节点)?
还有,如果cassandra不取消写队列,节点可以关闭多长时间?

dfuffjeb

dfuffjeb1#

是的,假设您讨论的是一个数据中心中的所有四个节点,如果您将复制因子设置为3或更大,并且将读写一致性级别设置为1。
对于写操作,向上的节点将存储向下的节点的提示,因此当它们返回时可以写入数据。可以设置节点存储这些提示的时间 cassandra.yaml .

ufj5ltwl

ufj5ltwl2#

这取决于客户端cl和dc复制因子。
假设rf为4(all),如果客户端有cl=one或local\u one,应用程序将不会注意到任何问题。任何其他客户端cl都会有问题(例如,cl=local\u quorum 4是3,只允许单个节点关闭)。
假设rf=1或2。如果cl=one或local\u one,则应用程序将不受仅操作可用节点上的数据的查询的影响。但是,对仅存在于不可用节点上的行的任何访问都将受到影响。换句话说,cl=one或local\u one仅在处理至少有一个节点可用于返回响应的数据时有效(在这种情况下,您只需要一个节点来响应)。如果要查询的行位于两个不可用节点上,则会出现如下错误:预期响应为1,收到的响应为0。
许多应用程序将cl配置为某种仲裁(本地或非本地),因此在这种情况下,除非rf=5(至少5个节点),否则应用程序肯定会失败。仲裁5是3,允许2个节点失败。
希望这是有道理的。

相关问题