3个节点集群,内网集群 两个客户端在不同的节点上,A客户端发的消息B客户端收不到

3个节点集群,内网集群 两个客户端在不同的节点上,A客户端发的消息B客户端收不到


我测试过如果两个客户端端在一个节点上,A客户端的消息B客户端是可以接收到的,这个是什么原因,消息没有同步吗?我使用的天翼云负载均衡进行连接分发的


q确定集群是成功的

正常不会这样的(有测试用例覆盖),如果遇到了,那就是重大 bug。

日志有什么报错么?或者其它的有效信息,有点难猜。

没有接收报错信息,我需要怎么做?

services:
emqx:
image: emqx/emqx:5.8.7
container_name: emqx
ports:
- “8883:8883”
- “8083:8083”
- “8084:8084”
- “8031:1883”
- “1883:1883”
- “18083:18083”
- “4369:4369” # EPMD 端口(节点发现)
- “4370-4379:4370-4379” # 分布式通信端口段
volumes:
- ./plugins:/opt/emqx/plugins:rw
- ./data:/opt/emqx/data:rw
- ./log:/opt/emqx/log:rw
environment:
- EMQX_HOST=13.0.0.3
- EMQX_NODE__DATA_DIR=“data”
- EMQX_LOG__FILE__DEFAULT__ENABLE=true
- EMQX_LOG__CONSOLE__ENABLE=false
- EMQX_NODE_COOKIE=“xxxxxxxx”
- EMQX_CLUSTER__DISCOVERY_STRATEGY=“static”
- EMQX_JOIN_CLUSTER="emqx@13.0.0.3"
- EMQX_CLUSTER__STATIC__SEEDS="emqx@13.0.0.4,emqx@13.0.0.3,emqx@13.0.0.5"
- TZ=Asia/Shanghai
privileged: true
restart: on-failure:3
healthcheck:
test: [“CMD”, “/opt/emqx/bin/emqx_ctl”, “status”]
interval: 60s
timeout: 15s
retries: 3
start_period: 90s
sysctls:
net.core.somaxconn: 32768
net.ipv4.tcp_syncookies: 0
net.ipv4.tcp_max_syn_backlog: 16384
net.ipv4.tcp_max_tw_buckets: 1048576
net.ipv4.tcp_fin_timeout: 15
net.ipv4.ip_local_port_range: “1024 65535”
ulimits:
nproc: 1048576
nofile:
soft: 1048576
hard: 1048576

这个是我的部署脚本,我的系统是Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-59-generic x86_64)


除开这个没有进行操作,上面的所有操作我都执行了,在主机里面

日志报错信息会在那个位置进行体现

