来自f5负载平衡器的Cassandra多数据中心群集健康检查

来自f5负载平衡器的Cassandra多数据中心群集健康检查,cassandra,f5,Cassandra,F5,我有一个跨两个数据中心工作的cassandra集群。每个DC有3个节点,复制因子为3,读/写一致性为本地仲裁 我想在DC中的两个节点关闭时停止到特定DC的通信,因为不再满足仲裁。我希望这将由我的应用程序(客户端)处理,即在未达到本地法定人数时连接到其他DC cassandra,但从那里不可能 我们可以在f5负载平衡器上设置某种规则来实现这一点吗?您可以在BIG-IP上设置一个外部监视器来运行一个脚本,确定集群运行状况,然后根据结果进行负载平衡。如果您使用的是BIG-ip11.x+,您可以创建脚本

我有一个跨两个数据中心工作的cassandra集群。每个DC有3个节点,复制因子为3,读/写一致性为本地仲裁

我想在DC中的两个节点关闭时停止到特定DC的通信,因为不再满足仲裁。我希望这将由我的应用程序(客户端)处理,即在未达到本地法定人数时连接到其他DC cassandra,但从那里不可能


我们可以在f5负载平衡器上设置某种规则来实现这一点吗?

您可以在BIG-IP上设置一个外部监视器来运行一个脚本,确定集群运行状况,然后根据结果进行负载平衡。如果您使用的是BIG-ip11.x+,您可以创建脚本并导入它,添加它可能需要的任何参数。然后创建一个监视器配置文件来调用该外部监视器

如果您有DevCentral帐户,请查看此页面:

向下滚动,您将看到大量要构建的示例。需要注意的示例是MySql监视器。这是我建议对大型IP进行集群健康检查的路径

或者,您可以简单地查询一个网页,查找成功/失败消息,这样,如果您已经有一个集群健康状态页面,您就可以使用HTTP监视器验证该消息。您可以自定义接收字符串以查找特定内容,也可以使用regex查找任何特定字符串(例如clusterFailure或诸如此类)。从那里,您可以做出适当的LB决策。我运行了一个类似的监视器,它读取一个nagios状态页面,如果它读取了一条特定消息上的故障,它将从该节点中断连接


.

这很有帮助。我想我必须使用脚本,因为对于cassandra cluster,我们没有任何群集运行状况页面。我只是在想,如果您已经有了HTTP监视器可以读取的其他监控解决方案,那么它可能会工作。没有那么干净。。。脚本是正确的方法。HTTP监视器读取一次性网页是一种懒惰的方式。让我知道你是否还有其他问题。另外,您可以在DevCentral网站上发布问题,应该有人能够提供帮助。我们没有使用任何监控解决方案&目前我没有任何进一步的问题。谢谢你的建议。