Redis Enterprise中CRDB同步器无法同步成员:连接CRDB成员失败
排查CRDB同步连接失败的进阶方案
1. 核查TLS配置(若启用)
- 要是集群开了TLS,得确认同步用的证书在所有CRDB成员间都有效:
- 用
redis-cli -h <目标节点IP> -p <CRDB端口> --tls --cacert <CA证书路径> --cert <客户端证书路径> --key <客户端密钥路径>验证成员节点能否通过TLS连接到目标CRDB - 检查所有成员的
crdb-sync-tls配置参数是否一致,要么全启用要么全禁用TLS同步
- 用
2. 验证端口映射与监听地址
- 确认CRDB实例没只绑定
localhost或内部私有IP:- 在成员节点执行
redis-cli config get bind,查看返回地址是否包含集群内可访问的IP - 检查节点防火墙是否放行CRDB的同步专用端口(默认12000-13000区间,可通过
rladmin status查具体实例端口)
- 在成员节点执行
- 用
telnet <目标节点IP> <CRDB同步端口>或nc -zv <目标节点IP> <CRDB同步端口>测试端口连通性,注意这是同步专用端口,不是普通Redis服务端口
3. 检查同步器权限与身份验证
- 若CRDB启用了ACL,确认同步器用的用户有这些权限:
CRDB-SYNC、REPLICATION、CONFIG - 执行
redis-cli config get requirepass和redis-cli config get aclfile,核对同步配置里的密码/ACL用户是否匹配 - 查看成员节点的
/var/opt/redislabs/log/redis_<实例ID>.log日志,找带CRDB sync或connection refused的条目,定位具体认证失败原因
4. 排查集群元数据一致性
- 执行
rladmin crdb status <CRDB名称>,检查所有成员状态是否为active,元数据是否一致 - 尝试重启CRDB同步器进程:在成员节点执行
supervisorctl restart redislabs_crdb_sync_<实例ID>(替换成实际实例ID) - 若元数据不一致,可执行
rladmin crdb rebalance <CRDB名称>重新同步集群元数据
5. 检查系统级限制
- 查看成员节点文件描述符限制:执行
ulimit -n,确保值不低于65535(Redis Enterprise推荐值) - 检查
sysctl参数:确认net.core.somaxconn至少设为1024,net.ipv4.tcp_tw_reuse已启用 - 查看
/var/log/messages或/var/log/syslog系统日志,找是否有网络栈相关错误(比如TCP连接被重置、端口耗尽)
内容的提问来源于stack exchange,提问作者Aditya Mishra
相关产品推荐
相关产品推荐

