Redis主从复制与故障切换

目录

目录1

一.概述1

. 实验目的2

三.试验环境2

. 说明2

. 拓扑2

. 实施步骤2

6.1、分别安装redis2.8.32

6.2、配置主从同步3

6.3、配置主从故障切换4

. 注意事项4

 

 

一.概述

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制。

Redis 2.8版开始正式提供名为Sentinel的主从切换方案,Sentinel用于管理多个Redis服务器实例,主要负责三个方面的任务:

    1. 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。

    2. 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。

    3. 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。

. 实验目的

实验用于了解redis主从复制,故障自动切换功能

三.试验环境

设备名称

操作系统

安装软件

虚拟机(3台

Centos6.8 X64

Redis2.8.3

. 说明

实验演示redis主从数据同步,主服务宕机,从服务器被选择为新的主服务器,并自动配置其他从服务器的主服务器为本机

五. 拓扑

192.168.1.240  redis  sentinel

192.168.1.241  redis

192.168.1.242  redis

六. 实施步骤

6.1、分别安装redis2.8.3

 三台机器分别安装

1、安装

$ yum install gcc -y

$ cd /home/jryknet

$ wget http://download.redis.io/releases/redis-2.8.3.tar.gz

$ tar xzf redis-2.8.3.tar.gz

$ cd redis-2.8.3

$ make

$ make install

 

2、编译完成后,在Src目录下,有四个可执行文件redis-serverredis-benchmarkredis-cliredis.conf。然后拷贝到一个目录下。

mkdir /usr/redis

cp redis-server  /usr/redis

cp redis-benchmark /usr/redis

cp redis-cli  /usr/redis

cp /home/redis-2.8.3/redis.conf  /usr/redis

cd /usr/redis

 

3、启动Redis服务。

$ redis-server   redis.conf

 

4、然后用客户端测试一下是否启动成功。

$ redis-cli

redis> set age 13

OK

redis> get age

"13"

 

5、配置为后台启动

vi /usr/redis/redis.conf

daemonize yes

#日志目录

logfile "/tmp/redis.log

 

6、配置服务脚本启动(略)

启动方式

/etc/init.d/redis

Usage: /etc/init.d/redis {start|stop|restart|force-reload}

6.2、配置主从同步

配置文件使用/usr/redis目录下的redis.conf

1、配置从服务器

主服务器192.168.1.240不需配置

从服务器 192.168.1.241,192.168.1.242修改配置文件,添加

slaveof 192.168.1.240 6379

2、测试主从效果

redis主从复制故障转移_故障转移

redis主从复制故障转移_主从_02


6.3、配置主从故障切换

1、主服务器192.168.1.240配置

cp /home/jryknet/redis-2.8.3/sentinel.conf /usr/redis/ #配置文件

cp /home/jryknet/redis-2.8.3/src/redis-sentinel /usr/redis/  #程序脚本文件

2、配置/usr/redis/sentinel.conf ,启动sentinel 执行命令redis-sentinel

port 26379

daemonize no

logfile "/var/redis/log/sentinel.log"

sentinel monitor mymaster 192.168.1.240 6379 1

sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

3,、查看状态

redis-cli info |grep role

role:master

redis-cli info |grep role

role:slave

4、测试

停止主redis,切换为192.168.1.242为新的master


redis主从复制故障转移_故障转移_03

当旧的master启动,讲转换为从服务器


redis主从复制故障转移_主从_04

原来的master配置文件redis.conf 自动添加slaveof 192.168.1.242 6379,变为从服务器

原来的master配置文件sentinel.conf 自动修改为sentinel monitor mymaster 192.168.1.242 6379 1

七. 注意事项

1、第一次启动必须先启动master

2slave的优先级是一个整数展示在RedisInfo输出中。如果master不再正常工作了,哨兵将用它来选择一个slave提升=升为master。优先级数字小的salve会优先考虑提升为master,所以例如有三个slave优先级分别为1010025哨兵将挑选优先级最小数字为10slave0作为一个特殊的优先级,标识这个slave不能作为master,所以一个优先级为0slave永远不会被 
哨兵挑选提升为master 
默认:slave-priority 100