redis sentinel使用中 常见问题问答

1.redis sentinel 如何配置运行?

redis sentinel 的配置很简单,这里以最小化的运行环境:一个sentinel,2个redis-serve 为例进行说明

第一步,启动redis-server

 

redis-server  --port 10001
redis-server  --port 10002

第二步,将第二个redis-server 设置为slave

redis-cli -p 10002
slaveof 127.0.0.1 10001

第三步 ,   redis sentinel 启动配置

port 5000  
sentinel monitor mymaster 127.0.0.1 10001 1
sentinel down-after-milliseconds test_master 1000
daemonize yes
logfile "./redis_sentinel.log"

3.1  将sentinel 端口设置为5000,且指定监控的redis master ip+端口,有一个sentin检测到redis 不可以用就可以切换(因只有一个sentinel,可以根据环境动态修改)

3.2 redis.conf 的很多配置再sentinel使可以直接使用的,这里我设置daemonize yes 让它后台启动,并且用logfile 指定sentinel 的记录日志文件路径

第四步, 停止 master redis,测试redis sentinel功能是否正常运行

redis-cli -p 10001 shutdown

第五步:redis sentinel 运行状态查看

在redis sentinel 同一级目录下可以看到redis_sentinel.log文件。

此文件记录sentinel运行日志,详细描述了redis sentinel检测到故障并切换的流程。

也可以通过 redis-cli 查看master目前的状态:

redis-cli -p 5000 sentinel masters

2. 写入数据至redis,报错:(error) READONLY You can’t write against a read only slave.

redis slave实例使不能进行写操作的,例如set,hset,lpush 都不能执行成功的

3.在master  redis  写入数据,报错:(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

因启动没有指定配置文件,执行:

redis-cli -p 10001 config set stop-writes-on-bgsave-error no

此配置打开后会造成保存数据至磁盘失败则停止写入,关闭此配置即可解决。

4.redis sentinel 在master 挂掉后没有切换至原slave。

可能没有指定slave 或 slave  也挂掉了

5.php如何检测redis sentinel的主从切换

检测切换对所有客户端是一样的,订阅redis sentinel 事件既可以收到通知

redis-cli -p 5000 
psubscribe * 

php客户端会收到所有sentinel发布(publish)事件,其中如收到”+switch-master” 事件说明master已进行 了切换,这时候php 做为客户端就应该更新链接redis的配置了。

 

 

 

 

作者: 白金马桶

天道酬勤...

发表评论