一、简介
所谓的哨兵模式就是redis主从复制的自动版,可以理解为主从复制是手动挡,节点挂了得手动维护;哨兵模式,则监控主机是否正常,不正常,根据投票自动将从机升为主机。
哨兵模式,master宕机后恢复的变化
二、配置哨兵
这里为了简单只配置一个哨兵,时间生产环境可能多个,且哨兵占用资源极小。在redis启动目录bin下创建sentinel.conf,配置如下:
sentinel monitor master IP 6379 1
sentinel auth-pass master yourpassword
上述的master随便自定义,最后的数字1表示有几个哨兵同意主机宕机了,这里只有一个哨兵就写个1,如果您的master要求认证密码请输入你密码,否则哨兵连接不上也不报密码错误
- 启动哨兵
显示哨兵知道master上连接上两个slave
- 关闭master
关闭master后哨兵不上立即切换主从,而是等待几秒,在从slave中找一个切换为master
三、故障恢复策略
- 选择优先级靠前的slave,具体在slave的redis.conf可以配置
- 选择数据较多的slave
- 选择runnid最大的slave(每个slave启动均会有一个40位的runnid)
四、java端如何连接
new JedisSentinelPool("master",set,config);
解释:第一个参数就是你配置的哨兵监听主机的名称;第二个参数是哨兵集合,原则上随便一个哨兵都可以,建议都加上,防止单个哨兵故障,拿不到redis连接;第三个参数就是所有线程池都有的配置,如连接最大空闲时间等。