redis介绍及主从配置

 

本文主要包含两个部分:简单介绍下什么是redisredis主从配置及基于sentinel实现redis集群故障自动切换

redis基于内存亦可持久化的日志型、Key-Value数据库,目前接触到redis主要应用在session缓存方面。

一、系统环境

平台:Centos7.0_x86_64

主机:192.168.115.11192.168.115.12192.168.115.13

规划:11master节点,1213slave节点

二、安装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启动进程

wKioL1Wtte3gkpZWAAApkKc9ZZY950.jpg

 

wKiom1WttBuzhVKvAAAtkoidjPs341.jpg

7.查看日志发现如下提示信息

tail /usr/local/redis/logs/redis.log

wKioL1WtthaToVIxAABoxpegtM8275.jpg

添加以下信息

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.在主节点上写入一条数据

wKiom1WttFDip5dvAACYRuFgNdk881.jpg

4.在从节点上查看

wKiom1WttGGz-Ds3AABXDE1kGQ4890.jpg

测试数据正常同步

从节上日志信息

wKiom1WttHSwFQYhAADHo73riRI180.jpg

四、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 &

wKiom1WttIrww5iyAACs33lbKkU180.jpg

查看服务监听端口号

wKioL1WttoPwnfe0AAA36C0DSpg459.jpg

在主服务器上查看当前服务器主从角色

/usr/local/redis/bin/redis-cli -h 192.168.115.11 -p 6379 info Replication

wKioL1WttpLjcso-AABd2bV_fFM937.jpg

在从服务器上查看当前服务器角色

/usr/local/redis/bin/redis-cli -h 192.168.115.12 -p 6379 info Replication

wKiom1WttL3BQ40UAAB7aMa3NMc041.jpg

4.模拟故障转移

关闭主服务器redis进程,此时从服务器在重新选举主服务器,从服务器上优先级低的会被选举会master

 在从12

wKioL1WttqvgXx2fAAFm-HOpfDc651.jpg

在从13

wKiom1WttNySJDbGAAEmEJrfu_Y074.jpg

此时12已经成为新的master

wKioL1WttxiAx5EkAABNN1HZfpY199.jpg