ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis sentinel

2021-11-07 21:35:20  阅读:202  来源: 互联网

标签:Redis redis etc conf sentinel root 节点


sentinel(哨兵集群)

Redis主从复制中的问题

  • Redis的两主从节点,一旦主节点出现故障,从节点作为后备,保证书记的不丢失。
  • 从节点可以扩展主节点的读写分离,减少主节点的压力
  • 一旦主节点故障,需要手动将一个从节点晋升为主节点
  • 需要修改客户端或者应用程序的主节点地址
  • 一主多从的话需要手动干预

Redis的高可用
sentinel是Redis的高可用方案,一个分布式系统结构,其中包括若干个sentinel节点和梳个Redis数据节点,每个sentinel节点对Redis的数据节点进行监控和其他的sentinel节点进行监控,但其他节点不可用时,需要半数以上的sentinel节点确认,并由发现的sentinel节点完成自动化故障转移的工作。

  • 主机点故障,无法接续主从复制

  • 每个sentinel通过定期监控发现主节点故障

  • 多个sentinel节点对主节点的故障达成一致

  • 选举出的sentinel节点执行故障转移

**故障转移后整个Redis sentinel的括扑关系

sentinel实现原理

三个定时监控任务

  • 每隔10秒,每个sentinel节点先主从节点发送info命令,得到最新的扩扑信息,当有从节点加入时,也会立刻感知,当节点不可达或者故障转移后,也可以感知出来
  • 每隔2秒,每个sentinel节点会向数据库Redis节点订阅一个频道,得到此时的对主节点的判断以及当前sentinel节点的状态信息.
  • 每隔1秒,每隔sentinel节点会向主从节点,以及其他的sentinel节点发送一条pinbg命令,来确认这些节点是否可达

下线

  • 主观下线:ping时没有回应,此时有可能是其他原因导致认为下线,只有此节点认为
  • 客观下线:当ping时发现主节点没有回应,此时sentinel会向其他节点询问此时主节点的状态来确认

故障转移

  • 当主节点被客观下线后,选择slave-priority(从优先级)上的最高节点来执行no one命令,使其成为新的主节点
  • 若原本来的主节点恢复后,sentinel将原来的主节点变为从节点

sentinel集群部署

需要三个Redis实例,三台sentinel实例
6379,6380,6381 == master,slave1,slave2
26379,26380,26381 == sentinel...

安装并部署Redis

[root@localhost ~]# hostname redis
[root@localhost ~]# bash
[root@redis ~]# iptables -F
[root@redis ~]# systemctl stop firewalld
[root@redis ~]# setenforce 0

初识化Redis实例的配置文件

[root@redis utils]# sed -i '/^bind 127.0.0.1$/s/127.0.0.1/192.168.200.21/g' /etc/redis/6379.conf 
[root@redis utils]#  sed -i '/protected-mode/s/yes/no/g' /etc/redis/6379.conf
[root@redis utils]# sed -i '/daemonize/s/no/yes/g' /etc/redis/6379.conf
[root@redis utils]# sed -i '/requirepass/s/foobared/123456/g' /etc/redis/6379.conf 
[root@redis utils]# sed -i '/requirepass 123456/s/^#//g' /etc/redis/6379.conf
[root@redis utils]# sed -i '/^bind 127.0.0.1$/s/127.0.0.1/192.168.200.21/g' /etc/redis/6380.conf 
[root@redis utils]#  sed -i '/protected-mode/s/yes/no/g' /etc/redis/6380.conf 
[root@redis utils]# sed -i '/daemonize/s/no/yes/g' /etc/redis/6380.conf
[root@redis utils]# sed -i '/requirepass/s/foobared/123456/g' /etc/redis/6380.conf 
[root@redis utils]# sed -i '/requirepass 123456/s/^#//g' /etc/redis/6380.conf
[root@redis utils]# sed -i '/^bind 127.0.0.1$/s/127.0.0.1/192.168.200.21/g' /etc/redis/6381.conf 
[root@redis utils]#  sed -i '/protected-mode/s/yes/no/g' /etc/redis/6381.conf 
[root@redis utils]# sed -i '/daemonize/s/no/yes/g' /etc/redis/6381.conf
[root@redis utils]# sed -i '/requirepass/s/foobared/123456/g' /etc/redis/6381.conf 
[root@redis utils]# sed -i '/requirepass 123456/s/^#//g' /etc/redis/6381.conf

[root@redis utils]# netstat -lnptu | grep redis
tcp        0      0 192.168.200.21:6379     0.0.0.0:*               LISTEN      6796/redis-server 1 
tcp        0      0 192.168.200.21:6380     0.0.0.0:*               LISTEN      8092/redis-server 1 
tcp        0      0 192.168.200.21:6381     0.0.0.0:*               LISTEN      8102/redis-server 1 

[root@redis ~]# redis-cli -h 192.168.200.21 -a 123456 -p 6379 ping
PONG
[root@redis ~]# redis-cli -h 192.168.200.21 -a 123456 -p 6380 ping
PONG
[root@redis ~]# redis-cli -h 192.168.200.21 -a 123456 -p 6381 ping
PONG

主从集群配置

[root@master ~]# vim /etc/redis/6379.conf 
 451  min-slaves-to-write 2  #设置slave节点数量
 452  min-slaves-max-lag 10  #超时时间
[root@master ~]# vim /etc/redis/6379.conf(6380.conf)
282  slaveof 192.168.200.21 6379
289  masterauth 123456

[root@redis ~]# rm -rf /var/run/redis_6379.pid 
[root@redis ~]# rm -rf /var/run/redis_6380.pid 
[root@redis ~]# rm -rf /var/run/redis_6381.pid 

[root@redis ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@redis ~]# /etc/init.d/redis_6380 start
Starting Redis server...
[root@redis ~]# /etc/init.d/redis_6381 start
Starting Redis server...
[root@redis ~]# netstat -lnptu | grep redis
tcp        0      0 192.168.200.21:6379     0.0.0.0:*               LISTEN      6796/redis-server 1 
tcp        0      0 192.168.200.21:6380     0.0.0.0:*               LISTEN      8092/redis-server 1 
tcp        0     


[root@localhost ~]# redis-cli -h 192.168.200.21 -a 123456 -p 6379
192.168.200.21:6379> info replication
# Replication
role:master
connected_slaves:2
min_slaves_good_slaves:2
slave0:ip=192.168.200.21,port=6380,state=online,offset=95,lag=0
slave1:ip=192.168.200.21,port=6381,state=online,offset=95,lag=0
master_replid:ad230de635d1606d7c37095e52c4571c01de53ff
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:95
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:95

配置Redis sentinel集群


标签:Redis,redis,etc,conf,sentinel,root,节点
来源: https://www.cnblogs.com/wml3030/p/15521823.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有