Redis Sentinel rename-command配置被忽略 原命令仍可执行问题咨询
问题原因
配置语法错误
你当前使用的sentinel rename-command mymaster FAILOVER failover-secret语法,作用是重命名Sentinel和名为mymaster的后端Redis主节点交互时使用的FAILOVER命令,而非重命名Sentinel自身对外暴露的SENTINEL FAILOVER管理命令,因此对外部调用Sentinel命令的场景完全不生效。
Sentinel自身对外提供的管理命令的重命名配置不需要指定监控的主实例名称,你错误添加的mymaster参数导致配置指向了错误的生效范围,自然无法限制外部用户调用Sentinel的FAILOVER命令。配置未正确加载
Sentinel的命令重命名配置属于启动时加载的静态配置,修改配置文件后如果没有重启Sentinel进程,配置不会生效。
解决方案
- 第一步:修改所有Sentinel节点的配置文件,替换原有错误配置为正确的重命名规则:
sentinel rename-command FAILOVER failover-secret
如果需要完全禁用该命令,可将自定义命令名设置为空字符串:
sentinel rename-command FAILOVER ""
- 第二步:逐台滚动重启Sentinel节点(优先重启不绑定主节点的Sentinel实例,最后重启绑定当前主节点的Sentinel实例,避免集群状态感知异常)
- 第三步:验证配置生效效果,重启完成后原命令调用会返回未知命令错误,仅自定义命令可正常执行:
# 原命令调用报错 127.0.0.1:26379> sentinel failover mymaster (error) ERR unknown command 'FAILOVER' # 自定义命令可正常执行 127.0.0.1:26379> sentinel failover-secret mymaster OK
补充说明
你使用的Redis 6.0+版本已支持Sentinel ACL权限控制,相比命令重命名,ACL可实现更精细的用户权限、访问IP、可执行命令范围控制,有复杂权限管控需求时可优先使用ACL方案。
内容的提问来源于stack exchange,提问作者Moaath
相关产品推荐
相关产品推荐

