Cassandra - 监控多个数据中心之间的连接

时间:2014-05-25 16:35:48

标签: java cassandra client datastax-java-driver

假设我们有3个地理位置分布的数据中心A,B,C。在每个中,Cassandra集群都已启动并运行。现在假设DC A不再能与B和C闲聊。

使用LOCAL_QUORUM写入A仍然会满意 - 但是它们将不再传播到B和C;反之亦然。

这种情况可能会产生一些非常灾难性的后果......

我正在寻找的是关于如何快速确定DC A已经与其他数据中心“隔离”的一些提示(使用Native Java驱动程序)。

我记得读过推送通知,但我好像记得他们只提到了本地群集的状态。有人有什么想法吗?感谢。

2 个答案:

答案 0 :(得分:0)

首先要注意的是,如果A无法再连接到B和C,则会在恢复网络连接时存储和传递提示。因此,对于不会持续很长一段时间的中断,已经有了安全机制,您无需做任何事情。

对于较长时间的中断,最好在执行此类中断后使用修复命令来同步副本。

也就是说,如果您正在寻找确定DC通信何时中断的方法,您可以选择多种方式。

1)使用Datastax Opscenter之类的工具来监控您的群集状态,此工具会自动发现这些事件发生的时间并记录它们。我也相信你能够设置触发事件,但我不是Opscenter如何工作的专家。

2)使用Java驱动程序的公共集群寄存器(Host.StateListener监听器)注册要在节点关闭事件上调用的函数,然后可以确定整个DC何时关闭。

3)通过JMX在每个DC上跟踪当前的八卦状态,这样您就可以看到每个数据中心对所有机器当前可用性的看法。您可以直接或通过nodetool状态执行此操作。

答案 1 :(得分:0)

@RussS ..我不认为当所有三个主机都无法访问时,point(2)有效..

例如..I实现了状态监听器,我从我的本地机器到我的集群。我可以看到当节点上/下时监听器被调用..但是当我拔掉插头时我不会看到这个监听器被调用我的以太