2节点Cassandra群集中的故障切换和复制
我在一个2节点Cassandra集群上运行KairosDB,RF=2,Write CL=1,Read CL=1。如果2个节点处于活动状态,客户端将一半数据发送到节点1(例如,度量值从度量值_1到度量值_5000),另一半数据发送到节点2(例如,度量值从度量值_5001到度量值_10000)。理想情况下,每个节点始终具有所有数据的副本。但如果一个节点死了,客户机会将所有数据发送到活动节点 客户端开始向群集发送数据。30分钟后,我关闭节点2 10分钟。在这10分钟内,客户端将所有数据正确地发送到节点1。之后,我重新启动节点2,客户端继续正确地向2个节点发送数据。一小时后,我停止了客户 我想检查节点2死后发送到节点1的数据是否已自动复制到节点2。为此,我关闭了节点1,并在节点2与节点2断开的时间内查询数据,但它没有返回任何结果。这让我觉得数据没有从节点1复制到节点2。我贴了一个问题。数据似乎是自动复制的,但速度太慢了 我希望两台服务器中的数据是相同的(出于冗余目的)。这意味着节点2失效时发送到系统的数据必须在节点2可用后自动从节点1复制到节点2(因为RF=2) 我这里有几个问题: 1) 复制真的很慢吗?还是我配置了错误的东西 2) 如果客户端向每个节点发送一半的数据,如本问题所述,我认为可能会丢失数据(例如,节点1从客户端接收数据,而节点1正在向节点2复制数据时,数据突然下降)。我说得对吗 3) 如果在2)中我是对的,我将这样做:客户端将所有数据发送到两个节点。这可以解决2)个问题,并且在一个节点已死亡且稍后可用时,还可以利用复制的优势。但我想知道,这会导致数据重复,因为两个节点都接收相同的数据。这里有什么问题吗2节点Cassandra群集中的故障切换和复制,cassandra,cassandra-2.0,kairosdb,Cassandra,Cassandra 2.0,Kairosdb,我在一个2节点Cassandra集群上运行KairosDB,RF=2,Write CL=1,Read CL=1。如果2个节点处于活动状态,客户端将一半数据发送到节点1(例如,度量值从度量值_1到度量值_5000),另一半数据发送到节点2(例如,度量值从度量值_5001到度量值_10000)。理想情况下,每个节点始终具有所有数据的副本。但如果一个节点死了,客户机会将所有数据发送到活动节点 客户端开始向群集发送数据。30分钟后,我关闭节点2 10分钟。在这10分钟内,客户端将所有数据正确地发送到节点
谢谢大家! 能否检查cassandra.yaml配置文件中启用的提示切换值 对于您的问题:是的,在某些情况下您可能会丢失数据,直到完全实现复制为止,Cassandra并不是在进行后期复制—有三种机制
- 暗示移交
- 修理-
- 阅读维修-这些可能对您的用例没有多大帮助-
顺便说一句,您所描述的节点1和节点2之间的度量分片的客户端行为是什么?KairosDB和Cassandra都不是这样工作的,是您自己的客户机向不同的KairosDB实例发送度量吗 Cassandra分区不是在度量名称上创建的,而是在行键上创建的(分区键完全相同,但与kairosDB相同)。因此,每3周,每个唯一系列的数据都将基于哈希代码关联一个令牌,该令牌将用于集群上的分片/复制。 KairosDB能够与多个节点通信,并作为协调节点在这些节点之间进行循环
我希望这会有所帮助。“您所描述的节点1和节点2之间的度量值分片的客户端行为是什么?”->我只想做一些类似于负载平衡的事情。“是您自己的客户端向不同的KairosDB实例发送度量数据吗?”->在node1上的KairosDB.properties中,我刚刚配置了“KairosDB.datastore.cassandra.host_list=node1.hdsrcluster:9160”,在node2上的KairosDB.properties中,我刚刚配置了“KairosDB.datastore.cassandra.host_list=node2.hdsrcluster:9160”。然后我在两个节点上通过“KairosDB.sh start”运行KairosDB。我这样做对吗?好的,我明白。是的,这很好,推送数据的客户机正在进行负载平衡。这让我问了一个问题:当节点2关闭时,您是否检查数据是否正确填充到Cassandra中?是的,确实如此。但是,正如我提到的,它非常缓慢。也许我需要更快的速度,或者我需要手动运行“nodetool修复”。顺便说一句,让我们忘记我的系统模型,你能建议我KairosDB+Cassandra的任何系统模型,它可以根据需要处理故障转移(即,无论一台服务器是否停机)和“延迟”复制吗?(也就是说,如果服务器(例如节点2)宕机后又重新启动,“丢失”的数据将很快从节点1同步到节点2。我需要这一点,因为如果在节点1宕机后,我不会丢失任何数据)并且,只有2个节点。正如我所说,我很惊讶,在使用暗示的切换重新启动节点2后,您没有快速复制数据。是否在cassandra.yaml中启用了该功能?你用的是什么版本的卡桑德拉?如果启用了它,这听起来像是Cassandra开发人员的一个问题。