目录
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
三台机器分别安装
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-server、redis-benchmark、redis-cli和redis.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}
配置文件使用/usr/redis目录下的redis.conf
1、配置从服务器
主服务器192.168.1.240不需配置
从服务器 192.168.1.241,192.168.1.242修改配置文件,添加
slaveof 192.168.1.240 6379
2、测试主从效果
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
当旧的master启动,讲转换为从服务器
原来的master配置文件redis.conf 自动添加slaveof 192.168.1.242 6379,变为从服务器
原来的master配置文件sentinel.conf 自动修改为sentinel monitor mymaster 192.168.1.242 6379 1
1、第一次启动必须先启动master
2、slave的优先级是一个整数展示在Redis的Info输出中。如果master不再正常工作了,哨兵将用它来选择一个slave提升=升为master。优先级数字小的salve会优先考虑提升为master,所以例如有三个slave优先级分别为10,100,25哨兵将挑选优先级最小数字为10的slave。0作为一个特殊的优先级,标识这个slave不能作为master,所以一个优先级为0的slave永远不会被
# 哨兵挑选提升为master
默认:slave-priority 100