环境
- EMQX 版本:5.0.24
- 操作系统版本:
重现此问题的步骤
使用一段时间后,偶现
客户端授权为redis集群模式:
使用一段时间后redis状态变为断开
需要调查一下 EMQX 的日志。
这是之前看到的错误日志:
2023-04-21T08:36:04.306161+00:00 [error] msg: health_check_exception, mfa: emqx_resource_manager:parse_health_check_result/2, line: 614,
reason: {error,badarg,[{gproc,get_value,[{p,l,{gproc_pool,{ecpool,<<“2963273593_10.30.39.140#6379”>>}}},shared],[{file,“gproc.erl”},{line,1584}]},{gproc_pool,pick_worker,1,[{file,“gproc_pool.erl”},{line,314}]},{ecpool,pick_and_do,3,[{file,“ecpool.erl”},{line,105}]},{eredis_cluster_pool,transaction,2,[{file,“eredis_cluster_pool.erl”},{line,44}]},{eredis_cluster,query,4,[{file,“eredis_cluster.erl”},{line,122}]},{lists,map,2,[{file,“lists.erl”},{line,1243}]},{eredis_cluster,ping_all,1,[{file,“eredis_cluster.erl”},{line,131}]},{emqx_connector_redis,on_get_status,2,[{file,“emqx_connector_redis.erl”},{line,233}]},{emqx_resource,call_health_check,3,[{file,“emqx_resource.erl”},{line,365}]},{emqx_resource_manager,with_health_check,2,[{file,“emqx_resource_manager.erl”},{line,564}]},{gen_statem,loop_state_callback,11,[{file,“gen_statem.erl”},{line,1205}]},{proc_lib,init_p_do_apply,3,[{file,“proc_lib.erl”},{line,226}]}]}, resource_id: <<“emqx_authz_redis:1”>>
2023-04-21T08:36:04.309533+00:00 [warning] msg: alarm_is_activated, mfa: emqx_alarm:do_actions/3, line: 416, message: <<“resource down: emqx_authz_redis:1”>>, name: <<“emqx_authz_redis:1”>>
在 emqx 执行健康检查是执行 对 redis cluster 所有节点 ping 操作来实现的
ping 的时候失败了,所以认为 redis authz 挂了
redis 资源有什么特殊的么,是公有云服务还是自建的,用其他 redis 客户端会出现过一会就断开连接的情况么。
redis集群是使用的公有云,我们业务服务也有使用这个redis集群,但是没出现过这个情况。这个断开的频率也没那么频繁,这两三个月有出现过两三次。之前我们有使用过emqx4的版本,配置的是授权是主从的redis,没出现过这个授权断开的情况。
EMQX-4.x 使用的 authz_redis 和当前 EMQX 5.0.25 使用的是同一个 redis 集群?
那为什么 4.x 要使用主从模式配置,5.0.25 要使用 cluster 模式呢
EMQX-4.x和EMQX 5.0.25使用的不是同一个集群。4.x是老项目使用主从,5.0.24新项目都改成集群redis了
请问这个问题会在新版本中修复嘛
我们在AWS上部署也碰到了这个问题,使用得AWS公有云Redis Cluster