redis 哨兵_Spring集成Redis哨兵配置

news/2024/7/24 7:03:38 标签: redis 哨兵, redis哨兵

什么是哨兵

Sentinel(哨兵)是用于监控Redis集群中Master状态工具,可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务宕机后,会把这个master下的某个服务升级为master来替代已宕机的master继续工作,是Redis高可用解决方案。

部署建议

哨兵节点要有至少3个或者奇数个节点(哨兵在做故障转移时,少数服从多数,选举leader)

哨兵分布式部署最好是在不同的计算机节点(如果部署在同一计算机节点,容灾性及性能相对比较弱)

一组哨兵建议只监听一组主从(有利于提高性能)

配置Sentinel(dev201 dev202 dev203)

[root@dev201 redis]# vim /usr/local/redis/sentinel.conf

#不限制ip访问
protected-mode no
port 26379
#后台运行
daemonize yes
pidfile "/var/run/redis-sentinel.pid"
#日志
logfile "/usr/local/redis/sentinel/redis-sentinel.log"
#工作目录
dir /usr/local/redis/sentinel/
​
#监听配置 及 哨兵数量
#sentinel monitor <master-group-name master> <ip> <port> <quorum>
#<master-group-name master> master名称     <quorum> 哨兵数量                         
sentinel monitor andrick-master 192.168.1.201 6379 2
#配置哨兵连接master密码
sentinel auth-pass andrick-master 123456
#哨兵认为master dwon机的间隔时间
sentinel down-after-milliseconds andrick-master 10000
#master并行同步的数量,剩余的slaves重新和新的master做同步的并行数
sentinel parallel-syncs andrick-master 1
#故障转移,哨兵执行超时时间(主备切换的超时时间),超过这个时间后,会由其它哨兵来处理
sentinel failover-timeout andrick-master 180000

#增加 dev201 down 机后,连接master的密码

[root@dev201 redis]# vim redis.conf (主从是可以不用修改masterauth,这里要补上)

masterauth 123456

#配置完dev201 分别把配置文件复制到其它两台服务器的sentinel

[root@dev201 redis]# scp ./sentinel.conf root@dev202:/usr/local/redis/ 
sentinel.conf                                              100% 9826 9.6KB/s 00:00    
[root@dev201 redis]# scp ./sentinel.conf root@dev203:/usr/local/redis/ sentinel.conf

#启动sentinel [root@dev201 redis]# redis-sentinel sentinel.conf

5dbab7385ec2e86546b9e74b735ca1fa.png

注:当master down掉后,slave 会选举一个作为master;而master up 后,会变为slave。

一般 naster数据无法同步给 slave的方案检查为如下:

1.网络通信问题,要保证互相ping通,内网互通。

2.关闭防火墙,对应的端口开发(虚拟机中建永久关闭防火墙,云服务器的话需要保证内网互通)。

3.统一所有的密码,不要漏了某个节点没有设置。

哨兵信息查询

[root@dev201 redis]# redis-cli -p 26379

查看andrick-master下的主节点信息

127.0.0.1:26379> sentinel master andrick-master
 1) "name"
 2) "andrick-master"
 3) "ip"
 4) "192.168.1.203"
 5) "port"
 6) "6379"
 7) "runid"
 8) "3429a849f17c51e11e892c7df1adeaab65eded44"
 9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "805"
19) "last-ping-reply"
20) "805"
21) "down-after-milliseconds"
22) "10000"
23) "info-refresh"
24) "6547"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "3390366"
29) "config-epoch"
30) "1"
31) "num-slaves"
32) "2"
33) "num-other-sentinels"
34) "2"
35) "quorum"
36) "2"
37) "failover-timeout"
38) "180000"
39) "parallel-syncs"
40) "1"

查看andrick-master下从节点信息

127.0.0.1:26379> sentinel slaves andrick-master
1) 1) "name"
 2) "192.168.1.202:6379"
 3) "ip"
 4) "192.168.1.202"
 5) "port"
 6) "6379"
 7) "runid"
 8) "c9c1e659e488eff9593d40cd6c2957f3c8925d42"
 9) "flags"
 10) "slave"
 11) "link-pending-commands"
 12) "0"
 13) "link-refcount"
 14) "1"
 15) "last-ping-sent"
 16) "0"
 17) "last-ok-ping-reply"
 18) "479"
 19) "last-ping-reply"
 20) "479"
 21) "down-after-milliseconds"
 22) "10000"
 23) "info-refresh"
 24) "5869"
 25) "role-reported"
 26) "slave"
 27) "role-reported-time"
 28) "3530137"
 29) "master-link-down-time"
 30) "0"
 31) "master-link-status"
 32) "ok"
 33) "master-host"
 34) "192.168.1.203"
 35) "master-port"
 36) "6379"
 37) "slave-priority"
 38) "100"
 39) "slave-repl-offset"
 40) "864069"
2) 1) "name"
 2) "192.168.1.201:6379"
 3) "ip"
 4) "192.168.1.201"
 5) "port"
 6) "6379"
 7) "runid"
 8) "6d172b61e7ec702e88f611107206394b61e5c009"
 9) "flags"
 10) "slave"
 11) "link-pending-commands"
 12) "0"
 13) "link-refcount"
 14) "1"
 15) "last-ping-sent"
 16) "0"
 17) "last-ok-ping-reply"
 18) "543"
 19) "last-ping-reply"
 20) "543"
 21) "down-after-milliseconds"
 22) "10000"
 23) "info-refresh"
 24) "8179"
 25) "role-reported"
 26) "slave"
 27) "role-reported-time"
 28) "3530137"
 29) "master-link-down-time"
 30) "0"
 31) "master-link-status"
 32) "ok"
 33) "master-host"
 34) "192.168.1.203"
 35) "master-port"
 36) "6379"
 37) "slave-priority"
 38) "100"
 39) "slave-repl-offset"
 40) "863467"
