配置文件
sentinel.conf
最小的配置
每一个哨兵都可以去监控多个maser-slaves的主从架构
因为可能你的公司里,为不同的项目,部署了多个master-slaves的redis主从集群
相同的一套哨兵集群,就可以去监控不同的多个redis主从集群
你自己给每个redis主从集群分配一个逻辑的名称
# sentinel monitor master-group-name hostname port quorum
sentinel monitor mymaster 127.0.0.1 6379 2
#down-after-milliseconds,超过多少毫秒跟一个redis实例断了连接,哨兵就可能认为这个redis实例挂了
sentinel down-after-milliseconds mymaster 60000
# failover-timeout,执行故障转移的timeout超时时长
sentinel failover-timeout mymaster 180000
# parallel-syncs,新的master别切换之后,同时有多少个slave被切换到去连接新master,重新做同步,数字越低,花费的时间越多
sentinel parallel-syncs mymaster 1
正式的配置
哨兵默认用26379端口,默认不能跟其他机器在指定端口连通,只能在本地访问
mkdir /etc/sentinal
mkdir -p /var/sentinal/5000
/etc/sentinel/5000.conf
port 5000
bind 10.211.55.30
dir /var/sentinal/5000
sentinel monitor mymaster 10.211.55.30 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
port 5000
bind 10.211.55.31
dir /var/sentinal/5000
sentinel monitor mymaster 10.211.55.30 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
port 5000
bind 10.211.55.32
dir /var/sentinal/5000
sentinel monitor mymaster 10.211.55.30 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
启动哨兵进程
在 cache01、 cache02、 cache03三台机器上,分别启动三个哨兵进程,组成一个集群,观察一下日志的输出
redis-sentinel /etc/sentinal/5000.conf
redis-server /etc/sentinal/5000.conf --sentinel
日志里会显示出来,每个哨兵都能去监控到对应的redis master,并能够自动发现对应的slave
如果没有发现,那可能是没有设置sentinel auth-pass mymaster master-pass
哨兵之间,互相会自动进行发现,用的就是之前说的pub/sub,消息发布和订阅channel消息系统和机制
检查哨兵状态
redis-cli -h 10.211.55.30 -p 5000
sentinel master mymaster
SENTINEL slaves mymaster
SENTINEL sentinels mymaster
SENTINEL get-master-addr-by-name mymaster