redis主从复制和故障切换
1)当启动一个Slave进程后,它会向Master发送一个SYNC Command,请求同步连接。
2)无论是第一次连接还是重新连接,Master都会启动一个后台进程,将数据快照保存到数据文件中,同时Master会记录所有修改数据的命令并缓存在数据文件中。
3)后台进程完成缓存操作后,Master就发送数据文件给Slave,Slave端将数据文件保存到硬盘上,然后将其在加载到内存中,接着Master就会所有修改数据的操作,将其发送给Slave端。
3)若Slave出现故障导致宕机,恢复正常后会自动重新连接,Master收到Slave的连接后,将其完整的数据文件发送给Slave
4)如果Mater同时收到多个Slave发来的同步请求,Master只会在后台启动一个进程保存数据文件,然后将其发送给所有的Slave,确保Slave正常。
server13的配置以及redis安装不赘述了,有需要的话移步 基于redis缓存数据库实现lnmp架构高速访问
server11:
安装redis
vim /etc/redis/6379.conf
slaveof 172.25.4.13 6379 从redis配置 bind 127.0.0.1 172.25.88.11 绑定自己的IP,让别人可以访问
看看redis能否正常运行....
server12:
安装redis
配置redis的sentinel
cd /mnt/redis/redis-3.2.5
cp sentinel.conf /etc/redis/
vim sentinel.conf
17 protected-mode no 一定要关闭保护模式,否则主从切换不成功,这个很容易忽略! 21 port 26379 管理端口 98 sentinel monitor mymaster 172.25.88.33 6379 2 #2个岗哨(选举的时候会用到),配置master106 sentinel down-after-milliseconds mymaster 5000#master或slave多长时间不能使用后标记为s_down状态131 sentinel failover-timeout mymaster 90000#若sentinel(岗哨)在该时间值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
vim /etc/redis/6379.conf
268 slaveof 172.25.88.33 6379 从redis配置 bind 127.0.0.1 172.25.88.22
scp sentinel.conf 172.25.88.13:/etc/redis/
scp sentinel.conf 172.25.88.11:/etc/redis/
server11,12,13
redis-server /etc/redis/sentinel.conf --sentinel
检测
1.一主双重是否成功
[[email protected] ~]$ ssh [email protected][[email protected] ~]# redis-cli -p 26379 127.0.0.1:26379> info master0:name=mymaster,status=ok,address=172.25.88.13:6379,slaves=2,sentinels=3
2.主从切换( failover )
[[email protected] redis]# redis-cli -h 172.25.88.13 shutdown
serve13先主动down,自己发现服务异常,但主动down不切换,
之后被动down,开始选举new master ,先确定两个岗哨的状态,之后为下一任master投票,最后11当选下一任master
server13已经下马,servre11现在是master,同时每个配置中的主从配置,也在原来的地方文件也更改了...