1.先完成主从架构的配置,确保可用。可参考(VMware虚拟机14.0+CentOS7配置Redis的主从分布)
2.我的做法是在root下mkdir sentinel
新建一个文件夹叫sentinel,接着使用touch sentinel.conf
建立一个sentinel.conf的配置文件。
[root@localhost bin]# cd ~
[root@localhost ~]# mkdir sentinel
[root@localhost ~]# cd sentinel/
[root@localhost sentinel]# touch sentinel.conf
接着使用vim sentinel.conf
编辑该文件,新增加一行
sentinel monitor mymaster 192.168.*.* 7000 1
mymaster是为哨兵监视的主从架构起个名字,可以任意取
因为当前我在一台虚拟机上部署,所以使用的是该虚拟机的静态ip
port为自己设置的(默认为6379)
1是哨兵的数量(如果为5,那么只有当超过一半也就是3个哨兵说master已经宕机才会启动新的master选举以及自动故障转移这个过程)
3.复制执行文件
进入redis源码目录,进入源码目录下的src目录,复制redis-sentinel进入和redis-server同在的目录下
cp redis-sentinel /usr/redis/bin/
4.执行
cd /usr/redis/bin/
进入到文件夹下,一下命令启动
./redis-sentinel /root/sentinel/sentinel.conf
可见哨兵的端口默认是26379,多个哨兵就配置多个port,也就是在sentinel.conf下面新增,并改端口,可加个bind开启远程连接
port 26379
bind 0.0.0.0
dir "/usr/redis/bin"
sentinel monitor mymaster 192.168.253.9 7000 1
5.测试
当前master下有如下key
127.0.0.1:7000> keys *
1) "name"
2) "address"
3) "age"
接下去将宕掉master,观察变化
在新的master上查看数据,数据仍在,并且可读可写,既保存了数据又不会像纯主从架构一样master宕机整个系统就不能用
127.0.0.1:7001> keys *
1) "age"
2) "address"
3) "name"
127.0.0.1:7001> LPUSH lists zhangsan lisi wangwu
(integer) 3
另一个没选上的slave也同步到了数据
127.0.0.1:7002> KEYS *
1) "address"
2) "name"
3) "lists"
4) "age"
注意:之后宕机恢复来的节点将成为新的slave。
无法解决: 1.单节点并发压力问题 2.单节点内存和磁盘物理上限需要redis集群