原理什么的就不写了,哨兵模式是在主从模式上追加了哨兵
我这里选了三台服务器:
172.1.1.1设为主机;172.1.1.2和172.1.1.3设为从机
一、主机节点172.1.1.1修改Redis.conf配置
#bind进行注释
#bind 127.0.0.1
#设置yes,其他服务器可以访问本地redis
protected-mode yes
#redis的端口
port 6379
#设置yes,开启线程守护后台运行
daemonize yes
#设置pid文件路径
pidfile /opt/tools/redis/run/redis.pid
#设置redis日志文件路径
logfile /opt/tools/redis/logs/redis.log
#设置Redis文件存储目录
dir /opt/tools/redis/data
#设置Redis密码
requirepass Re9Dis9?a
#配置主节点redis的密码,尽可能和主节点一致;主要用来重启时连接新选举的master用
masterauth Re9Dis9?a
#开启Redis持久化AOF
appendonly yes
#修改完保存启动
#查看log/redis.log日志,如下
二、从节点172.1.1.2修改Redis.conf配置
#bind进行注释
#bind 127.0.0.1
#设置yes,其他服务器可以访问本地redis
protected-mode yes
#redis的端口
port 6379
#设置yes,开启线程守护后台运行
daemonize yes
#设置pid文件路径
pidfile /home/tools/redis/run/redis.pid
#设置redis日志文件路径
logfile /home/tools/redis/logs/redis.log
#设置Redis文件存储目录
dir /home/tools/redis/data
#设置Redis密码
requirepass Re9Dis9?a
#配置主节点redis的密码,尽可能和主节点一致
masterauth Re9Dis9?a
#设置从节点的主节点地址
replicaof 172.1.1.1 16379
#开启Redis持久化AOF
appendonly yes
#修改完保存启动
#查看log/redis.log日志,如下
三、从节点172.1.1.3修改Redis.conf配置
#bind进行注释
#bind 127.0.0.1
#设置yes,其他服务器可以访问本地redis
protected-mode yes
#redis的端口
port 6379
#设置yes,开启线程守护后台运行
daemonize yes
#设置pid文件路径
pidfile /home/tools/redis/run/redis.pid
#设置redis日志文件路径
logfile /home/tools/redis/logs/redis.log
#设置Redis文件存储目录
dir /home/tools/redis/data
#设置Redis密码
requirepass Re9Dis9?a
#配置主节点redis的密码,尽可能和主节点一致
masterauth Re9Dis9?a
#设置从节点的主节点地址
replicaof 172.1.1.1 16379
#开启Redis持久化AOF
appendonly yes
#修改完保存启动
#查看log/redis.log日志,如下
以上,部署完主从复制Redis节点后开始部署哨兵
四、三个节点部署哨兵节点
修改Redis的conf文件夹下的sentinel.conf文件
#端口号
port 26379
#设置yes,开启线程守护后台运行
daemonize yes
#pid文件路径
pidfile "/home/tools/sentinel/run/sentinel-26379.pid"
#日志文件路径
logfile "/home/tools/sentinel/logs/26379.log"
#文件存储目录路径
dir "/opt/tools/sentinel/data"
#主节点ip 端口 哨兵数,注:这里三节点,哨兵填2 这里三节点的ip都填一样的,不是一个哨兵监控当前服务器的
sentinel monitor mymaster 172.1.1.1 16379 2
#主节点Redis密码
sentinel auth-pass mymaster Re9Dis9?a
启动三个哨兵节点:
./bin/redis-sentinel conf/sentinel.conf
查看启动后的三台Redis状态
172.1.1.1
172.1.1.2
172.1.1.3
五、验证哨兵模式是否正常及故障节点恢复
1.停掉主节点的Redis,注:不停止Sentinel
1.1监控master的sentinel日志;自动选举其他节点为新master(图没有了请以实际操作监控为准)
1.2登录对应新选举为master的服务器redis查看;选举master成功
1.3修复故障的Redis节点, 并重启;重启完后再重启对应节点上的Sentinel
1.4再次登录重新选举后的master节点Redis查看,可以看到修复的节点再次接入并成为了从节点
1.5查看原master节点信息,已经变成了slave
补充说明:
如何将appendonly.aof持久化文件里面的数据恢复到redis数据库中?
首先保证持久化原来是开启的
恢复Redis后,然后将appendonly.aof这个文件放到redis-cli的同级目录下,然后断开连接,重启redis服务,重新连接redis客户端,这样就可以吧appendonly.aof文件中的内容给恢复