目标
redis主从复制,我们里一台Master两台slaver,做过mysql主从复制的知道这个Master和Slave是什么意思,我这里就不啰嗦了,Master端口6379,两台Slave分别6380和6381,我们将演示主从复制和主节点挂了之后从节点通过选举的办法由其中一个Slave变成Master。
怎么安装我就不说了,很简单的一行命令
yum -y install redis
准备工作
拷贝一份redis.conf 到/usr/local/java/redis
修改配置文件 找到bind 127.0.0.1 注释掉
分别拷贝其他两份,修改端口信息
准备sentinel.conf
命令:
cp etc/redis.conf usr/local/java/redis
vim redis.conf -->查找:/bind 小写:n 找到bind 127.0.0.2前面加一个#
(1) mv redis.conf redis6379.conf
(2) cp redis6379.conf redis6380.conf 并修改端口信息
(3) cp redis6379.conf redis6381.conf 并修改端口信息
(4) touch sentinel.conf-->vim sentinel.conf
将如下命令拷贝进去 esc:wq 保存退出
sentinel monitor yangyao_Sentinel 127.0.0.1 6381 1
解释与一下:
sentinel monitor是固定写法
yangyao_Sentinel给哨兵去个名字
后面是ip+端口+票数
票数的意思是:当master挂了之后,至少有多少个哨兵发现master挂了之后重新开始选举,比如你有6台,你可能需要设置为4,我这里就就一主两从我暂时设置为1
启动redis6379

启动redis6380

启动redis6381

我们紧接着看一下每个redis的状态
命令:info replication,注意这里的role角色,现在每个都是master,因为我们还没区分主从



我们现在6379上面set aaa 6379,其他两台先上面都不写,在6379上面可以get aaa,其他两台上面都是空



现在数据只有6379有,我们接着在80和81上面执行命令:slaveof 127.0.01 6379,意思是我们将80和81设为slaves,执行后我们可以看见role已经变成了slave了,并且master_host也指向了6379,master_link_status状态是up状态


接着我们看一下80和81上面我们能不能获取到之前6379set aaa的值,可以看到现在两台slave上面已经有了master的值了,此时你再在主机上set只,两台slave就可以自动同步了。


演示非哨兵模式
现在我们模拟6379宕机,看看两台slave的状态



可以看出,两台slave依然是slave,链接的master 状态down,我们重新启动master看看


由此看来,master重新恢复后,依然是6379是主机,80和81依然是从
演示哨兵模式
命令:/usr/bin/redis-server sentinel.conf --sentinel

可以看到这里哨兵启动后把80作为master了,验证一下,6379已经变成了slave了

我们现在试试在80set一个值,看79 和81是否正常同步


数据已经正常同步了,我们模拟master宕机,kill 80

结果:6379被选举为master

我们验证一下79和81


此时我们的哨兵已经帮我们完成了自动切换,自动容灾的状态了。