2025-07-29T16:30:35.525974+08:00 [error] crasher: initial call: gen_rpc_client:init/1, pid: <0.20437667.0>, registered_name: , exit: {{badrpc,econnrefused},[{gen_server,init_it,6,[{file,“gen_server.erl”},{line,961}]},{proc_lib,init_p_do_apply,3,[{file,“proc_lib.erl”},{line,241}]}]}, ancestors: [gen_rpc_client_sup,gen_rpc_sup,<0.2165.0>], message_queue_len: 0, messages: , links: [<0.2171.0>], dictionary: , trap_exit: true, status: running, heap_size: 1598, stack_size: 28, reductions: 3754; neighbours:
2025-07-29T16:30:35.528956+08:00 [error] event=connect_to_remote_server, peer=emqx@13.0.0.4, port=5369, reason=econnrefused
2025-07-29T16:30:35.529151+08:00 [error] crasher: initial call: gen_rpc_client:init/1, pid: <0.20181099.0>, registered_name: , exit: {{badrpc,econnrefused},[{gen_server,init_it,6,[{file,“gen_server.erl”},{line,961}]},{proc_lib,init_p_do_apply,3,[{file,“proc_lib.erl”},{line,241}]}]}, ancestors: [gen_rpc_client_sup,gen_rpc_sup,<0.2165.0>], message_queue_len: 0, messages: , links: [<0.2171.0>], dictionary: , trap_exit: true, status: running, heap_size: 1598, stack_size: 28, reductions: 3754; neighbours:
2025-07-29T16:30:35.541164+08:00 [error] event=connect_to_remote_server, peer=emqx@13.0.0.4, port=5369, reason=econnrefused
2025-07-29T16:30:35.541410+08:00 [error] crasher: initial call: gen_rpc_client:init/1, pid: <0.20512829.0>, registered_name: , exit: {{badrpc,econnrefused},[{gen_server,init_it,6,[{file,“gen_server.erl”},{line,961}]},{proc_lib,init_p_do_apply,3,[{file,“proc_lib.erl”},{line,241}]}]}, ancestors: [gen_rpc_client_sup,gen_rpc_sup,<0.2165.0>], message_queue_len: 1, messages: [{{oc,erlang,send,[<63534.22380358.0>,{deliver,<<“iotv3/+/+/push”>>,{message,<<0,6,59,13,56,231,2,99,215,95,1,50,155,55,0,17>>,0,<<“864123070881003”>>,#{dup => false,retain => false},#{peername => {{100,89,0,83},13361},protocol => mqtt,username => <<“QR202502”>>,peerhost => {100,89,0,83},properties => #{},proto_ver => 4,client_attrs => #{},redispatch_to => {<<“huamiaomiao”>>,<<“iotv3/+/+/push”>>}},<<“iotv3/ZXIC/803P42U1701/push”>>,<<“{"imei":"864123070881003","url":"xxxx”,"iccid":"89860624740025663236","simIMEI":"864123070881003","simNum":2,"remainPwr":"90","currentTime":"2025-07-29 16:30:35","ssid":"MIFI-6085","password":"1234567890","hidden":1,"connCnt":2,"rssi":"-76","dayFlow":6805486,"flow":64235,"monthFlow":169548499,"version":"…>>,1753777835541,#{}}}]},undefined}], links: [<0.2171.0>], dictionary: , trap_exit: true, status: running, heap_size: 1598, stack_size: 28, reductions: 3754; neighbours:
2025-07-29T16:30:35.543899+08:00 [error] event=connect_to_remote_server, peer=emqx@13.0.0.4, port=5369, reason=econnrefused
2025-07-29T16:30:35.544110+08:00 [error] crasher: initial call: gen_rpc_client:init/1, pid: <0.20512832.0>, registered_name: , exit: {{badrpc,econnrefused},[{gen_server,init_it,6,[{file,“gen_server.erl”},{line,961}]},{proc_lib,init_p_do_apply,3,[{file,“proc_lib.erl”},{line,241}]}]}, ancestors: [gen_rpc_client_sup,gen_rpc_sup,<0.2165.0>], message_queue_len: 0, messages: , links: [<0.2171.0>], dictionary: , trap_exit: true, status: running, heap_size: 1598, stack_size: 28, reductions: 3758; neighbours:
2025-07-29T16:30:35.554820+08:00 [error] event=connect_to_remote_server, peer=emqx@13.0.0.4, port=5369, reason=econnrefused
2025-07-29T16:30:35.554996+08:00 [error] crasher: initial call: gen_rpc_client:init/1, pid: <0.20512833.0>, registered_name: , exit: {{badrpc,econnrefused},[{gen_server,init_it,6,[{file,“gen_server.erl”},{line,961}]},{proc_lib,init_p_do_apply,3,[{file,“proc_lib.erl”},{line,241}]}]}, ancestors: [gen_rpc_client_sup,gen_rpc_sup,<0.2165.0>], message_queue_len: 0, messages: , links: [<0.2171.0>], dictionary: , trap_exit: true, status: running, heap_size: 1598, stack_size: 28, reductions: 3754; neighbours:
2025-07-29T16:30:35.558723+08:00 [error] event=connect_to_remote_server, peer=emqx@13.0.0.4, port=5369, reason=econnrefused
2025-07-29T16:30:35.558956+08:00 [error] crasher: initial call: gen_rpc_client:init/1, pid: <0.20512834.0>, registered_name: , exit: {{badrpc,econnrefused},[{gen_server,init_it,6,[{file,“gen_server.erl”},{line,961}]},{proc_lib,init_p_do_apply,3,[{file,“proc_lib.erl”},{line,241}]}]}, ancestors: [gen_rpc_client_sup,gen_rpc_sup,<0.2165.0>], message_queue_len: 0, messages: , links: [<0.2171.0>], dictionary: , trap_exit: true, status: running, heap_size: 1598, stack_size: 28, reductions: 3758; neighbours:
2025-07-29T16:30:35.562355+08:00 [error] event=connect_to_remote_server, peer=emqx@13.0.0.5, port=5369, reason=econnrefused
2025-07-29T16:30:35.562568+08:00 [error] crasher: initial call: gen_rpc_client:init/1, pid: <0.20512835.0>, registered_name: , exit: {{badrpc,econnrefused},[{gen_server,init_it,6,[{file,“gen_server.erl”},{line,961}]},{proc_lib,init_p_do_apply,3,[{file,“proc_lib.erl”},{line,241}]}]}, ancestors: [gen_rpc_client_sup,gen_rpc_sup,<0.2165.0>], message_queue_len: 0, messages: , links: [<0.2171.0>], dictionary: , trap_exit: true, status: running, heap_size: 1598, stack_size: 28, reductions: 3754; neighbours:
2025-07-29T16:30:35.563472+08:00 [error] event=connect_to_remote_server, peer=emqx@13.0.0.4, port=5369, reason=econnrefused
2025-07-29T16:30:35.563612+08:00 [error] crasher: initial call: gen_rpc_client:init/1, pid: <0.20512837.0>, registered_name: , exit: {{badrpc,econnrefused},[{gen_server,init_it,6,[{file,“gen_server.erl”},{line,961}]},{proc_lib,init_p_do_apply,3,[{file,“proc_lib.erl”},{line,241}]}]}, ancestors: [gen_rpc_client_sup,gen_rpc_sup,<0.2165.0>], message_queue_len: 0, messages: , links: [<0.2171.0>], dictionary: , trap_exit: true, status: running, heap_size: 1598, stack_size: 28, reductions: 3754; neighbours:
2025-07-29T16:30:35.574935+08:00 [error] event=connect_to_remote_server, peer=emqx@13.0.0.4, port=5369, reason=econnrefused
2025-07-29T16:30:35.575134+08:00 [error] crasher: initial call: gen_rpc_client:init/1, pid: <0.20512838.0>, registered_name: , exit: {{badrpc,econnrefused},[{gen_server,init_it,6,[{file,“gen_server.erl”},{line,961}]},{proc_lib,init_p_do_apply,3,[{file,“proc_lib.erl”},{line,241}]}]}, ancestors: [gen_rpc_client_sup,gen_rpc_sup,<0.2165.0>], message_queue_len: 0, messages: , links: [<0.2171.0>], dictionary: , trap_exit: true, status: running, heap_size: 1598, stack_size: 28, reductions: 3754; neighbours:
2025-07-29T16:30:35.578916+08:00 [error] event=connect_to_remote_server, peer=emqx@13.0.0.4, port=5369, reason=econnrefused

有这些错误日志

这个日志说明你的集群之间的 rpc 没通。


把这个端口也开放了。

1 个赞

嗯嗯谢谢