127.0.0.1:26379> 

查看andrick-master下的哨兵节点信息

由于上面配置了2个哨兵所以:

127.0.0.1:26379> sentinel sentinels andrick-master
1) 1) "name"
 2) "1053fd8f25198b1c6654f9b1815bf43b873f808a"
 3) "ip"
 4) "192.168.1.203"
 5) "port"
 6) "26379"
 7) "runid"
 8) "1053fd8f25198b1c6654f9b1815bf43b873f808a"
 9) "flags"
 10) "sentinel"
 11) "link-pending-commands"
 12) "0"
 13) "link-refcount"
 14) "1"
 15) "last-ping-sent"
 16) "0"
 17) "last-ok-ping-reply"
 18) "523"
 19) "last-ping-reply"
 20) "523"
 21) "down-after-milliseconds"
 22) "10000"
 23) "last-hello-message"
 24) "455"
 25) "voted-leader"
 26) "?"
 27) "voted-leader-epoch"
 28) "0"
2) 1) "name"
 2) "fce2017d4f744d218b2d6c6a0dfbebabf12e2f4c"
 3) "ip"
 4) "192.168.1.202"
 5) "port"
 6) "26379"
 7) "runid"
 8) "fce2017d4f744d218b2d6c6a0dfbebabf12e2f4c"
 9) "flags"
 10) "sentinel"
 11) "link-pending-commands"
 12) "0"
 13) "link-refcount"
 14) "1"
 15) "last-ping-sent"
 16) "0"
 17) "last-ok-ping-reply"
 18) "285"
 19) "last-ping-reply"
 20) "285"
 21) "down-after-milliseconds"
 22) "10000"
 23) "last-hello-message"
 24) "793"
 25) "voted-leader"
 26) "?"
 27) "voted-leader-epoch"
 28) "0"

Spring Redis哨兵配置

哨兵(主从复制)配置:

  redis:
    database: 1
    password: 123456
    sentinel:
      master: andrick-master
      nodes: dev201:26379,dev202:26379,dev203:26379

单机版本如下:

  redis:
    database: 0
    host: 192.168.1.200
    lettuce:
      pool:
        max-active: 50
        max-idle: 20
        max-wait: 10000
        min-idle: 5
      password:
      port: 6379
      ssl: false
      timeout: 2000

http://www.niftyadmin.cn/n/1409516.html

相关文章

TortoiseGit自动记住用户名密码的方法

windows下比较比较好用的git客户端有2种&#xff1a; 1. msysgit TortoiseGit(乌龟git) 2. GitHub for Windows github的windows版也用过一段时间&#xff0c;但还是不太习惯。所以目前仍然青睐与msysgit乌龟git的组合。 TortoiseGit在提交时总数会提示你输入用户名密码&#…

react antd 自定义Pagination 分页功能

antd 自定义Pagination 分页功能,研究明白其实看着很简单 主要就是slice((pagenum-1)*pageSize,(pagenum-1)*pageSizepageSize) {objlistdata.slice((pagenum-1)*pageSize,(pagenum-1)*pageSizepageSize).map((item,index)>{return(<ContentList data{item.data} key{ite…

java 如何检测内在泄漏呢

1、为什么会发生内存泄漏 java 如何检测内在泄漏呢&#xff1f;我们需要一些工具进行检测&#xff0c;并发现内存泄漏问题&#xff0c;不然很容易发生down机问题。 编写java程序最为方便的地方就是我们不需要管理内存的分配和释放&#xff0c;一切由jvm来进行处理&#xff0c;当…

大型语言模型与知识图谱协同研究综述:两大技术优势互补

机器之心报道 编辑&#xff1a;杜伟 多图综述理清当前研究现状&#xff0c;这篇 29 页的论文值得一读。 大型语言模型&#xff08;LLM&#xff09;已经很强了&#xff0c;但还可以更强。通过结合知识图谱&#xff0c;LLM 有望解决缺乏事实知识、幻觉和可解释性等诸多问题&am…

mikadonic-RHCE——NFS服务配置图解

转载于:https://www.cnblogs.com/MiKaDoNik/p/8954103.html

python虚拟键盘_python之模拟鼠标键盘动作具体实现

上个月就打算开发个还算好玩的项目&#xff0c;但是一直没时间。这篇是此项目用到的一部分&#xff0c; 处理好此部分基本还差通信等方面的了。首先模拟鼠标键盘按下释放的动作&#xff0c;本人利用X11 这个库&#xff0c;所以要了解X11编程;其次&#xff0c;本身用c或者c就可以…

js 按照中文拼音来排序

let array [武汉, 北京, 上海, 天津];array.sort(function compareFunction(param1, param2) {//console.log("param1",param2)return param1.localeCompare(param2, zh-Hans-CN, {sensitivity: accent});});//console.log("arr",array)let arrdata e.da…

主从库不同步了

遇到这样的错误如&#xff1a;“Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: Could not find first log file name in binary log index file”等或由于清数据导致主从库不同步了&#xff0c;解决办法如下&#xff1a; 先进入slave中…