Redis 主从架构下,主服务器如果宕机,将会导致从服务器无法写入。如果你对Redis主从不够了解请转移到我的这篇文章中阅读,也许会对你有帮助。
如下图所示是一个Redis主从架构:

主服务器负责写入,从服务器则主动同步主服务器数据。
但是如果主Redis 宕机了,我们是否拥有一种机制,让从Redis 立刻顶替主服务器的位置实现高可用。
这就是Redis 的哨兵机制了。
哨兵机制是基于先有主从架构,后多添加的一种监听主从服务器健康状态的一种方式。
具体实现如下:
一、检查是否有哨兵的启动命令
启动 redis 哨兵与redis-cli和redis-server一样,会有一个独立的脚本文件。请自行查看redis安装目录下是否拥有 redis-sentinel 脚本。如果没有,请从自己编译安装中的目录下有一个src目录中查看,如果发现有redis-sentinel 脚本,请自行复制出来。
二、编写哨兵配置
自行创建一个文件为:sentinel.conf
编辑该文件写入
1 2 3 4 |
port 26379 sentinel monitor myMaster 127.0.0.1 6379 2 daemonize yes sentinel down-after-milliseconds myMaster 30000 |
portal 是哨兵启动的端口号
再来分析 sentinel monitor mySentinel 127.0.0.1 6379 2 这一句
其中sentinel monitor为固定写法;
[master-group-name] 监听哪一组 master 这里我命名为myMaster
[ip] 为所要连接的主机ip; (单哨兵下,这里一般写master 节点的IP)
[port] 为redis的端口号;
[quorum] 是哨兵用来判断某个 Redis 服务器是否下线的参数,表示投票需要的"最少法定人数",比如有10个sentinal哨兵都在监控某一个master节点,如果需要至少6个哨兵发现master挂掉后,才认为master真正down掉,那么这里就配置为6,最小配置1台master,1台 slave。
daemonize 是否在后台运行哨兵。(守护进程)
sentinel down-after-milliseconds mymaster 30000 代表着哨兵与master的心跳时间(毫秒),默认30秒。
三、启动哨兵
1 |
./redis-sentinel /路径/sentinel.conf |
此时,哨兵就会监听主服务器是否健康。我们手动 kill 主服务器,哨兵会自动切换某个从服务器升级为主服务器。
当先前的主服务器重新启动,它将会成为从服务器。不会挤占当前的主服务器。
并且在宕机的这段时间,如果新的主服务器写入了很多数据,刚上线Redis不会丢失该数据,他将自动同步之前不在线这段时间丢失的数据。
完。
文章评论(0)