redis的哨兵的原理以及配置步骤

哨兵模式

简介

主从模式的弊端就是不具备高可用性,当master挂掉以后,Redis将不能再对外提供写入操作,因为哨兵应运而生。

哨兵的作用就是监控redis集群的运行状况。特点如下:

sentinel模式是建立在主从模式的基础上,如果只有一个Redis节点,sentinel就没有任何意义

当master挂了以后,sentinel会在slave中选择一个做为master,并修改它们的配置文件,其他slave的配置文件也会被修改,比如slaveof属性会指向新的master

当master重新启动后,它将不再是master而是做为slave接收新的master的同步数据

sentinel因为也是一个进程有挂掉的可能,所以sentinel也会启动多个形成一个sentinel集群

多sentinel配置的时候,sentinel之间也会自动监控

当主从模式配置密码时,sentinel也会同步将配置信息修改到配置文件中,不需要担心

一个sentinel或sentinel集群可以管理多个主从Redis,多个sentinel也可以监控同一个redis

sentinel最好不要和Redis部署在同一台机器,不然Redis的服务器挂了以后,sentinel也挂了

工作机制

每个sentinel以每秒钟一次的频率向它所知的master,slave以及其他sentinel实例发送一个 PING 命令

如果一个实例距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被sentinel标记为主观下线。

如果一个master被标记为主观下线,则正在监视这个master的所有sentinel要以每秒一次的频率确认master的确进入了主观下线状态

当有足够数量的sentinel(大于等于配置文件指定的值)在指定的时间范围内确认master的确进入了主观下线状态, 则master会被标记为客观下线

在一般情况下, 每个sentinel会以每 10 秒一次的频率向它已知的所有master,slave发送 INFO 命令

当master被sentinel标记为客观下线时,sentinel向下线的master的所有slave发送 INFO 命令的频率会从 10 秒一次改为 1 秒一次

若没有足够数量的sentinel同意master已经下线,master的客观下线状态就会被移除;

若master重新向sentinel的 PING 命令返回有效回复,master的主观下线状态就会被移除

注意点

当使用sentinel模式的时候,客户端就不要直接连接Redis,而是连接sentinel的ip和port,由sentinel来提供具体的可提供服务的Redis实现,这样当master节点挂掉以后,sentinel就会感知并将新的master节点提供给使用者。

哨兵监控模式

手动配置哨兵

先将主服务器关闭
kill -9 端口号

查看主服务器是否关闭
ps -aux | grep redis

进入从1服务器

redis-cli -h 127.0.0.1 -p 端口号

输入 slaveof no one
显示ok则说明该从服务器已变为主服务器

进入从2服务器

redis-cli -h 127.0.0.1 -p 端口号

输入 slaveof IP地址  端口号
显示OK说明配置成功

自动哨兵模式

第一步:先找到哨兵的配置文件

在之前创建的文件夹中找到 sentinel.conf 的哨兵文件

第二步:将找到的文件复制三份到/usr/local/redis/etc/

egrep -v “$|#” sentinel.conf > /usr/local/redis/etc/sentinel-26379.conf

将文件名进行更改为sentinel-26379.conf,sentinel-26380.conf,sentinel-26381.conf

第三步:修改三个哨兵的配置文件

vim /sentinel-26379.conf{sentinel-26380.conf,sentinel-26381.conf}

protected-mode no     #关闭保护模式,使外网能访问。
port 26379          #修改端口。三份文件分别不同。
daemonize no         #修改为后台运行。
pidfile /var/run/redis-sentinel-26370.pid     #指定不同pid文件,注意文件夹不存在自己要新建。
logfile "/usr/local/redis/logs/sentinel-26370.pid"          #配置哨兵日志文件。
dir "/tmp"          #配置哨兵工作路径。
sentinel monitor mymaster 127.0.0.1 8000 2   #配置哨兵需要监控的主节点ip和端口,2表示哨兵数(quorum)
sentinel auth-pass mymaster 123     #配置哨兵连接主节点的认证密码。(主节点配置的requirepass)。
sentinel down-after-milliseconds mymaster 5000    #配置多少毫秒后没收到主节点的反馈,则主观认为主节点down了。
sentinel failover-timeout mymaster 30000     #表示如果30秒后,mysater仍没活过来,则启动failover,从剩下的slave中选一个升级为master
sentinel parallel-syncs mymaster 1     #parallel-syncs 指定了在执行故障转移时, 最多可以有多少个slave同时对新的master进行同步, 这个数字越小, 完成故障转移所需的时间就越长

第四步:启动哨兵模式

redis-sentinel sentinel-26379.conf

redis-sentinel sentinel-26380.conf

redis-sentinel sentinel-26381.conf

第五步:进行验证环节

cat sentinel-26379.pid

若显示

+sentinel sentinel 5901fffcbc2a0799250f2714851bf84573110ebf 127.0.0.1 26380 @ mymaster 127.0.0.1 8000

即为成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值