声明要监控谁
sentinel monitor 是哨兵配置文件里的核心指令,用来声明「监控哪个主库」,参数依次是自定义的 master 名称、地址、端口和 quorum 票数。运行时也可以用 SENTINEL MONITOR 动态增加被监控对象,用 SENTINEL REMOVE 移除。动态改动只存在于内存中,必须执行 SENTINEL FLUSHCONFIG 写回配置文件,否则重启后这些变更全部丢失。
基本信息
| 配置指令 | sentinel monitor <name> <ip> <port> <quorum> |
|---|---|
| 运行时新增 | SENTINEL MONITOR <name> <ip> <port> <quorum> |
| 运行时移除 | SENTINEL REMOVE <name> |
| 落盘 | SENTINEL FLUSHCONFIG |
| 一致性要求 | 每台哨兵都必须有相同的监控配置 |
典型使用场景
- 一次性上线多套主从,用脚本批量注册监控对象并落盘
- 业务下线时移除对应监控对象,避免残留告警与无效切换
- 运维窗口内临时增设监控对象做观察,结束后移除
- 排查配置不一致:逐台对比各哨兵的监控对象清单
- 机房搬迁或地址调整时更新监控目标
增删与落盘
增删与落盘
redis-cli -p 26379 SENTINEL MONITOR app2 10.0.0.21 6379 2
redis-cli -p 26379 SENTINEL MASTERS # 列出所有监控对象
redis-cli -p 26379 SENTINEL MASTER app2 | grep -E 'flags|quorum|num-slaves'
redis-cli -p 26379 SENTINEL REMOVE app2 # 移除监控对象
redis-cli -p 26379 SENTINEL FLUSHCONFIG # 变更后立即落盘
redis-cli -p 26379 SENTINEL SENTINELS app2 # 确认各哨兵认知一致参数含义
| 参数 | 含义 | 注意 |
|---|---|---|
| name | 自定义监控对象名称 | 客户端按名称查询主库,改名要同步客户端 |
| ip 与 port | 被监控的主库地址 | 误填从库地址会让监控对象错位 |
| quorum | 确认客观下线所需票数 | 需与哨兵总数匹配,过小放大误判 |
| FLUSHCONFIG | 把运行时变更写回配置文件 | 不执行则重启后全部丢失 |
运行时变更要在所有哨兵上执行,或通过统一的配置下发完成。只改一台会造成各哨兵认知不一致,切换判定时出现互相矛盾的结果,排查起来非常费时。
被移除的监控对象如果仍留在某些哨兵的配置文件里,重启后可能被重新加载回来,出现「删了又复活」的现象。清理时要连配置文件一起改,改完再逐个核对。