x 没有物理地址,在 jgroups 集群中节点重启时丢弃消息

No physical address for x, dropping message on node restart in jgroups cluster

当群集中的一个节点重新启动时,我的节点日志充满了 "Dropping unicast message to wrong destination" 的警告消息。 我们正在使用 Jgroups、TCP、jgroups-3.4 版本。1.Final。 我的服务器没有出现,这些警告消息传染性地抛出

以下是警告信息 [0;33mWARN [TransferQueueBundler,h-broadcast,h-13] [TCP] JGRP000032: h-13: 8281f201-7fb1-f6ac-faf3-d6837bc39087 没有物理地址,丢弃消息

[0;33mWARN [INT-1,h-broadcast,h-13] [TCP] JGRP000031: h-13: 将单播消息丢弃到错误的目的地 d205fcba-151c-ad58-8323-fe4f49117f88

请告诉我如何解决这个问题

谢谢, 尼维塔

<TCP loopback="true" 
    recv_buf_size="${tcp.recv_buf_size:20M}" 
    send_buf_size="${tcp.send_buf_size:640K}"
    discard_incompatible_packets="true" 
    max_bundle_size="64K" 
    max_bundle_timeout="5" 
    enable_bundling="true" 
    use_send_queues="true"
    sock_conn_timeout="300" 
    timer_type="new" 
    timer.min_threads="4" 
    timer.max_threads="10" 
    timer.keep_alive_time="3000"
    timer.queue_max_size="500" 
    thread_pool.enabled="true" 
    thread_pool.min_threads="4" 
    thread_pool.max_threads="10"
    thread_pool.keep_alive_time="5000" 
    thread_pool.queue_enabled="true" 
    thread_pool.queue_max_size="100000"
    thread_pool.rejection_policy="discard" 
    oob_thread_pool.enabled="true" 
    oob_thread_pool.min_threads="1"
    oob_thread_pool.max_threads="8" 
    oob_thread_pool.keep_alive_time="5000" 
    oob_thread_pool.queue_enabled="false"
    oob_thread_pool.queue_max_size="100" 
    oob_thread_pool.rejection_policy="discard" 
    bind_addr="${hybris.jgroups.bind_addr}" 
    bind_port="${hybris.jgroups.bind_port}" />
<TCPPING timeout="3000" 
    initial_hosts="xxx.xx.xx.4[7800],xxx.xx.xx.5[7800],xxx.xx.xx.6[7800], xxx.xx.xx.7[7800], xxx.xx.xx.8[7800], xxx.xx.xx.9[7800], xxx.xx.xx.10[7800], xxx.xx.xx.11[7800], xxx.xx.xx.12[7800], xxx.xx.xx.13[7800], xxx.xx.xx.68[7800], xxx.xx.xx.69[7800], xxx.xx.xx.70[7800], xxx.xx.xx.4[7800], xxx.xx.xx.5[7800], xxx.xx.xx.6[7800]" 
    num_initial_members="16"/>

<MERGE2 min_interval="10000" max_interval="30000" />
    <FD_SOCK />
    <FD timeout="3000" max_tries="3" />
    <VERIFY_SUSPECT timeout="1500" />
    <BARRIER />
    <pbcast.NAKACK use_mcast_xmit="false" exponential_backoff="500" discard_delivered_msgs="true" />
    <UNICAST2 />
    <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" max_bytes="4M" />
    <pbcast.GMS print_local_addr="true" join_timeout="3000" view_bundling="true" />
    <UFC max_credits="20M" min_threshold="0.4" />
    <MFC max_credits="20M" min_threshold="0.4" />
    <FRAG2 frag_size="60K" />
    <pbcast.STATE_TRANSFER />

我假设您正在使用 TCP:TCPPING?您是否在 TCPPING.initial_hosts 中列出 所有 成员?这是上述警告的最可能原因。

每个成员中都有一个将 UUID(JGroups 集群成员的内部表示)映射到物理地址的缓存。

您可以通过 JMX 或 probe.sh uuids 查看内容。 h13 中应该有 8281f201-7fb1-f6ac-faf3-d6837bc39087 的映射,但它丢失了。同样,很可能是因为 h13 未在 TCPPING.

中列出

您可以尝试其他发现协议(例如,MPING 如果支持 IP 多播,FILE_PING 需要共享文件系统,TCPGOSSIP 需要外部查找服务等)。详情请查看手册。

非常感谢您的建议。 集群节点自我修复,当其中一个有问题的节点被关闭时(与其他能够远程登录的节点相比,它无法远程登录)

我这周遇到了这个问题,并且正在调整防火墙以使 JGroups 工作几天,直到今天,我将 JGroup 堆栈从“UDP”切换到“TCP”,突然所有问题都消失了。