版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、redis主备自动切换部署方案文档修改记录修改日期修改人修改说明版本号修改页主实例A:0备实例B:32虚IP:10方案说明:redis部署方式采用主备的方式,通过keepalived来对外提供虚IP,备服务器实时同步主服务器的数据,当主服务器挂掉时,能在5秒内完成主备切换,实现融灾备份,并采用redis数据持久化,确保数据的安全。正常工作时,虚IP在主实例A上,备实例B自动从A上同步数据,当检测到主实例A挂掉之后(检测机制为每3秒自动检测redis的所有端口是否能正常连接,当连续两次检测到其中任意端口无法连接时,将自动停止
2、keepalived程序,使虚IP进行漂移),备实例B将自动接管虚IP,待原主实例A恢复后,A将自动切换成备模式,从B上实时同步数据,主备角色互换,实现融灾备份。安装部署步骤如下:1. 安装keepalivedwget /software/keepalived-1.2.6.tar.gztar zxvf keepalived-1.2.6.tar.gzcd keepalived-1.2.6./configure如果报错configure: error: ! OpenSSL is not properly installed on your syste
3、m. ! ! Can not include OpenSSL headers files.解决办法:yum -y install openssl-develyum -y install popt-develln -s /usr/src/kernels/2.6.32-220.el6.x86_64/ /usr/src/linux./configuremakemake installcp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfi
4、g/cp /usr/local/sbin/keepalived /usr/sbin/ mkdir /etc/keepalived添加keepalived的配置项:vi /etc/keepalived/keepalived.confglobal_defs router_id LVS_DEVELvrrp_script Monitor_Redis script "/home/bbcv/redis/redis_keepalive.sh" interval 3 #每3秒执行一次 weight 2# VIP1vrrp_instance VI_1 state BACKUP #主备服务器都
5、设置成BACKUP interface eth0 virtual_router_id 110 priority 100 # 备份服务上将100改为90 advert_int 1 #检查间隔 nopreempt #设置为不抢占,注意这个配置只能设置在state为BACKUP的主机上,而且这个主机的priority必须比另外一台高 authentication auth_type PASS auth_pass 1111 notify_master /home/bbcv/redis/redis_master.sh notify_backup /home/bbcv/redis/redis_backup
6、.sh track_script Monitor_Redis #(调用redis进程检测脚本) virtual_ipaddress 10 #(如果有多个VIP,继续换行填写.) 启动keepalivedservice keepalived start2. redis_keepalive.sh脚本该脚本主要实现对redis进程进行监控,当检测到redis进程挂掉时,自动停止keepalived进程,使虚IP进行漂移² 注意添加该脚本的可执行权限!chmod +x redis_keepalive.sh#!/bin/bashtime=$(date '+%Y-
7、%m-%d %H:%M:%S' )#redis部署路径redispath=/home/bbcv/redis#redis-cli部署路径rediscli=/usr/local/bin/redis-cliif ! -d "$redispath/logs" ; then mkdir $redispath/logsfilogfile=$redispath/logs/redis-state.logoldfile=$logfile'.'$(date +%Y-%m-%d -date='30 days ago')yesterdayfile=$logf
8、ile'.'$(date +%Y-%m-%d -date='1 days ago')#把昨天的日志重命名if -f $yesterdayfile then echo "OK"else mv $logfile $yesterdayfile >> $logfile 2>&1 echo "$time $yesterdayfile Move yesterdayfile Success!" >> $logfilefi#删除老的日志文件if -f $oldfile then rm -f $oldf
9、ile >> $logfile 2>&1 echo "$time $oldfile Delete Old File Success!" >> $logfileelse echo "no old file"fi#检测redis端口是否正常for line in cat $redispath/config.inidoport=echo $line|awk -F "|" ' print $1'passwd=echo $line|awk -F "|" ' pri
10、nt $2'$rediscli -h -p $port -a $passwd info > /dev/nullif $? -eq 0 ; then status=$rediscli -h -p $port -a $passwd info|grep role|awk -F ":" 'print $2' echo "$time redis端口$port正常,目前状态为:$status" >>$logfileelse echo "$time ERROR redis端口$
11、port异常" >>$logfile sleep 2 # try to found it again $rediscli -h -p $port -a $passwd info > /dev/null if $? -eq 0 ; then status=$rediscli -h -p $port -a $passwd info|grep role|awk -F ":" 'print $2' echo "$time redis端口$port正常,目前状态为:$status"
12、 >>$logfile #exit 0 else echo "$time ERROR redis端口$port异常,开始停keepalived" >>$logfile #stop keepalived /etc/init.d/keepalived stop echo "$time stop keepalived" >>$logfile fifidone3. redis_master.sh脚本该脚本主要实现当keepalived切换到master时,执行slaveof no one语句把redis的端口转换为主模式
13、78; 注意添加该脚本的可执行权限!chmod +x redis_master.sh#!/bin/sh#本机IP地址localip=#另一台服务器的地址backip=32time=$(date '+%Y-%m-%d %H:%M:%S' )#redis部署路径redispath=/home/bbcv/redis#redis-cli部署路径rediscli=/usr/local/bin/redis-cli#日志文件目录logfile=$redispath/logs/redis-state.logfor line in cat $redisp
14、ath/config.inidoport=echo $line|awk -F "|" ' print $1'passwd=echo $line|awk -F "|" ' print $2'echo "$time redis端口$port切换成主端口" >>$logfile$rediscli -h $localip -p $port -a $passwd slaveof no one >>$logfile 2>&1sleep 1done4. redis_backup.
15、sh该脚本主要实现当keepalived切换到master时,执行slaveof 主redisIP 端口 语句,把redis的端口转换为备模式,并同步主redis的数据² 注意添加该脚本的可执行权限!chmod +x redis_backup.sh#!/bin/sh#本机IP地址localip=#另一台服务器的地址backip=32time=$(date '+%Y-%m-%d %H:%M:%S' )#redis部署路径redispath=/home/bbcv/redis#redis-cli部署路径rediscli=/usr/l
16、ocal/bin/redis-cli#日志文件目录logfile=$redispath/logs/redis-state.log#检测主redis服务是否启动port=cat $redispath/config.ini |sed -n '1p'| awk -F "|" ' print $1'passwd=cat $redispath/config.ini |sed -n '1p'| awk -F "|" ' print $2'$rediscli -h $backip -p $port -a
17、$passwd info > /dev/nullif $? -eq 0 ; then echo "$time 主redis服务$backip正常在用" >>$logfile echo "$time 30秒后将从主redis服务$backip同步数据" >>$logfile sleep 30 time=$(date '+%Y-%m-%d %H:%M:%S' ) echo "$time 开始从redis主服务$backip同步数据" >>$logfile for line in c
18、at $redispath/config.ini do port=echo $line|awk -F "|" ' print $1' passwd=echo $line|awk -F "|" ' print $2' time=$(date '+%Y-%m-%d %H:%M:%S' ) echo "$time redis $port端口切换成$backip的备端口" >>$logfile $rediscli -h $localip -p $port -a $passwd sla
19、veof $backip $port >>$logfile 2>&1 sleep 1 doneelse echo "$time 启用本机为主redis!" >>$logfilefi5. config.ini该配置文件为每个redis端口对应的密码14948|kuanyun00111172|kuanyun00112172|kuanyun00113172|kuanyun00116172|kuanyun00118000|kuanyun00118001|kuanyun00121172|kuanyun00122172|kuanyun0012317
20、2|kuanyun0016. 安装redis1.新建文件夹,如mkdir redis2.将redis-2.2.13.tar.gz拷入其中3.解压并进入主目录4.make5.make install(Ubuntu上需要sudo执行)6.修改配置文件redis.conf修改如下:daemonize no 改为 daemonize yes取消注释:syslog-enabled no (改为syslog-enabled yes )syslog-facility local0 修改port:port 14948 (改为具体的redis端口)设置redis端口密码:requirepass mypasswd
21、 (取消注释,并改为想要设置的密码)设置master的密码:masterauth master-password (该配置为主redis设置的密码)修改dump文件名称:dbfilename aim_dump.rdb (修改成具体模块的dump名称)已将修改后的aim.redis.conf文件放到redis部署目录下,不同需求还需再修改配置文件(如修改端口、增加密码、修改dump文件名称等),可参考如下aim.redis.conf文件7.在执行redis-server redis.conf启动时,可能会报如下错误:Can't chdir to '/var/db/redis
22、9;: No such file or directory 需要手动创建'/var/db/redis'文件夹# WARNING overcommit_memory is set to 0! Background save may fail under low memory condition 需要执行 sysctl vm.overcommit_memory=1 修改内核参数8.再次执行redis-server redis.conf可成功启动redis7. redis启停脚本启动脚本:start.sh#!/bin/shredis-server urm.redis.confredis-server cscs.redis.confredis-server cums.redis.confredis-server aim.redis.confredis-server bgw.redis.confredis-server ggw.redis.confredis-se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030全球光学透明粘合带行业调研及趋势分析报告
- 2025合同范本劳务派遣合同模板书人力资源和企业新
- 2025用户服务合同
- 2025委托律师代理合同范本范文
- 土地转让居间合同
- 2025【合同范本】运输道路交通货物合同
- 美容师劳动合同书
- 消杀服务合同范文
- 2025公司用工合同范本
- 战略合作协议书合同
- 第1课+古代亚非(教学设计)【中职专用】《世界历史》(高教版2023基础模块)
- 新教科版六年级下册科学全册教案
- 物业客服管家的培训课件
- 2024年房地产行业的楼市调控政策解读培训
- 《统计学-基于Python》 课件全套 第1-11章 数据与Python语言-时间序列分析和预测
- 《GMP实务教程》 完整全套教学课件 项目1-14 GMP基础知识-药品生产行政检查
- 装饰定额子目(河南省)
- 【高速铁路乘务工作存在的问题及对策研究9800字】
- 北师大版英语课文同步字帖三年级下册课文对话原文及翻译衡水体英语字帖三年级起点
- GB/T 2550-2016气体焊接设备焊接、切割和类似作业用橡胶软管
- GB/T 21295-2014服装理化性能的技术要求
评论
0/150
提交评论