Redis 哨兵模式

redission哨兵配置 redis哨兵怎么配置_redis修改配置文件立即生效

本篇主要讲解Redis的哨兵模式,承接上一篇主从复制,解决主从复制的不足之处,依然是1主2从模式

概述

Sentinel(哨兵)是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器

注意 sentinel 只会去配置需要去监控的主master Redis,它会根据master去寻找对应的 slave

故障切换(failover)的过程

假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。这样对于客户端而言,一切都是透明的。

redission哨兵配置 redis哨兵怎么配置_redis_02

1.Redis 哨兵模式搭建

安装我就不说了。。

1.1 准备3个redis.conf 配置文件

准备搭建 1主 2从  来看看如何搭建Redis 哨兵模式 , 基本配置和 另外一篇 Redis 主从复制大致差不多,多了点配置

首先准备 3个目录 分别存放 master 和两个slave 节点的 配置文件

cd /usr/local/#新建3个目录mkdir reids-mastermkdir redis-slave1mkdir redis-slave2#分别从redis 源码安装目录下 copy 一份 redis.conf 到 上面新建的3个目录下cp /opt/redis-5.0.10/redis.conf /usr/local/redis-mastercp /opt/redis-5.0.10/redis.conf /usr/local/redis-slave1cp /opt/redis-5.0.10/redis.conf /usr/local/redis-slave2

1.2   修改Redis.conf 配置文件

通过配置可以发现 大致配置

requirepass 开启auth认证

masterauth 连接master的认证密码

#修改redis-master 下面的redis.confport 7000bind 0.0.0.0 #开通远程访问requirepass 123456 #配置auth密码masterauth 123456  #当主服务宕机后 恢复的时候 需要去连接 哨兵定义的新的主服务 用的密码 一般这一批哨兵模式中的redis 密码保持一致#修改redis-slave1 下面的redis.confport 7001bind 0.0.0.0 replicaof 192.168.25.101 7000 #配置master节点的 ip 端口  requirepass 123456  #配置auth密码masterauth 123456   #主服务的 认证密码#修改redis-slave2 下面的redis.confport 7002bind 0.0.0.0 replicaof 192.168.25.101 7000 #配置master节点的 ip 端口requirepass 123456masterauth 123456

1.3 配置 sentinel.conf 配置文件

主要配置哨兵的 配置文件,哨兵的配置文件可以从 Redis的源码安装目录 copy  sentinel.conf

cd /usr/localmkdir redis-sentinelcp /opt/redis-5.0.10/sentinel.conf /usr/local/redis-sentinel/ #copy 一份 sentinel 配置文件
#禁止保护模式protected-mode no# sentinel monitor 代表监控# mymaster 代表哨兵集群master服务 可以自定义# 192.168.25.101 7000 主redis的 host和port# 1 1代表只有1个或1个以上的哨兵认为主服务器不可用的时候,才会进行failover操作 这里简单设置1,正常可能需要设置3个以上的哨兵sentinel monitor mymaster 192.168.25.101 7000 1 sentinel auth-pass mymaster 123456 #主服务的 auth 密码,上面主Redis的 requirepass 配置的

其他sentinel 配置参数 如图:

redission哨兵配置 redis哨兵怎么配置_redis修改配置文件立即生效_03

2.验证 Sentinel 模式

注意启动的顺序。首先是主机(192.168.25.101)的Redis服务进程,然后启动从机的服务进程,最后启动3个哨兵的服务进程。

我的主从都是在一台虚拟机机上,只是不同的端口

2.2 启动1主2从

启动主 7000

redission哨兵配置 redis哨兵怎么配置_redis远程主机强迫关闭了一个现有连接_04

启动 从1 7001

redission哨兵配置 redis哨兵怎么配置_redis修改配置文件立即生效_05

启动 从2 7002

redission哨兵配置 redis哨兵怎么配置_redis_06

2.2 启动哨兵sentinel

测试原因 只启动了 1个哨兵

#启动 哨兵redis-sentinel sentinel.conf

redission哨兵配置 redis哨兵怎么配置_redis远程主机强迫关闭了一个现有连接_07

可以看到 已经能识别对应的 Redis 和 Slave

可以看到 主服务 set name johnny 后 从服务可以收到对应的 数据

redission哨兵配置 redis哨兵怎么配置_redission哨兵配置_08

redission哨兵配置 redis哨兵怎么配置_redis远程主机强迫关闭了一个现有连接_09

2.3 关闭Redis  Master 主服务

模拟Master 主服务宕机 ,直接关闭

可以看到当 关了Master 后 Salve 会立即爆出 Connection refused

redission哨兵配置 redis哨兵怎么配置_redission哨兵配置_10

等待一小会 哨兵监听到,去做故障转移操作

把原来 7000 master 给移除 , 重新投票选择了 7001作为 master

redission哨兵配置 redis哨兵怎么配置_redis远程主机强迫关闭了一个现有连接_11

redission哨兵配置 redis哨兵怎么配置_redis修改配置文件立即生效_12

redission哨兵配置 redis哨兵怎么配置_redis_13

2.4 恢复master

当恢复原来的 maste 7000 后,会被哨兵监控到并且 将其变成新的主服务 7001的 从服务

redission哨兵配置 redis哨兵怎么配置_redission哨兵配置_14

哨兵日志

redission哨兵配置 redis哨兵怎么配置_redis修改配置文件立即生效_15

总结

本篇主要讲解 Redis 哨兵模式,用它来解决 主从的不足,是Redis 高可用的解决方案,拥有自动故障转移功能,不过这种模式 依然有不足的地方,也就是当 请求量很大的时候 还是容易把 主Redis 搞崩盘,

那么就有了 Redis Cluster 集群模式   有机会来说说 Redis Cluster 。