参考:https://www.cnblogs.com/guolianyu/p/10172688.html、https://www.cnblogs.com/guolianyu/p/10239913.html
---------------------------------------------------------------------------------------------------------------------------------------------------------------
redis主从结构:
| 主机说明 | 主机IP | 主机端口 |
| master | 192.168.160.100 | 7000 |
| slave | 192.168.160.101 | 7001 |
| slave | 192.168.160.102 | 7002 |
1、由于redis是c编写的,所以需要gcc编译源码,centos7可以安装gcc4.8.5(gcc5.0及以上找不到适合系统的rpm)
可参考:https://blog.csdn.net/b13001216978/article/details/109116303
2、下载redis-5.0.9,下载地址:链接:https://pan.baidu.com/s/1r4U1TJjvZMrwo6t9OH5qvQ 提取码:0poq
3、移动到服务器/usr/local/redis目录下并解压(习惯放在此目录下)
4、在redis-5.0.9目录下执行make命令编译redis的源码,等待命令执行结束

5、准备三个redis的配置文件(redis安装包里面有redis.conf和sentinel.conf,本人根据自己需要修改了一些配置),下载地址:
链接:https://pan.baidu.com/s/1ipVRfVgUyi1ajl0kCZaaag 提取码:nwl9
下面是本人修改过的地方,大家可以根据需要自行配置,三个配置文件除了port、dir、logfile、appendfilename不同(本人由于使用的是一台服务器,所以dir设置分开存放了,dir对应的目录如redis-data-7000等大家可以自己创建),其他修改的地方相同:
# 1、设置可以访问的ip,如果不限制其他服务器访问可以设置为0.0.0.0-keyword
bind 127.0.0.1 192.168.160.100 192.168.160.101 192.168.160.102
# 2、redis主服务器设置端口为7000-keyword
port 7000
# 3、如果填yes则代表可以在后台运行-keyword
daemonize yes
# 4、设置logfile日志文件-keyword
logfile "redis-master-7000.log"
# 5、服务器配置masterauth作用主要是为了后期sentinel引入后重新选举master
# 并且7000端口redis重新加入主从复制时必备的,否则会出现权限不足-keyword
masterauth redis@1234
# 6、启用aof方式的数据持久化,方便快速恢复,丢失的数据尽量少-keyword
appendonly yes
# 7、设置aof文件名称
appendfilename "appendonly-master-7000.aof"
# 8、设置redis工作目录, aof也在这个目录生成-keyword
dir ./redis-data-7000
6、分别使用对应的配置文件启动redis主从,并通过命令ps -ef | grep redis查看启动结果

7、连接master,设置键值,测试是否会自动同步到slave,测试后发现7000中设置的值会自动同步到7001

8、sentinel创建及启动
上面下载的redis配置中有sentnel-27001.conf等三个配置文件,其中配置文件中对应的dir如(sentinel-work-27001)如果没有需要自己创建,否则会报错,需要注意启动的时候使用redis-sentinel命令而不是redis-server命令:

启动以后,程序会自动在sentinel的配置文件后面追加对应的配置信息:

9、redis的停止及sentinel测试
需要注意的是配置文件中设置的sentinel节点判断master节点挂掉的时间是30秒,而且必须至少两个节点判断挂掉才行,所以需要等待一小会儿,然后查看对应目录下的sentinel工作日志(sentinel-work-27001)是否自动进行了主备切换

下面是redis的master挂掉后sentinel做的事情,包括投票表决是否挂掉(vote)、选举新的master(elected)
以及故障迁移(failover)

现在连接上7001查看一下各个节点的角色信息:

翻到最下面就可以看到replication对应的信息了,现在7001变成了master,7002是slave:

我们再把7000的redis启动,然后再查看一下7001的info信息发现,7000自动变成了slave

加两条查看命令:
只查看主节点info命令返回的replication信息 :
src/redis-cli -h 192.168.102.196 -p 7001 -a YFc1p3zC2c5h!=$ info replication
只查看27001 sentinel节点的info命令返回的sentinel信息:
src/redis-cli -h 192.168.102.196 -p 27001 -a YFc1p3zC2c5h!=$ info sentinel