Redis哨兵机制的实现及与SpringBoot的整合

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干货。