首页 > 数据库 >Redis哨兵集群原理

Redis哨兵集群原理

时间:2023-10-01 12:32:35浏览次数:37  
标签:slave Redis redis 哨兵 集群 conf sentinel master config

单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离

  • 主节点: 可以对Redis实现读写操作
  • 从节点只可以对Redis实现读操作

但是,当master节点宕机后,我们就不能写数据到Redis,所以需要搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集群

1.Redis哨兵

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。

哨兵的结构如图:

Redis哨兵集群原理_Redis

共包含6个节点,一个主两个从和三个哨兵。这里我们会在同一台虚拟机中开启6个redis实例,模拟主从集群,信息如下:

IP

PORT

角色

192.168.150.102

6380

master

192.168.150.102

6381

slave

192.168.150.102

6382

slave

192.168.150.102

26379

sentinel

192.168.150.102

26380

sentinel

192.168.150.102

26381

sentinel

哨兵的作用如下

  • 监控:Sentinel 会不断检查您的master和slave是否按预期工作
  • 自动故障恢复:如果master故障Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主
  • 通知:Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时会将最新信息推送给Redis的客户端

2. 准备实例和配置

要在同一台虚拟机开启6个实例,必须准备6份不同的配置文件和目录,配置文件所在目录也就是工作目录。 确保下面的配置已经更改(位置也别错)

# master
mkdir -p /redis-master-slave-sentinel/redis/master/config /redis-master-slave-sentinel/redis/master/data
cd /redis-master-slave-sentinel/redis/master/config
curl -O -L http://download.redis.io/releases/redis-6.0.20.tar.gz
tar -zxvf redis-6.0.20.tar.gz
cp /redis-master-slave-sentinel/redis/master/config/redis-6.0.20/redis.conf  /redis-master-slave-sentinel/redis/master/config/redis.conf
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /redis-master-slave-sentinel/redis/master/config/redis.conf

# slave-1
mkdir -p /redis-master-slave-sentinel/redis/slave-1/config /redis-master-slave-sentinel/redis/slave-1/data
cd /redis-master-slave-sentinel/redis/slave-1/config/
cp /redis-master-slave-sentinel/redis/master/config/redis-6.0.20/redis.conf   /redis-master-slave-sentinel/redis/slave-1/config/redis.conf
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /redis-master-slave-sentinel/redis/slave-1/config/redis.conf 

# slave-2
mkdir -p /redis-master-slave-sentinel/redis/slave-2/config /redis-master-slave-sentinel/redis/slave-2/data
cd /redis-master-slave-sentinel/redis/slave-2/config/
cp /redis-master-slave-sentinel/redis/master/config/redis-6.0.20/redis.conf   /redis-master-slave-sentinel/redis/slave-2/config/redis.conf
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /redis-master-slave-sentinel/redis/slave-2/config/redis.conf


#redis-sentinel-1
mkdir -p /redis-master-slave-sentinel/sentinel/redis-sentinel-1  /redis-master-slave-sentinel/sentinel/redis-sentinel-1/s1
cd  /redis-master-slave-sentinel/sentinel/redis-sentinel-1


cat >> /redis-master-slave-sentinel/sentinel/redis-sentinel-1/sentinel.conf <<EOF
# 配置可参考 http://download.redis.io/redis-stable/sentinel.conf
# 配置说明 https://redis.io/topics/sentinel
port 26379
dir /tmp
sentinel monitor mymaster 192.168.150.102 6380 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster 123456
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
EOF



#redis-sentinel-2
mkdir -p /redis-master-slave-sentinel/sentinel/redis-sentinel-2  /redis-master-slave-sentinel/sentinel/redis-sentinel-2/s2
cd  /redis-master-slave-sentinel/sentinel/redis-sentinel-2


cat >> /redis-master-slave-sentinel/sentinel/redis-sentinel-2/sentinel.conf <<EOF
# 配置可参考 http://download.redis.io/redis-stable/sentinel.conf
# 配置说明 https://redis.io/topics/sentinel
port 26379
dir /tmp
sentinel monitor mymaster 192.168.150.102 6380 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster 123456
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
EOF


#redis-sentinel-3
mkdir -p /redis-master-slave-sentinel/sentinel/redis-sentinel-3  /redis-master-slave-sentinel/sentinel/redis-sentinel-3/s3
cd  /redis-master-slave-sentinel/sentinel/redis-sentinel-3


cat >> /redis-master-slave-sentinel/sentinel/redis-sentinel-3/sentinel.conf <<EOF
# 配置可参考 http://download.redis.io/redis-stable/sentinel.conf
# 配置说明 https://redis.io/topics/sentinel
port 26379
dir /tmp
sentinel monitor mymaster 192.168.150.102 6380 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster 123456
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
EOF

