Redis 哨兵模式
介绍
反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
操作步骤
使用主从模式,还是使用的一主两从的方式
创建 sentinel.conf文件
- 名字绝不能错
- 编辑文件输入:
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel
:做哨兵monitor
:监控主机mymaster
:给主机起的名称127.0.0.1
:主机IP6379
:主机端口号1
:至少有多少个哨兵同意迁移的数量
- 如果你设置了连接密码需要在输入:
sentinel auth-pass mymaster 123456
(未设置密码,不用输入这行)mymaster
:主机名称和上面一样123456
:密码(填写自己的就行)
启动哨兵
执行:redis-sentinel sentinel.conf
,可以看到端口号为:26379
模拟主机宕机
将 6379 服务 shutdown,大概10秒左右可以看到哨兵窗口日志,切换了新的主机。
在重启 6379 服务,发现 6379 并未成为主,如下图所示:
复制延时
由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。
故障恢复
-
当主机宕机之后,会从从机中挑选一个转成为主机,选择条件依次为:
(1)选择优先级靠前的:优先级在redis.conf中默认:slave-priority 100,值越小优先级越高
(2)选择偏移量大的:偏移量是指获得原主机数据最全的
(3)选择 runid 最小的服务:每个redis实例启动后都会随机生成一个40位的runid -
挑选出新主机之后 sentinel 向原服务发送 slaveof 命令,复制新master
-
当宕机的服务重新上线时,sentinel会向其发送 slaveof 命令,让其成为新的主从