一、哨兵机制的概述:
哨兵机制是一种特殊的模式,Redis自身提供了哨兵的管理命令,哨兵机制是作为一个独立的进程并独立运行的。它的实现原理是哨兵通过发送命令,等待Redis服务器的响应,从而监控多个Redis实例。当一个主服务器宕机时,sentinel哨兵监控服务器会探测到主服务器状态,根据多个sentinel监控服务器的监控报告情况进行投票协商,判断此主服务器是否确实是宕机;此时又分为主观下线和客观下线,主观下线是指:一个sentinel实例判断出某节点为下线状态即为最终状态,客观下线是指:多个sentinel节点协商后判断出某节点最终状态为下线状态。
二、sentinel机制配置
首先,我们需要配置redis数据库集群,此实验是配置一个主服务器和两个从服务器。
1)创建多实例目录并拷贝配置文件
[root@server redis]# mkdir /redis/db{1,2,3}
[root@server ~]# cp /etc/redis.conf /redis/
[root@server ~]#
[root@server ~]# cd /redis/
[root@server redis]# ls
db1 db2 db3 redis.conf
[root@server redis]#
[root@server redis]# cp redis.conf db1/redis.conf.1
[root@server redis]# cp redis.conf db2/redis.conf.2
[root@server redis]# cp redis.conf db3/redis.conf.3
[root@server redis]# ls db1/
redis.conf.1
[root@server redis]# ls db2/
redis.conf.2
[root@server redis]# ls db3/
redis.conf.3
[root@server redis]#
2)修改个配置文件的配置信息(port,pidfile,logfile,dir)
实例1:
[root@server redis]# cd db1/
[root@server db1]# ls
redis.conf.1
[root@server db1]# vim redis.conf.1
port 6379
logfile /var/log/redis/redis.log
pidfile /var/run/redis_6379.pid
dir /redis/db1 //把主库的dir目录位置改为多实例的目录位置;
[root@server db1]# redis-se
redis-sentinel redis-server
[root@server db1]# redis-server redis.conf.1
[root@server db1]#
[root@server db1]# ss -tunlp | grep 6379 //主库已然配置完成;
tcp LISTEN 0 128 192.168.126.141:6379 *:* users:(("redis-server",pid=6543,fd=5))
tcp LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=6543,fd=4))
实例二:
[root@server db1]# cd ../db2/
[root@server db2]# ls
redis.conf.2
[root@server db2]# vim redis.conf.2
port 6380 //修改默认端口为6379:
pidfile /var/run/redis_6380.pid //修改pid文件;
logfile /var/log/redis/redis2.log //修改实例2的日志保存文件;
dir /redis/db2 //修改实例2的dir目录;
daemonize yes //在后台以守护进程启动;
[root@server db2]# chown -R redis.redis /redis/*
[root@server db2]# redis-server redis.conf.2
[root@server db2]#
[root@server db2]#
[root@server db2]# ss -tunlp | grep 6380
tcp LISTEN 0 128 192.168.126.141:6380 *:* users:(("redis-server",pid=15590,fd=5))
tcp LISTEN 0 128 127.0.0.1:6380 *:* users:(("redis-server",pid=15590,fd=4))
[root@server db2]#
实例三:
[root@server db2]#