Redis主从哨兵模式

一、Redis主从模式配置

1、环境说明

主机名称

IP地址

redis版本和角色说明

master

20.0.0.40

主服务器

Redis 5.0.7

slave1

20.0.0.50

从服务器

Redis 5.0.7

slave2

20.0.0.60

从服务器

Redis 5.0.7

Slave3

20.0.0.70

从服务器

Redis 5.0.7

2、Redis安装

所有服务器上安装,在master上演示

 [root@master ~]# tar zxvf redis-5.0.7.tar.gz

 [root@master ~]# cd redis-5.0.7/

 [root@master redis-5.0.7]# make -j4

 [root@master redis-5.0.7]# make PREFIX=/usr/local/redis install

 [root@master redis-5.0.7]# ln -s /usr/local/redis/bin/* /usr/local/bin/

 [root@master redis-5.0.7]# cd utils/

 [root@master utils]# ./install_server.sh

 

 

 

 

3、修改配置文件

master配置文件修改

  [root@master ~]# vim /etc/redis/6379.conf

#70行 修改监听地址为20.0.0.40

 

 

 

 #137行 开启守护进程

 

 

 

#172行 修改日志文件目录

 

 

 

 

#264行 修改工作目录

 

 

 

 

#700行 开启AOF持久化功能

 

 

 

 

[root@master utils]# /etc/init.d/redis_6379 restart      #开启redis

 [root@master utils]# netstat -anpt | grep redis

 

 

 

4、slave1配置文件修改

 [root@slave1 ~]# vim /etc/redis/6379.conf

 #70行 修改监听地址为20.0.0.50

 

 

 

#137行 开启守护进程

 

 

 

 #172行 修改日志文件目录

 

 

 

 

 #264行 修改工作目录

 

 

 

#288行  修改IP和端口

 

 

 #700行 开启AOF持久化功能

 

 

 

 

[root@slave1 utils]# /etc/init.d/redis_6379 restart      #开启Redis

[root@slave1 utils]# netstat -anpt | grep redis          #查看端口号

 

 

 

slave2配置文件修改

[root@slave2 ~]# vim /etc/redis/6379.conf

#70行 修改监听地址为20.0.0.60

 

 

 

#137行 开启守护进程

 

 

 

#172行 修改日志文件目录

 

 

 

#264行 修改工作目录

 

 

 

#288行  修改IP和端口

 

 

#700行 开启AOF持久化功能

 

 

 

[root@slave2 utils]# /etc/init.d/redis_6379 restart      #开启Redis

 [root@slave2 utils]# netstat -anpt | grep redis

 

 

 

 

slave3配置文件修改

[root@slave3 ~]# vim /etc/redis/6379.conf

#70行 修改监听地址为20.0.0.70

 

 

#137行 开启守护进程

 

 

#172行 修改日志文件目录

 

 

#264行 修改工作目录

 

 

#288行  修改IP和端口 

 

 

 

#700行 开启AOF持久化功能

 

 

 

 

[root@slave3 utils]# /etc/init.d/redis_6379 restart      #开启Redis

[root@slave3 utils]# netstat -anpt | grep redis

 

 

 

5、测试效果

验证主从效果(master上看日志)

 

 [root@master utils]# vi /var/log/redis_6379.log

 

 

 

master上验证从节点

 [root@master utils]# redis-cli -h 20.0.0.40 -p 6379

 20.0.0.10:6379> info replication

 

 

 在主上面插入数据验证

 

 

 slave1上查看

 

 

 slave2上查看

 

 

 slave3上查看

 

 

 二、Redis哨兵模式

2.1、Redis sentinel介绍

Redis Sentinel是Redis高可用的实现方案。Sentinel是一个管理多个Redis实例的工具,它可以实现对Redis的监控、通知、自动故障转移。

2.2、哨兵模式的作用

① 监控

不断的检查master和slave是否正常运行。master存活检测、master与slave运行情况检测

② 通知(提醒)

当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。

③ 自动故障转移

断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址

哨兵是一台redis服务器,只是不提供数据服务

哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的redis工作节点是否正常,当master出现问题的时候,因为其他节点与主节点失去联系,因此会投票,投票过半就认为这个master的确出现问题,然后会通知哨兵间,然后从slaves中选取一个作为新的master,至少需要3个或3个以上服务器

2.3、环境说明

主机名称

IP地址

redis版本和角色说明

master

20.0.0.40

Sentinel1

Redis 5.0.7

slave1

20.0.0.50

Sentinel2

Redis 5.0.7

slave2

20.0.0.60

Sentinel3

Redis 5.0.7

Slave3

20.0.0.70

Sentinel4

Redis 5.0.7

2.4、哨兵模式配置

所有节点都需要修改

 

 [root@master ~]# vi redis-5.0.7/sentinel.conf

 17行/protected-mode no                                  #关闭保护模式

 26行/daemonize yes                                       #指定sentinel为后台启动

 36行/logfile "/var/log/sentinel.log"                    #指定日志存放路径

 65行/dir "/var/lib/redis/6379"                          #指定数据库存放路径

 84行/sentinel monitor mymaster 20.0.0.40 6379 3        #至少几个哨兵检测到主服务器故障了,才会进行故障迁移,全部指向masterIP

 113行/sentinel down-after-milliseconds mymaster 30000    #判定服务器down掉的时间周期,默认30000毫秒(30秒)

 146行/sentinel failover-timeout mymaster 180000         #故障节的的最大超时时间为180000(180秒)

2.5、启动哨兵模式

先启master,再启slave

 redis-sentinel redis-5.0.7/sentinel.conf &

 

 

 

 

 

 

 

 

 

2.6、查看哨兵信息

  master查看

 [root@master ~]# redis-cli -h 20.0.0.40 -p 26379 info Sentinel

 

 

slave1上查看

 [root@slave1 ~]# redis-cli -h 20.0.0.50 -p 26379 info Sentinel

 

 

 slave2上查看

 [root@slave2 ~]# redis-cli -h 20.0.0.60 -p 26379 info Sentinel

 

 

slave3上查看

 [root@slave3 ~]# redis-cli -h 20.0.0.70 -p 26379 info Sentinel

 

 

2.7、故障模拟

2.7.1、

查看master进程号

[root@master ~]# ps -ef | grep redis

 

 

杀死master上redis-server的进程号

[root@master ~]# kill -9 9479     #master上redis-server的进程号

2.7.2、验证结果

[root@master ~]# tail -f /var/log/sentinel.log

 

 

[root@master ~]# redis-cli -p 26379 INFO Sentinel

 

 

 

posted @ 2020-11-17 18:51  escape丶丶  阅读(126)  评论(0)    收藏  举报