本文主要包含两个部分:简单介绍下什么是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
|