win环境下Springboot2.x整合redis的sentinel集群(哨兵模式)

目录

一、前提工作

二、redis的sentinel集群配置

2.1 redis服务端配置 

2.1.1 redis主从配置

 2.1.2 sentinel哨兵配置 

2.2 redis客户端配置

 三、参考链接

一、前提工作

在配置sentinel集群之前需要在springboot中已经整合好redis,并了解redis集群的相关概念。由于此篇文章的重点是讲解如何配置sentinel集群,所以就不在赘述redis与springboot的整合,而且相关博客也可以很容易查询到。

二、redis的sentinel集群配置

redis集群目前有两种实现方案,sentinel集群(哨兵模式)和cluster集群(分片模式),其中cluster集群只在redis4.x以后的版本支持。本文主要讲解sentinel集群配置,cluster集群配置待博主研究后再编写。

既然说到redis集群,那么要启动的redis实例肯定不止一个,本文采用的是一主两从三哨兵的架构, 读者可以根据自身实际情况决定主从和哨兵的数量。

2.1 redis服务端配置 

reids服务端配置主要是完成redis主从配置和sentinel的哨兵模式配置。

2.1.1 redis主从配置

首先在redis安装目录下找到redis的配置文件redis.windows.conf(linux环境下是redis.conf)。由于redis采用一主两从的模式,需要三个reids实例分别监听6379、6380和6381端口,所以将redis.windows.conf再复制两份,并将三份配置文件分别命名为redis.windows_6379.conf、redis.windows_6380.conf和redis.windows_6381.conf以示区分。

 

 1、主redis配置(本文以6379端口为主redis)

在6379端口redis的配置文件中找到以下三个配置项:

bind          #绑定的ip地址
port          #监听的端口号
requirepass   #主redis的访问密码,此项选配,不配置就不需要密码直接访问主redis

将上述三项修改如下:

bind 127.0.0.1        #本机测试,以主redis所在的实际服务器ip为准
port 6379             #监听本机的6379端口
requirepass root6379  #主redis的访问密码是root6379

 2、从redis配置

以6380端口为例,在6380端口redis的配置文件中找到以下五个配置项:

bind          #绑定的ip
port          #监听的端口号
requirepass   #从redis的访问密码
slaveof       #从属的主reids所绑定的ip和端口号
masterauth    #从属的主reids的访问密码,若主redis未配置访问密码,则此项不配置

将上述五项修改如下:

bind 127.0.0.1          #绑定本机测试,以从redis实际所在的服务器ip为准
port 6380               #监听6380端口
requirepass root6379    #从redis的访问密码是root6379
slaveof 127.0.0.1 6379  #从属于本地端口号为6379的redis
masterauth  root6379    #从属的主reids的访问密码是root6379

依次类推6381端口号redis的配置文件也做相应修改。

至此我们已经完成redis的一主两从的配置,在控制台中执行以下命令可以分别启动三个redis。

./redis-server.exe redis.windows_6379.conf
./redis-server.exe redis.windows_6380.conf
./redis-server.exe redis.windows_6381.conf

主reids6379的控制台信息如下:

win环境下Springboot2.x整合redis的sentinel集群(哨兵模式)_第1张图片

从reids6380、6381控制台信息如下: 

win环境下Springboot2.x整合redis的sentinel集群(哨兵模式)_第2张图片

也可以登录客户端,查看主从配置信息,在命令行输入以下命令:

./redis-cli.exe -h 127.0.0.1 -p 6379
./redis-cli.exe -h 127.0.0.1 -p 6380
./redis-cli.exe -h 127.0.0.1 -p 6381

再输入

info replication

查看控制台信息  

win环境下Springboot2.x整合redis的sentinel集群(哨兵模式)_第3张图片

 2.1.2 sentinel哨兵配置 

由于sentinel目前不支持windows配置,所以我们需要自己创建配置文件(linux环境下有sentinel.conf)。我们是三哨兵的模式,所以我们创建三份配置文件,分别命名为sentinel_26379.conf、sentinel_26380.conf 和sentinel_26381.conf。

以sentinel_26379.conf为例,在文件中加入以下配置项:

# 当前Sentinel服务运行的端口
port 26379

# Sentinel去监视一个名为mymaster的主redis实例
# 这个主实例的IP地址为本机地址127.0.0.1,端口号为6379
# 当这个主redis实例宕机时,至少需要两个sentinel实例同意以后,才可以下线此主redis实例
sentinel monitor mymaster 127.0.0.1 6370 2

# 设置连接master和slave时的密码
# 注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同
sentinel auth-pass mymaster root6379

# 指定需要多少失效时间,一个master才会被这个sentinel主观地认为是不可用的
# 单位是毫秒,默认为30秒
sentinel down-after-milliseconds mymaster 5000

# 指定在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步
# 这个数字越小,完成failover所需的时间就越长
# 但是如果这个数字越大,就意味着越多的slave因为replication而不可用
# 可以通过将这个值设为1来保证每次只有一个slave 处于不能处理命令请求的状态。
sentinel parallel-syncs mymaster 1

# 执行故障迁移超时时间,即在指定时间内没有大多数的sentinel 反馈master下线,该故障迁移计划则失效
sentinel failover-timeout mymaster1 20000

一次类推增加26380和26381端口号的sentinel配置文件,然后执行以下命令分别启动三个哨兵。

./redis-server.exe sentinel_26379.conf --sentinel
./redis-server.exe sentinel_26380.conf --sentinel
./redis-server.exe sentinel_26381.conf --sentinel

启动完成后,sentinel26379的控制台信息如下:

win环境下Springboot2.x整合redis的sentinel集群(哨兵模式)_第4张图片

其他两个sentinel的控制台信息也是相同的,也可以登录redis客户端检查sentinel是否完成通信。

在命令行输入以下命令登录客户端:

./redis-cli -h 127.0.0.1 -p 26379

再输入:

info sentinel

查看控制台信息:

 win环境下Springboot2.x整合redis的sentinel集群(哨兵模式)_第5张图片

至此我们已经完成redis服务端的所有配置。

2.2 redis客户端配置

 本文是以springboot作为客户端访问redis,所以在springboot的yml文件中作如下配置:

spring:
  #redis配置
  redis:
# 注释掉单击的redis配置,只保留密码部分
#    host: 127.0.0.1
#    port: 6380
     password: "root6379"
# 增加哨兵的配置
   sentinel:
# 与sentinel.conf中保持一致命名
      master: mymaster
      nodes: 127.0.0.1:26380,127.0.0.1:26381,127.0.0.1:26382

至此redis客户端配置也已经完成,由于篇幅限制,读者可以自行测试,笔者自己本机测试是没有问题的。

 三、参考链接

 https://www.cnblogs.com/ruiati/p/6374152.html

https://www.iteye.com/blog/lixiaohui-2315516 

https://www.cnblogs.com/kevingrace/p/9004460.html

 

 

 

 

 

你可能感兴趣的:(redis)