gpt4 book ai didi

java - cassandra状态监听器发送重复的信号,一个具有公共(public)IP,另一个具有私有(private)IP

转载 作者:行者123 更新时间:2023-12-02 04:14:51 25 4
gpt4 key购买 nike

我有一个 5 节点 cassandra 集群,每个节点中的 Listen_address 均在 cassandra.yml 中配置其私有(private)地址。

配置如下所示:
注意:192.168.1.* 是私有(private) IP 地址

cassandra 1| listen_address:192.168.1.1  | publicip :kafka1/x.y.z.1  
cassandra 2| listen_address:192.168.1.2 | publicip :kafka2/x.y.z.2
cassandra 3| listen_address:192.168.1.3 | publicip :kafka3/x.y.z.3
cassandra 4| listen_address:192.168.1.4 | publicip :kafka4/x.y.z.4
cassandra 5| listen_address:192.168.1.5 | publicip :kafka5/x.y.z.5

我还有一个java程序,它充当Cassandra状态监听器,监听onAdd、onUp、onDown、onRemove调用。

注意:Java 程序通过公共(public)域名与 cassandra 对话
(例如)cassandra_hosts:kafka1,kafka2,kafka3,kafka4

    {
private Set<Host> downHostList = Collections.synchronizedSet(new HashSet<Host>());
//onup/onAdd Implemetation
public void onAdd(Host host) {
if(downHostList.contains(host)){
downHostList.remove(host);
}
LOG.info("Down host count {} and the list is[{}]",downHostList.size(),downHostList);
}
//onDown/OnRemove Implentation
public void onDown(Host host) {
if(!host.isUp()){
downHostList.add(host);
}
LOG.info("Down host count {} and the list is[{}]",downHostList.size(),downHostList);
}
}

以下是输出的观察结果:
当我关闭节点 2 时,我看到 onDown 被调用了两次。一次我得到了公共(public) ip 地址,下一次我得到了私有(private) ip 地址。所以计数是 enter image description here

更新:11 月 2 日
虽然我没有这个问题的答案。我的解决方法是在我的java程序中使用私有(private)IP与Cassandra交谈..我将继续使用它,因为我等待Cassandra社区的一些答案..

最佳答案

datastax java 驱动程序使用 'STATUS_CHANGE' 通过与 C* 节点之一的指定连接从 C* 接收这些通知。事件订阅。最终,UP 和 DOWN 事件通过 C* 节点从八卦接收的信息进行检测,并且 C* 为该主机的 rpc_address 或 Broadcast_rpc_address 发送一个事件(broadcast_rpc_address 优先)。

我假设您将 cassandra.yaml 中的 rpc_address 配置为这些 192.168.1.x 地址,对吗?

C* 中可能存在错误(您使用的 C* 和驱动程序是什么版本?)。另一种可能性是对等信息可能以某种方式损坏,因此驱动程序可能会将 x.y.z.2 和 192.168.1.2 视为单独的主机(我预计不会出现这种情况)。你最初使用公共(public)ip作为你的rpc_address,然后更改为私有(private)吗?最好检查的一件事是通过在每个节点上的 cqlsh 中执行以下命令来检查每个 C* 节点上的 system.peers 表的状态:

select peer,rpc_address from system.peers;

查看 x.y.z.2 是否在您的任何主机上显示为 rpc_address。

关于java - cassandra状态监听器发送重复的信号,一个具有公共(public)IP,另一个具有私有(private)IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33428094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com