Redis哨兵高可用架构

系列文章目录

第一节 Redis的安装
第二节 Redis的五种数据结构(String、Hash、List、Set、ZSet)
第三节 Redis的持久化方式
第四节 Redis主从架构


Redis哨兵高可用架构

  • 系列文章目录
  • 前言
  • 一、为什么会出现哨兵架构?
  • 二、哨兵架构图
  • 三、哨兵架构安装步骤
    • 1.复制配置文件
    • 2.修改配置文件
    • 3.配置另外两个实例
    • 3.启动哨兵实例
    • 4.查看sentinel的info信息
  • 总结


前言

本节整理一下Redis的哨兵高可用相关内容


一、为什么会出现哨兵架构?

在主从架构中,当master节点挂掉之后,需要通过手动的方式将其中的一个从节点配置为master并修改一些相关配置,而哨兵架构可实现自动切换。

二、哨兵架构图

Redis哨兵高可用架构_第1张图片
1、sentinel哨兵主要职责用来监控redis实例节点,是特殊的redis服务,不提供读写服务。
2、在哨兵架构下,redis客户端直接连接哨兵,而不是直接连接master节点,redis客户端第一次从哨兵中找出redis的master主节点,后续就直接访问redis的master主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的master主节点出现了问题,哨兵会第一时间感知到,并且将新的redis主节点通知给client端(这里面redis客户端一般都实现了订阅功能,订阅sentinel发布的节点变动消息)

三、哨兵架构安装步骤

1.复制配置文件

#复制一份sentinel.conf
cp sentinel.conf sentinel-26379.conf

2.修改配置文件

#编辑配置文件
vi sentinel-26379.conf

#修改以下配置项
port 26379
daemonize yes
pidfile "/var/run/redis-sentinel-26379.pid"
logfile "26379.log"
# 指定数据存放目录,需要手动创建,给每个端口创建一个文件夹存放
#mkdir -p ./data/sentinel/26379 ./data/sentinel/26380 ./data/sentinel/26381
dir "./data/sentinel/26379"
# sentinel monitor    
# quorum是一个数字,指明当有多少个sentinel认为一个master失效时(值一般为:sentinel总数/2 + 1),master才算真正失效
sentinel monitor mymaster 192.168.75.200 6379 2   # mymaster这个名字可自定义命名,客户端访问时会用到
#sentinel auth-pass mymaster 123456 #如果master和slave节点都开启了密码校验,则需要进行配置

3.配置另外两个实例

#根据前面两个步骤,再配置两个sentinel,端口26380和26381
#拷贝配置文件
cp sentinel-26379.conf sentinel-26380.conf
cp sentinel-26379.conf sentinel-26381.conf

#执行端口替换
vi sentinel-26380.conf  #全局替换字符串 :%s/26379/26380/g
vi sentinel-26381.conf  #全局替换字符串 :%s/26379/26381/g

3.启动哨兵实例

#启动所有哨兵实例
src/redis-sentinel ./sentinel-26379.conf
src/redis-sentinel ./sentinel-26380.conf
src/redis-sentinel ./sentinel-26381.conf

#启动所有redis实例,也就是主从架构的所有的节点,可以参考[第四节 Redis主从架构](https://blog.csdn.net/IUNIQUE/article/details/125235091)
src/redis-server ./redis.conf
src/redis-server ./redis-6380.conf
src/redis-server ./redis-6381.conf

4.查看sentinel的info信息

src/redis-cli -p 26379
127.0.0.1:26379>info
可以看到Sentinel的info里已经识别出了redis的主从

在这里插入图片描述

sentinel集群实例都启动完毕后,会将哨兵集群的元数据信息写入所有sentinel的配置文件里去,也就是追加在文件的最下面,可以查看下配置文件sentinel-26379.conf,如下所示:

cat sentinel-26379.conf

在最后会看到如下配置信息

sentinel known-replica mymaster 192.168.75.200 6380 #代表redis主节点的从节点信息
sentinel known-replica mymaster 192.168.75.200 6381 #代表redis主节点的从节点信息
sentinel known-sentinel mymaster 192.168.75.200 26381 680ded47bce370f9c946e968df81b6084c8401f0 #代表感知到的其它哨兵节点
sentinel known-sentinel mymaster 192.168.75.200 26380 f96ed8614008d9711e9b66dfec0cd9bb781d3462 #代表感知到的其它哨兵节点

当redis主节点master如果挂了,哨兵集群会重新选举出新的redis主节点,同时会修改所有sentinel节点配置文件的集群元数据信息,比如6379的redis如果挂了,假设选举出的新主节点是6381,则sentinel文件里的集群元数据信息会变成如下所示:

sentinel known-replica mymaster 192.168.75.200 6379
sentinel known-replica mymaster 192.168.75.200 6380
sentinel known-sentinel mymaster 192.168.75.200 26381 680ded47bce370f9c946e968df81b6084c8401f0
sentinel known-sentinel mymaster 192.168.75.200 26380 f96ed8614008d9711e9b66dfec0cd9bb781d3462

总结

以上就是今天要讲的内容,介绍redis的哨兵架构搭建等内容,下一节将介绍集群模式。

你可能感兴趣的:(分布式,redis,架构,缓存)