redis介绍及主从配置
本文主要包含两个部分:简单介绍下什么是redis、redis主从配置及基于sentinel实现redis集群故障自动切换。
redis基于内存亦可持久化的日志型、Key-Value数据库,目前接触到redis主要应用在session缓存方面。
一、系统环境
平台:Centos7.0_x86_64
主机:192.168.115.11、192.168.115.12、192.168.115.12
规划:11为master节点,12、13为slave节点
二、安装redis
1.软件安装
软件包:redis-2.6.4.tar.gz
tar -zxvf redis-2.6.4.tar.gz
cd redis-2.6.4
make PREFIX=/usr/local/redis install或者使用该命令指定安装路径
2.创建相关目录
mkdir -pv /usr/local/redis/{logs,var,etc}
mkdir -pv /data/redis
3.安装完bin下二进制文件介绍
redis-server: #redis服务器的daemon启动程序
redis-cli: #redis命令行操作工具
redis-check-dump: #用于检查本地数据库的rdb文件
redis-check-aof: #对更新日志appendonly.aof检查,是否可用
redis-benchmark: #redis性能测试工具,可以测试在本系统本配置下的读写性能
4.修改配置文件,修改如下几项
vi /usr/local/redis/etc/redis.conf
daemonize yes #以守护进程方式启动redis
pidfile /usr/local/redis/var/redis.pid #pid文件存放位置
logfile /usr/local/redis/logs/redis.log #日志文件存放路径
dir /data/redis #数据文件路径
5.启动redis服务
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
6.查看redis启动进程
7.查看日志发现如下提示信息
tail /usr/local/redis/logs/redis.log
添加以下信息
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sysctl -p
8.为redis提供启动脚本
cp /root/redis-2.6.4/utils/redis_init_script /etc/init.d/redis
修改文件
添加如下一行
# chkconfig: 2345 80 90
以下内容根据实际情况做修改
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli
PIDFILE=/usr/local/redis/var/redis.pid
CONF="/usr/local/redis/etc/redis.conf"
chkconfig --add redis
service redis start
三、主从配置
1.在从节点上修改如下配置
slaveof 192.168.115.11 6379
2.启动服务
3.在主节点上写入一条数据
4.在从节点上查看
测试数据正常同步
从节上日志信息
四、redis集群故障自动切换
1. Sentinel介绍
Sentinel 系统用于管理多个 Redis 服务器(instance),该系统执行以下三个任务:
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover):当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器。
2.sentinel配置文件
/usr/local/redis/etc/sentinel.conf
port 26379
sentinel monitor mymaster 192.168.115.11 6379 2 #定义了监听的主服务器ip及端口,集群中的票数该值不大于集群中slave的个数
sentinel down-after-milliseconds mymaster 30000 #默认master失效时长
sentinel can-failover mymaster yes #是否允许实施“failover”(故障转移),即当master挂了slave提升为master
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 900000
3.启动sentinel
在3台服务器上启动服务
/usr/local/redis/bin/redis-server /usr/local/redis/etc/sentinel.conf –sentinel &
查看服务监听端口号
在主服务器上查看当前服务器主从角色
/usr/local/redis/bin/redis-cli -h 192.168.115.11 -p 6379 info Replication
在从服务器上查看当前服务器角色
/usr/local/redis/bin/redis-cli -h 192.168.115.12 -p 6379 info Replication
4.模拟故障转移
关闭主服务器redis进程,此时从服务器在重新选举主服务器,从服务器上优先级低的会被选举会master
在从12上
在从13上
此时12已经成为新的master