sentinel.conf说明

port 26379
dir /tmp
sentinel monitor mymaster 192.168.150.102 6380 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster 123456
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

sentinel.conf解读

  • port 26379:是当前sentinel实例的端口
  • sentinel monitor mymaster 192.168.150.102 6380 2:指定主节点信息 ○ mymaster:主节点名称,自定义,任意写 ○ 192.168.150.102 6380:主节点的ip和端口 ○ 2:选举master时的quorum值
  • sentinel auth-pass mymaster 123456 :访问主节点时的密码

标签:slave,Redis,redis,哨兵,集群,conf,sentinel,master,config
From: https://blog.51cto.com/maguobin/7673581

相关文章

  • Go每日一库之161:grm(Redis Web管理工具)
    GRM是基于go+vue的web版redis管理工具,部署简单便捷,支持SSH连接,用户校验,操作日志、命令行模式、LUA脚本执行等功能。介绍基于go+vue的web版redis管理工具【Webredismanagementtoolbasedongolangandvue】功能清单管理连接(直连和SSH)、切换DB支持string/lis......
  • redis key 被访问后不会自动延长过期时间
    Redis的过期策略按照两个维度工作:被动过期和主动过期。被动过期:只有当有客户端尝试访问一个已经过期的key时,Redis才会删除该内容。主动过期:为了防止过期的key未被立即清理,造成内存浪费,Redis会周期性地随机检查一些key是否已经过期,如果过期,则予以删除。Redis的过期时间是静态的,......
  • Redis命令详解
    1.连接redis服务命令:1.连接本地redis服务命令:redis-cli2.远程连接redis服务命令:redis-clo-hhost-pport-apassword 2.redis数据类型Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sortedset:有序集合)。string是redis最基本的类型,string类型是......
  • Redis更换版本操作
    问题:windows系统下,安装了两个不同版本的Redis,如何切换版本?操作:1,打开CMD输入regedit,打开注册表编辑器2,根据路径找到mysql注册表找到以下路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL80,我电脑上的服务名为:MySQL80你们根据自己得实际情况进行查找。修改ImagePa......
  • redis 连接报错read error on connection解决
    在使用redis队列处理的时候,有时候队列过长会遇到超时的情况。原因分析:查看了下php.ini文件里面有个参数default_socket_timeout=60,就是这个配置导致redis过60秒会自动断开。这个配置是什么意思?default_socket_timeout是socket流的超时参数,即socket流从建立到传输再到关闭整个过......
  • 高可用Kubernetes集群实战(二)
    安装containerd容器运行时[root@k8sm1~]#yuminstall-ycontainerd.io-1.6.6生成containerd配置文件创建配置文件存储目录[root@k8sm1~]#mkdir-p/etc/containerd生成配置文件[root@k8sm1~]#containerdconfigdefault>/etc/containerd/config.toml修改配置文件修改san......
  • 高可用Kubernetes集群实战(三)
    安装nginx安装依赖[root@k8sm1~]#yuminstall-yepel-release安装nginxkeepalived[root@k8sm1~]#yuminstall-ynginxkeepalivednginx-mod-stream配置nginx[root@k8sm1~]#cat/etc/nginx/nginx.conf#Formoreinformationonconfiguration,see:#*OfficialE......
  • Go每日一库之168:redsync(redis分布式锁)
    今天给大家推荐的是基于redis的Go版本的分布式锁工具:redsync。该工具也是redis官网上推荐的。redsync基于redis的高可用、高性能、防死锁、防误删的分布式锁实现,具有高性能、高可用、防死锁、防误删的特点。一、分布式锁基础知识什么是分布式锁锁,在编程语言中就是一个变量,该变......
  • Redis主从及哨兵及集群相关介绍
    主从模式为了避免单点故障和读写不分离,Redis提供了复制(replication)功能,master数据库中的数据更新后,会自动将更新的数据同步到其他slave数据库上。优点:主从结构具有读写分离,提高效率、数据备份,提供多个副本等优点。不足:大的不足就是主从模式不具备自动容错和恢复功能,主......
  • Redis 事务
    Redis事务Redis中的事务是通过使用MULTI、EXEC、DISCARD和WATCH命令实现的。以下是这些命令的说明:MULTI:用于标记事务的开始。在执行MULTI后,所有后续的命令都将被认为是事务的一部分。EXEC:用于执行之前标记的事务。Redis将按顺序执行事务中的所有命令。DISCARD:......