一、Redis主从配置
关于配置文件redis.conf的一些说明
master配置:redis-6379.conf
deamonize yes #表示开启后台运行
pidfile /var/run/redis-6379.pid #pid文件
logfile 6379.log #日志文件
slave配置:redis-6380.conf
port 6380
deamonize yes
pidfile /var/run/redis/6380.pid
logfile 6380.log
slave-read-only yes #从库只能进行读操作
replicaof 127.0.0.1 6379 #slaveof 表示作为从库的一个配置 从本机的6379同步数据
启动master:redis-server redis-6379.conf
启动slave: redis-server redis-6380.conf
查看启动的redis的信息,包含主从配置关系,以master 的为例:redis-cli -p 6379 info replication
在启动了主库没启动从库的情况下,显示如下:
启动从库,查看从库配置关系
查看主从是否配置成功,也就是在master中set一个字符串,看slave是否有同步过来:
redis-cli -p 6379 set hello helloworld
redis-cli -p 6380 get hello
二、Redis哨兵基本工作原理
1.三个定时任务:每隔10秒,每隔sentinel会向master和slave节点执行info命令,目的是为了确认主从关系;每隔2秒,sentinel通过master内部的channel来交换信息,目的是交互每隔sentinel对master节点的判断信息;每隔1秒Sentinal对其他节点(包括master,slave,Sentinal)执行ping操作,若master30秒没有回复,就对该master节点进行主观下线,并询问其他Sentinal节点是否可以客观下线
2.领导者的选举:每个主观下线的Sentinal节点要求其他节点将他设置为领导者;收到命令的Sentinal如果还没统一过其他的,就会同意;该Sentinal节点票数过半且达到quorum值,就成为领导者;当出现多个领导者的时候,会等待一段时间重新选举。
3.选出新的master节点:顺序如下:选出slavepriority最高的节点(默认相同);选择复制偏移量最大的节点;选择启动最早的
在所有的节点配置结束之后,Sentinel会通知客户端节点变更信息。客户端连接新的master节点。