首页 > 作文

Springboot Redis 哨兵模式的实现示例

更新时间:2023-04-04 14:05:30 阅读: 评论:0

目录
redis配置redis.conf配置ntinel.conf配置springboot整合测试模拟redis宕机

redis配置

redis.conf配置

由于服务器资源有限,我这里通过配置不同端口,模拟redis集群,redis-rver占用6379、6380、6381端口,redis-ntinel占用26379、26380、26381端口。

首先准备3份redis配置文件,分别取名redis6379.conf,redis6380.conf,redis6381.conf

redis6379.conf,6379端口作为master,需要修改的配置如下

protected-mode no #设置为no,其他ip才可以访问port 6379 #端口daemonize yes pidfile "/var/run/redis_6379.pid"logfile "6379.log" #日志,若redis分布在不同服务器,不用修改dbfilename "dump6379.rdb" #数据,若redis分布在不同服务器,不用修改masterauth "admin123/*-" #从节点访问主节点时需要的密码requirepass "admin123/*-" #redis密码,应用访问redis时需要

redis6380.conf,6380端口作为slave,需要设置主节点ip和port,需要修改的配置如下:

protected-mode no #设置为no,其他ip才可以访问port 6380 #端口daemonize yes pidfile "/var/run/redis_6380.pid"logfile "6380.log" #日志,若redis分布在不同服务器,不用修改dbfilename "dump6380.rdb" #数据,若redis分布在不同服务器,不用修改replicaof 192.168.1.1 6379  #标记主节点ip+端口,ip设置为自己服务器ip地址即可masterauth "admin123/*-" #从节点访问主节点时需要的密码requirepass "admin123/*-" #redis密码,应用访问redis时需要

备注:slaveof 192.168.1.1 6379,这里需要设置成你自己的ip,可实现redis 复制功能

redis6381.conf,6381端口作为slave,同上,需要修改的配置如下:

protected-mode no #设置为no,其他ip才可以访问port 6381 #端口daemonize yes pidfile "/var/run/redis_6381.pid"logfile "6381.log" #日志,若redis分布在不同服务器,不用修改dbfilename "dum土木类专业p6381.rdb" #数据,若redis分布在不同服务器,不用修改replicaof 192.168.1.1 6379  #标记主节点ip+端口,ip设置为自己服务器ip地址即可masterauth "admin123/*-" #从节点访问主节点时需要的密码requirepass "admin123/*-" #redis密码,应用访问redis时需要

ntinel.conf配置

准备3分ntinel.conf配置文件,分别为ntinel26379.conf、ntinel26380.conf、ntinel26381.conf。

ntinel26379.conf,26379端口作为哨兵1,需要修改配置如下

port 26379 #端口daemonize yes   pidfile "/var/run/redis-ntinel26379.pid"logfile "/usr/local/bin/ntinellogs/ntinel_26379.log"#配置指示 ntinel 去监视一个名为 mymaster 的主节点, 主节点的 ip 地址为 127.0.0.1 , 端口号为 6379 ,#而将这个主服务器判断为失效至少需要 2 个 ntinel 同意 (只要同意 ntinel 的数量不达标,自动故障迁移就不会执行)ntinel monitor mymaster 192.168.1.1 6379 2 ntinel auth-pass mymaster admin123/*-   #哨兵访问主节点密码protected-mode no

ntinel26380.conf,26380端口作为哨兵2,需要修改配置如下

port 26380 #端口daemonize yes  疫情防控主题班会记录内容 pidfile "/var/run/redis-ntinel26380.pid"logfile "/usr/local/bin/ntinellogs/ntinel_26380.log"#配置指示 ntinel 去监视一个名为 mymaster 的主节点, 主节点的 ip 地址为 127.0.0.1 , 端口号为 6379 ,#而将这个主服务器判断为失效至少需要 2 个 ntinel 同意 (只要同意 ntinel 的数量不达标,自动故障迁移就不会执行)ntinel monitor mymaster 192.168.1.1 6379 2 ntinel auth-pass mymaster admin123/*-   #哨兵访问主节点密码protected-mode no

ntinel26381.conf,26381端口作为哨兵3,需要修改配置如下

port 26381 #端口daemonize yes   pidfile "/var/run/redis-ntinel26381.pid"logfile "/usr/local/bin/ntinellogs/ntinel_26381.log"#配置指示 ntinel 去监视一个名为 mymaster 的主节点, 主节点的 ip 地址为 127.0.0.1 , 端口号为 6379 ,#而将这个主服务器判断为失效至少需要 2 个 ntinel 同意 (只要同意 ntinel 的数量不达标,自动故障迁移就不会执行)ntinel monitor mymaster 192.168.1.1 6379 2 ntinel auth-pass mymaster admin123/*-   #哨兵访问主节点密码protected-mode no

启动redis-rver,redis-ntinel

[root@vm-20-5-centos bin]# redis-rver redis6379.conf [root@vm-20-5-centos bin]# redis-rver redis6380.conf [root@vm-20-5-centos bin]# redis-rver redis6381.conf[root@vm-20-5-centos bin]# redis-ntinel ntinel_26379.conf [root@vm-20-5-centos bin]# redis-ntinel ntinel_26380.conf [root@vm-20-5-centos bin]# redis-ntinel ntinel_26381.conf 

查看状态,如下图所示,即为启动成功

 [root@vm-20-5-centos mconfig]# redis-cli -p 26379127.0.0.1:26379> ntinel masters1)  1) "name"    2) "mymaster"    3) "ip"    4) "192.168.1.1"    5) "port"    6) "6379"    7) "runid"   127.0.0.1:26379> ntinel slaves mymaster1)  1) "name"    2) "192.168.1.1:6381"    3) "ip"    4) "192.168.1.1"    5) "port"    6) "6381"    7) "runid"    8) ""    2)  1) "name"    2) "192.75.218.240:6380"    3) "ip"    4) "192.75.218.240"    5) "port"    127.0.0.1:26379> 

