Redis之哨兵模式

个人环境
(1)Centos 7.0
(2)Redis-5.0.7

Redis可以去官网上自己下载,直接搜索redis.io进行下载,最新稳定版就是我的这个5.0.7版本。
注:我刚看到了一眼官网,好像是崩了😄,有点问题,以防万一,我给个链接吧。
链接:https://pan.baidu.com/s/13GgIjyjjMNo0jE5SdPbZ3g
提取码:vmnm

1.安装

yum install gcc gcc-gcc+ make
gunzip redis-5.0.7.tar.gz
tar xf redis-5.0.7.tar -C /opt  //放在opt下
cd /opt/redis-5.0.7/
make
mkdir -p /data/redis
make PREFIX=/data/redis install
mkdir /data/redis/conf
cp -p redis.conf /data/redis/conf/     //这个redis.conf文件就是接下来你一直要使用的

这样就基本ok了

2.启动

在这里插入图片描述
其中之后经常用到的两个
redis-server //启动服务 eg:redis-server redis.conf
redis-cli //启动客户端
本地连接

/data/redis/bin/redis-cli

远程连接

redis-cli -h host -p port -a password

host:目的地址ip
port:端口号 (可以去redis.conf中查)
password: 这个是可有可无的,取决于你是否在redis.conf中设置密码

注:基本操作就是这样,剩下的自己搜相关命令,接下来就要进入主题了

3.哨兵模式

3.1 手动模拟故障切换

实例:配置本机的6379端口的redis为Master(主),6380,6381端口的redis为两个Slave(从),手动模拟当Master节点故障后,启动一个Slave为Master,而另一个Slave成为这个新的Master的从节点。

开启三个redis实例(可以在同一个终端,也可以在三个)
在这里插入图片描述
客户端连接开启三个redis实例(必须开启三个,便于观察)
在这里插入图片描述
设置6380,6381为6379的从
在这里插入图片描述
再开启三个终端分别查看日志的变化
6380日志
在这里插入图片描述
6381日志
在这里插入图片描述
6379日志
在这里插入图片描述
此时,一切就绪。ctrl+c当掉6379实例(Master)
6380,6381实例(Slave)日志报错
在这里插入图片描述
此时将6380设置为Master,6381实例(Salve)指向6380(Master)
在这里插入图片描述
6380日志
在这里插入图片描述
6381日志
在这里插入图片描述
可以看到6380,6381日志恢复正常,6380为Master,6381实例(Salve)为6380的从

3.2 Sentinel的高可用(自动故障切换)

3.2.1 redis一主两从环境搭建
启动实例:6390,6391,6392

mkdir /data/redis/logs/
nohup /data/redis/bin/redis-server --port 6390 >> /data/redis/logs/6390.log 2>&1 &
nohup /data/redis/bin/redis-server --port 6391 >> /data/redis/logs/6391.log 2>&1 &
nohup /data/redis/bin/redis-server --port 6392 >> /data/redis/logs/6392.log 2>&1 &

分别开启三个客户端,并设置主从,默认6391为主

/data/redis/bin/redis-cli -p 6390
127.0.0.1:6390> SLAVEOF 127.0.0.1 6391
/data/redis/bin/redis-cli -p 6391

/data/redis/bin/redis-cli -p 6392
127.0.0.1:6392> SLAVEOF 127.0.0.1 6391

3.2.2 哨兵模式集群的搭建
创建sentinel.conf文件

vim sentinel1.conf
port 26379
sentinel monitor s1 127.0.0.1 6390 2  //谁是主,这里设置谁
vim sentinel2.conf
port 26380
sentinel monitor s1 127.0.0.1 6390 2  // 2 表示判断主服务器为失效,重新设Master,至少需要2个sentinel同意

这里需要注意:
在这里插入图片描述
3.2.3 启动sentinel

nohup /data/redis/bin/redis-sentinel /data/redis/conf/sentinel1.conf  >>  /data/redis/logs/sentinel1.log 2>&1 &
[1] 22778
nohup /data/redis/bin/redis-sentinel /data/redis/conf/sentinel2.conf  >>  /data/redis/logs/sentinel2.log 2>&1 &
[2] 22782

到此哨兵模式搭建完成
在这里插入图片描述
3.2.4 测试
查看日志
在这里插入图片描述
出现一个问题: 客户端发送了验证,但是没有设置密码
解决方法:去从的.conf文件,配置如下
在这里插入图片描述
接着,去主的.conf文件,配置如下
在这里插入图片描述

模拟Master破坏

kill 22720

现在只需静观就行,如果你之前做过其他项目,缓存太多,可能需要等半小时才能转变Master,一般情况下一两分钟甚至更短。

大约30秒后,6391日志:
在这里插入图片描述

6392日志:
在这里插入图片描述
可以看到6392已经成为了新的Master,6390随即就成为了6392的Slave

至此,哨兵模式实例结束。
注意:
如果重启6391,6390会以为主人回来了,6391的日志会显示,回复了6390的请求,但实际上,在6391上set是无法实现的,证明真正的主还是6392,其数据已在6392上同步。几分钟后,6390会发现6391已不是从前的那个主人,6390重新回到6392,6391日志会显示6390 is lost,一切回归正常。

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值