Redis集群部署.docx
《Redis集群部署.docx》由会员分享,可在线阅读,更多相关《Redis集群部署.docx(10页珍藏版)》请在冰豆网上搜索。
![Redis集群部署.docx](https://file1.bdocx.com/fileroot1/2022-12/7/3ea276a6-c578-4a81-9a3b-030d8ba95564/3ea276a6-c578-4a81-9a3b-030d8ba955641.gif)
Redis集群部署
北京创维海通数字技术有限公司
Redis集群部署方案
声明
本文件以及文件所包含的知识产权和版权归北京创维海通数字技术有限公司所有,北京创维海通数字技术有限公司拥有对文件内容的全部解释权、使用权。
XX或书面许可,任何机关、企业、个人均不允许对文件的内容和信息通过任何形式进行拷贝、复印和发布(例如网络、打印、复印、传真等)。
一经发现,北京创维海通数字技术有限公司保留对其侵权行为进行法律追究的权利。
修订历史
版本号
日期
描述
作者/贡献者
V1.0
2015-12-17
创建
黄志军
V1.1
2015-12-31
修改
王海龙
V1.2
2016-01-06
修改
1概述
本文档描述如何部署实现Redis双主备份。
2系统方案
2.1硬件设备
常用的web服务器即可
2.2操作系统
CentOS6.6,建议使用公司的PXE方式进行安装。
2.3其他组件
ØKeepalived
可通过yum方式安装,也可对源码进行编译安装,本文以yum安装为例。
ØRedis
建议从官方网站下载源码包进行编译安装。
下载链接:
http:
//download.redis.io/releases/redis-3.0.5.tar.gz
3部署过程
3.1环境准备
Ø实验环境介绍
服务器名称
IP
组件
主服务器
192.168.3.185(VIP:
192.168.3.188)
Redis、keepalived
从服务器
192.168.3.186(VIP:
192.168.3.188)
Redis、keepalived
ØYum源
修改yum源配置文件
#rm–rf/etc/yum.repos.d/*
#vim/etc/yum.repos.d/server.repo
[mirror]
name=163
baseurl=
enabled=1
gpgcheck=0
Ø程序包
上传软件包redis-3.0.5.tar.gz至/usr/local/src目录下
3.2软件安装
3.2.1Redis
#cd/usr/local/src
#tar–xvfredis-3.0.5.tar.gz
#cdredis-3.0.5
#make
#makePREFIX=/usr/local/redisinstall#安装到/usr/local/redis目录下
3.2.2Keepalived
#yum–yinstallkeepalived
3.3配置文件
3.3.1Redis
#cp/usr/local/src/redis-3.0.5/redis.conf/usr/local/redis/
#vim/usr/local/redis/redis.conf
daemonizeyes#启动时以后台模式运行
requirepass123456//注意去掉#注释,并修改密码
masterauth123456去掉#注释,并修改密码
3.3.2Keepalived
#/cp/etc/keepalived/keepalived.conf/etc/keepalived/keepalived.conf.bak
#vim/etc/keepalived/keepalived.conf
!
ConfigurationFileforkeepalived
global_defs{
notification_email{
admin@
}
notification_email_fromkeepalived@
smtp_server127.0.0.1
smtp_connect_timeout30
router_idLVS_DEVEL4
}
vrrp_scriptchk_redis{
script"/etc/keepalived/scripts/redis_check.sh"#监控redis脚本
interval2
}
vrrp_instanceVI_1{
stateMASTER#主服务器(备服务器写BACKUP)
interfaceem1#监听网卡名称
virtual_router_id51
priority101#优先级(备服务器写100)
authentication{
auth_typePASS
auth_passredis
}
track_script{
chk_redis
}
virtual_ipaddress{
192.168.3.188#虚IP
}
notify_master/etc/keepalived/scripts/redis_master.sh#主模式时执行的脚本
notify_backup/etc/keepalived/scripts/redis_backup.sh#备模式时执行的脚本
notify_fault/etc/keepalived/scripts/redis_fault.sh#失效时执行的脚本
notify_stop/etc/keepalived/scripts/redis_stop.sh#keepalived停止时的脚本
}
说明:
注意修改黄色部分
3.4脚本
创建脚本目录
#mkdir/etc/keepalived/scripts
3.4.1redis_check.sh
#!
/bin/bash
netstat-ntlp|grep6379
RETVAL=$?
if[x"$RETVAL"==x"0"];then
echo$RETVAL
exit0
else
echo$RETVAL
exit1
fi
3.4.2redis_master.sh
#!
/bin/bash
REDISCLI="/usr/local/bin/redis-cli-a123456"
LOGFILE="/var/log/keepalived-redis-state.log"
echo"[master]">>$LOGFILE
date>>$LOGFILE
echo"Beingmaster....">>$LOGFILE2>&1
echo"RunSLAVEOFcmd...">>$LOGFILE
$REDISCLISLAVEOF192.168.3.1866379>>$LOGFILE2>&1
sleep10#延迟10秒以后待数据同步完成后再取消同步状态
echo"RunSLAVEOFNOONEcmd...">>$LOGFILE
$REDISCLISLAVEOFNOONE>>$LOGFILE2>&1
说明:
黄色部分是对方主机的IP,注意修改。
3.4.3redis_backup.sh
#!
/bin/bash
REDISCLI="/usr/local/bin/redis-cli-a123456"
LOGFILE="/var/log/keepalived-redis-state.log"
echo"[backup]">>$LOGFILE
date>>$LOGFILE
echo"Beingslave....">>$LOGFILE2>&1
sleep15#延迟15秒待数据被对方同步完成之后再切换主从角色
echo"RunSLAVEOFcmd...">>$LOGFILE
$REDISCLISLAVEOF192.168.3.1866379>>$LOGFILE2>&1
说明:
黄色部分是对方主机的IP,注意修改。
3.4.4redis_fault.sh
#!
/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo"[fault]">>$LOGFILE
date>>$LOGFILE
3.4.5redis_stop.sh
#!
/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo"[stop]">>$LOGFILE
date>>$LOGFILE
3.4.6redis服务脚本
#vim/usr/local/bin/redis
#!
/bin/bash
BIN=/usr/local/redis/bin#注意路径
CNF=/usr/local/redis/redis.conf#注意路径
case$1in
start)
$BIN/redis-server$CNF
;;
stop)
ps-ef|grepredis|grep-v"grep"|awk'{print$2}'|xargskill
;;
status)
ifnetstat-ntlp|grep6379&>/dev/null;then
echo"Redisisrunning..."
else
echo"Redisisnotrunning..."
fi
;;
*)
echo"Usage:
redis"
;;
Esac
给以上脚本以执行权限
#chmod+x/etc/keepalived/scripts/*.sh
#chmod+x/usr/local/bin/redis
4启动
启动redis-server
#redisstart
启动keepalived
#servicekeepalivedstart
添加开机自启动
#echo“/usr/local/bin/redisstart”>>etc/rc.d/rc.local
#chkconfigkeepalivedon
5验证
redis服务状态
redis从服务器状态:
redis主服务器状态:
[root@AAA2scripts]#redis-cli-a123456info|grep-A8Replication
#Replication
role:
master
connected_slaves:
1
slave0:
ip=192.168.107.13,port=6379,state=online,offset=3349,lag=1
master_repl_offset:
3349
repl_backlog_active:
1
repl_backlog_size:
1048576
repl_backlog_first_byte_offset:
17
repl_backlog_histlen:
3333
[root@launcherscripts]#servicekeepalivedstatus
keepalived(pid108386)isrunning...
keepalived服务状态
通过VIP写入数据
从其他主机获取数据
模拟主服务器down掉
再次获取数据
查看VIP所在主机
通过VIP再次写入数据
获取数据
恢复主服务并查看VIP状态
再次获取新数据,查看是否同步。
数据同步成功