springboot整合

导入包

<dependency>    <groupid>org.springframework.boot</groupid>    <artifactid>spring-boot-starter-data-redis</artifactid></dependency>

properties配置

spring.redis.host=192.168.1.1spring.redis.port=6379spring.redis.password=admin123/*-spring.redis.ntinel.master=mymasterspring.redis.ntinel.password=admin123/*-spring.redis.ntinel.nodes=192.168.1.1:26379,192.168.1.1:26380,192.168.1.1:26381

测试

代码示例

package com.mx.learnredis.controller;import org.junit.jupiter.api.test;import org.springframework.beans.factory.annotation.autowired;import org.springframework.beans.factory.annotation.qualifier;import org.springframework.boot.test.context.springboottest;import org.springframework.data.redis.core.redistemplate;import java.util.date;@springboottestclass urcontrollertest {  @autowired  @qualifier("redistemplate")  private redistemplate redistemplate;  @test  public void test() throws interruptedexception {    redistemplate.opsforvalue().t("ur", "xx");    while (true)    {      thread.sleep(2000);      system.out.println("time "+new date()+":" +redistemplate.opsforvalue().get("ur"));    }  }}

模拟redis宕机

idea控制台输出:

time sat jan 08 20:09:12 cst 2022:xx
time sat jan 08 20:09:14 cst 2022:xx
time sat jan 08 20:09:16 cst 2022:xx
time sat jan 08 20:09:18 cst 2022:xx
time sat jan 08 20:09:20 cst 2022:xx
time sat jan 08 20:09:22 cst 2022:xx

关闭掉主节点防腐工程管道,登录linux服务器

[root@vm-20-5-centos mconfig]# ps -ef|grep redisroot   27881   1 0 17:19 ?    00:00:12 redis-rver *:6380root   27997   1 0 17:20 ?    00:00:17 redis-ntinel *:26379 [ntinel]root   28017   1 0 17:20 ?    00:00:17 redis-ntinel *:26380 [ntinel]root   28030   1 0 17:20 ?    00:00:17 redis-ntinel *:26381 [ntinel]root   28471   1 0 20:13 ?    00:00:00 redis-rver *:6381root   28664   1 0 17:23 ?    00:00:12 redis-rver *:6379root   28753 11813 0 20:14 pts/1  00:00:00 grep --color=auto redis[root@vm-20-5-centos mconfig]# kill -9 28664[root@vm-20-5-centos mconfig]#

idea控制台输出,可看到重连日志,success

time sat jan 08 20:15:02 cst 2022:xx
time sat jan 08 20:15:04 cst 2022:xx
2022-01-08 20:15:05.010 info 7216 不能进入路由器— [xecutorloop-1-3] i.l.core.protocol.connectionwatchdog : reconnecting, last destination was /192.168.1.1:6379
2022-01-08 20:15:07.211 warn 7216 — [ioeventloop-4-4] i.l.core.protocol.connectionwatchdog : cannot reconnect to [192.168.1.1:6379]: connection refud: no further information: /192.168.1.1:6379
2022-01-08 20:15:11.920 info 7216 — [xecutorloop-1-2] i.l.core.protocol.connectionwatchdog : reconnecting, last destination was 192.168.1.1:6379
2022-01-08 20:15:14.081 warn 7216 — [ioeventloop-4-2] i.l.core.protocol.connectionwatchdog : cannot reconnect to [192.168.1.1:6379]: connection refud: no further information: /192.168.1.1:6379
2022-01-08 20:15:18.617 info 7216 — [xecutorloop-1-4] i.l.core.protocol.connectionwatchdog : reconnecting, last destination was 192.168.1.1:6379
2022-01-08 20:15:20.767 warn 7216 — [ioevent游山西村诗意loop-4-4] i.l.core.protocol.connectionwatchdog : cannot reconnect to [192.168.1.1:6379]: connection refud: no further information: /192.168.1.1:6379
2022-01-08 20:15:26.119 info 7216 — [xecutorloop-1-2] i.l.core.protocol.connectionwatchdog : reconnecting, last destination was 192.168.1.1:6379
2022-01-08 20:15:28.278 warn 7216 — [ioeventloop-4-2] i.l.core.protocol.connectionwatchdog : cannot reconnect to [192.168.1.1:6379]: connection refud: no further information: /192.168.1.1:6379
2022-01-08 20:15:33.720 info 7216 — [xecutorloop-1-2] i.l.core.protocol.connectionwatchdog : reconnecting, last destination was 192.168.1.1:6379
2022-01-08 20:15:35.880 warn 7216 — [ioeventloop-4-2] i.l.core.protocol.connectionwatchdog : cannot reconnect to [192.168.1.1:6379]: connection refud: no further information: /192.168.1.1:6379
2022-01-08 20:15:40.020 info 7216 — [xecutorloop-1-4] i.l.core.protocol.connectionwatchdog : reconnecting, last destination was 192.168.1.1:6379
2022-01-08 20:15:40.160 info 7216 — [ioeventloop-4-4] i.l.core.protocol.reconnectionhandler : reconnected to 192.168.1.1:6381
time sat jan 08 20:15:06 cst 2022:xx

到此这篇关于springboot redis 哨兵模式的实现示例的文章就介绍到这了,更多相关springboot redis 哨兵模式内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 14:05:28,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/8f93e6f38c5c351418b8c14853a10ef6.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Springboot Redis 哨兵模式的实现示例.doc

本文 PDF 下载地址:Springboot Redis 哨兵模式的实现示例.pdf

标签:节点   端口   哨兵   服务器
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图