哨兵模式
哨兵:sentinel
主从架构中,master节点挂掉后,slave节点依旧不能转变为master节点,这样整个redis集群依然不具有写操作,那么该如何解决这个问题呢?
此时就可以配置一个哨兵集群,用户监控redis集群
一、哨兵配置文件: sentinel.conf
<!-- 绑定一个对外(公网)暴露的ip,以保证在一个特定的计算机节点进行访问 -->
bind 127.0.0.1 192.168.1.1
<!-- 保护模式是否开启,为no时保证其他节点都能访问这个哨兵 -->
protected-mode no
<!-- 哨兵的端口,默认26379 -->
port 26379
<!-- 哨兵是否后台运行 -->
daemonize yes
<!-- pid -->
pidfile /var/run/redis-sentinel.pid
<!-- 哨兵的日志文件路径 -->
logfile /usr/local/redis/sentinel/redis-sentinel.log
<!-- 哨兵的工作空间 -->
dir /usr/local/redis/sentinel
<!--
核心配置
allen-master是给哨兵给master节点起的别称,可自定义
127.0.0.1为redis的master的ip
6379为redis的master的端口号
2为quorum,表示至少有2个哨兵ping不通master时,即表示master节点挂掉了
-->
sentinel monitor allen-master 127.0.0.1 6379 2
<!-- 设置master节点的密码 -->
sentinel auth-pass allen-master allen_password
<!-- 哨兵为master节点设置的一个被认为失效的一个时长 -->
sentinel down-after-milliseconds allen-master 30000
<!-- 设置slave节点变为master节点后,向其他slave节点同步数据的并行同步的数量,1表示一次只向一个slave节点同步,如果为2则表示一次向2个slave节点同步 -->
sentinel parallel-syncs allen-master 1
<!-- 主备切换的超时时间,如果切换超时,则会由集群中的其他哨兵进行主备切换,默认为3分钟 -->
sentinel failover-timeout allen-master 180000
二、启动redis的哨兵
redis-sentinel sentinel.conf
- 当master节点挂掉后,所有的slave节点会进行选举,选举出来一个节点作为新的master节点,同时会想其他slave节点同步数据,并行同步的slave节点的数量可以在sentinel.conf配置文件中配置。
- 当旧的master节点重启后,会自动转为slave节点,选举出来的master节点不发生变化。
一般master数据无法同步给slave的方案检查为如下:
- 网络通信问题,要保证互相ping通,内网互通。
- 关闭防火墙,对应的端口开发(虚拟机中建议永久关闭防火墙,云服务器的话需要保证内网互通)。
- 统一所有的密码,不要漏了某个节点没有设置。
三、使用哨兵相关的命令查看哨兵的信息
<!-- 打开哨兵控制台 -->
redis-cli -p 26379
<!-- 查看allen-master下的master节点信息 -->
sentinel master allen-master
<!-- 查看allen-master下的slave节点信息 -->
sentinel slaves allen-master
<!-- 查看allen-master下的哨兵节点信息 -->
sentinel sentinels allen-master
四、部署约定
-
redis的slave节点最好设置为奇数,最少节点数为3个,经典的配置为一主三从。
quorum数为:节点数 / 2 + 1 -
哨兵分布式部署在不同的计算机节点。
-
一组哨兵只监听一组主从。
五、springboot整合哨兵
redis:
<!-- Redis 单机单实例 -->
<!-- database:1 -->
<!-- host:192.168.1.190 -->
<!-- port:6379 -->
<!-- password:allen -->
<!-- Redis 哨兵模式 -->
database:1
password:allen
sentinel:
master:allen-master
nodes:192.168.1.191:26379,192.168.1.192:26379,192.168.1.193:26379
网友评论