三、具体配置步骤
1、在master和slave上分别安装redis
# su -
# tar zxf redis-2.8.17.tar.gz
# cd zxf redis-2.8.17
# make && make install
# cd ..
# mv redis-2.8.17 /app/tomcat/redis
# chown -R tomcat.app /app/tomcat/redis
2、配置redis
# su - tomcat
# cd /app/tomcat/redis
# mkdir {bin,rdb,conf,log}
# mv redis.conf sentinel.conf ./conf/
# find /app/tomcat/redis/ -maxdepth 1 -type f -delete
# cd src
# mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server ../bin/
编辑/app/tomcat/redis/conf/redis.conf文件,修改如下内容:
daemonize yes
pidfile /app/tomcat/redis/redis.pid
port 6376
logfile /app/tomcat/redis/log/redis.log
dir /app/tomcat/redis/rdbmaxmemory 16106127360 #给redis设定最大使用内存,这里是15G,根据实际情况而定。
3、在master和slave上分别安装keepalived
# su # tar zxf keepalived-1.1.15.tar.gz
# cd keepalived-1.1.15
# ./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.18-164.el5-x86_64
# make
# make install
# cp /usr/local/sbin/keepalived /sbin/keepalived
4、master上的keepalived配置
# cd /etc/keepalived
# >keepalived.conf
# vi keepalived.conf #添加如下内容
! Configuration File for keepalived
启动顺序
1、分别启动master和slave上redis
2、给master和slave上的redis设置检测的key和value
# /app/tomcat/redis/bin/redis-cli set name test
3、先启动salve上的keepalived,启动方法,用root用户执行命令/etc/init.d/keepalived start
4、用同样的方法启动master上的keepalived
注意事项:
执行ip addr show bond0命令查看VIP绑定在哪个主机上,执行redis-cli info查看主从关系,确保VIP绑定的机器一定要是redis中的master。
如果不是,通过手动关闭keepalived进行调整,一定要保证VIP和主从复制关系正确。首次使用前调整好,后续自动切换基本不会有问题。
五、监控
master挂了,slave会接管服务,那如何去恢复master,让他恢复之后成为slave的角色呢。这就需要要每台主机上部署一个监控脚本,定时每分钟监测一次。脚本如下:
# cat monitor_redis.sh
#!/bin/bash
num_proc=$(/bin/ps -fe|grep [k]eepalived|wc -l)
active=$(/app/tomcat/redis/bin/redis-cli get name)
if [ "${num_proc}" != "3" ];then
if [ "${active}" != "test" ];then
/app/tomcat/bin/restart-redis.sh &>/dev/null
if [ "$(/bin/ps -ef|grep [r]edis-server|wc -l)" == "1" -a "${active}" == "test" ];then
sleep 30
/usr/bin/sudo /etc/init.d/keepalived start &>/dev/null
else
/app/tomcat/redis/bin/redis-cli set name test
[ "${active}" == "test" ] && /usr/bin/sudo /etc/init.d/keepalived start &>/dev/null
fi
else
/usr/bin/sudo /etc/init.d/keepalived start &>/dev/null
fi
fi