Cassandra聚类失败过度 - 高可航空性

时间:2017-02-15 22:20:21

标签: cassandra cluster-computing failover

我已经配置了一个带有3个节点的cassandra clustter

Node1(192.168.0.2) , Node2(192.168.0.3), Node3(192.168.0.4)

https://i.stack.imgur.com/vXqsi.png

创建了一个密钥空间' test'复制因子为2。

  

使用复制创建KEYSPACE测试= {' class':' SimpleStrategy',   ' replication_factor' :2}

当我停止Node2或Node3(一次一个并且同时停止)时,我能够在keyspace.table上执行CRUD操作。

当我停止Node1并尝试从Node4或Node3更新/创建一行时,尽管Node3和Node4已启动并运行,但仍会出现以下错误:

  

所有尝试查询的主机都失败了(尝试:/192.168.0.4:9042   (com.datastax.driver.core.exceptions.DriverException:Timeout while   试图获得可用的连接(你可能想要增加   每个主机连接的驱动程序数)))   com.datastax.driver.core.exceptions.NoHostAvailableException:全部   尝试查询失败的主机(尝试:/192.168.0.4:9042   (com.datastax.driver.core.exceptions.DriverException:Timeout while   试图获得可用的连接(你可能想要增加   每个主机连接的驱动程序数)))

如果领导者节点死亡,我不确定Cassandra如何选举领导者。

2 个答案:

答案 0 :(得分:0)

因此,您正在使用replication_factor 2,因此只有2个节点将拥有您的密钥空间的副本(而不是所有3个节点)。

您可以使用此calculator来确定您的设置是否具有良好的一致性。在您的情况下,结果是您可以在不影响应用程序的情况下幸免于没有节点丢失

答案 1 :(得分:0)

我觉得我在回答时并不清楚。复制因子是关于您的数据的副本数量。一致性级别是客户端在从服务器获得响应之前等待的副本数量。 例如:您的所有节点都已启动。客户端使用CL Quorum创建CQL,服务器将以2个节点(3/2 + 1)复制数据并回复客户端,在后台它也将复制第三个节点的数据。

在您的示例中,如果关闭3节点群集的2个节点,您将永远不会获得QUORUM来发出请求(使用CL QUORUM),因此您必须使用一致性级别ONE,一旦节点再次启动,cassandra将复制它们的数据。可能发生的一件事是:在cassandra复制其他2个节点上的数据之前,客户端请求node1或node2并且数据尚未存在。

相关问题