1. 概述
前面我们聊过Redis的读写分离机制,这个机制有个致命的弱点,就是主节点(Master)是个单点,如果主节点宕掉,整个Redis的写操作就无法进行服务了。
为了解决这个问题,就需要依靠“哨兵”,今天我们就来聊聊哨兵机制如何实现,且如何与SpringBoot进行整合。
2. 场景描述
主服务器IP:192.168.1.144
从服务器A IP:192.168.1.22
从服务器B IP:192.168.1.8
这三台服务器上都已经安装好了Redis环境,安装方法参见我的另一篇文章《Redis的安装、基本使用以及与SpringBoot的整合》。
这三台服务器也搭建好了读写分离(主从复制)的机制,搭建方法参见我的另一篇文章《Redis的读写分离》。
分别在这三台机器上,配置哨兵,实现高可用。
注意:哨兵节点的个数一定是奇数,否则会出问题。
3. Redis哨兵机制的实现
上述的3台服务器都需要配置哨兵,配置方法相同。
3.1 进入Redis的安装目录
# cd /home/redis-6.2.5
3.2 拷贝哨兵配置文件到Redis工作目录
# cp sentinel.conf /usr/local/redis/
3.3 修改哨兵配置文件
# cd /usr/local/redis/
# vim sentinel.conf
3.4 配置文件修改细节
sentinel monitor zhuifengren-master 192.168.1.144 6379 2
最后一个参数 2,根据哨兵的节点计算,公式为 N/2 + 1,N代表哨兵节点数量,例如:哨兵节点数量是3,则这里设置为 2
3.5 为哨兵创建工作目录
# cd /usr/local/redis/
# mkdir sentinel
3.6 主节点的Redis配置中,增加Redis的密码
# cd /usr/local/redis/
# vim redis.conf
3.7 启动哨兵
3台Redis服务器的哨兵配置是一样的,配置好后,我们来启动3台服务器上的哨兵。
# cd /usr/local/redis
# redis-sentinel sentinel.conf
此时哨兵机制就搭建完成,当Master宕掉,其中一台Slave会升级成Master处理写服务。
4. 与SpringBoot整合
在之前的基础上修改yml文件即可
spring: redis: database: 1 password: zhuifengren sentinel: master: zhuifengren-master nodes: 192.168.1.144:26379,192.168.1.22:26379,192.168.1.8:26379
5. 综述
今天我们聊了一下Redis的哨兵机制,以及如何与SpringBoot进行整合,希望能对大家有所帮助。
希望大家多多评论交流,共同成长。
关注追风人聊Java,每天更新Java干货。