1、部署主从复制模式,windows的已经讲过了,讲一下linux的主从复制。
我的redis.conf目录: /usr/local/redis/etc/redis.conf
复制redis.conf到/usr/local/redis目录下面,复制3份,分别是redis7269.conf,redis7270.conf,redis7271conf
2、修改配置文件:
公共修改:
port 端口号
bind 127.0.0.1 因为是在一个服务器上,这个ip不用修改
daemonize yes 默认后台运行
pidfile /var/run/redis_端口号.pid
logfile "端口号.log"
dbfilename dump端口号.rdb
注意:如果设置了密码:主从都要有requirepass 和 masterauth。因为哨兵模式下,主服务器会变成从服务器。
7270和7271修改:
slaveof 127.0.0.1 7269
3、启动服务:
进入redis目录,执行命令:
bin/redis-server redis7269.conf bin/redis-server redis7270.conf bin/redis-server redis7271.conf,
如果出现错误,是配置文件出错,需要重新配置。
注意:每次修改配置文件,要先停止服务,
bin/redis-cli -h 127.0.0.1 -p 7269 shutdown或者在客户端口:执行shutdown。
然后在重新启动服务,否则修改的配置是不会执行的。这个坑弄了我好长时间。
4、检查是否启动成功:命令:ps -ef | grep redis
5、查看主从关系是否配置成功,执行命令:
bin/redis-cli -p 7269
auth 密码
info replication
如果 主服务器connected——slaves:0,说明主从关系配置失败,要检查从服务器日志。就是之前公告配置的端口号.log。
查看错误信息,修改配置,关掉服务,重新启动。
6、//主从复制配置好以后,再配置哨兵模式
在/usr/local/redis 下新增sentinel27269.conf sentinel27270.conf sentinel27271.conf三个文件
文件内容:
# Generated by CONFIG REWRITE
daemonize yes//默认后台启动
port 27269//端口号
dir "/tmp"
sentinel myid 2a616f0e6bbc46030046c115e2371d2a7958c25e
sentinel monitor mymaster 127.0.0.1 7269 2 //这个是一样的
sentinel down-after-milliseconds mymaster 3000
sentinel failover-timeout mymaster 10000
sentinel auth-pass mymaster 密码 //如果设置了密码,这块是要写的
具体其他配置的含义,可以自己去网上查找。
注意:密码设置好了,就不要再修改了,还有就是sentinel.conf里的配置尽量能确定好,因为sentinel.conf启动后就没办法再改配置了。
反正我是没找到怎么去中断sentinel.conf的运行。
然后就是启动sentinel.conf了。
命令:bin/redis-sentinel sentinel27269.conf bin/redis-sentinel sentinel27270.conf bin/redis-sentinel sentinel27271.conf
检查是否启动成功:命令:ps -ef | grep redis
7、测试
在7269客户端,执行shutdown,这样7269就中断啦。
然后在7270客户端,执行 info replication命令。
这个截图是7269重新启动后的截图,如果7269没有重新启动,是没有:
并且连接数是1。
这个结果就说明在哨兵模式下,当主服务7269中断后,会随机在子服务中来选择一个作为主服务器,剩余的那个子服务也会重新连接新的子服务来当主服务。然后在重新启动7269后,7269也不会重新变成主服务,而是7270的子服务。
如果没有出现以上信息,需要自行去看日志解决。
这个问题是我配置时出现的问题,具体原因是redis7269.conf没有配置密码masterauth