北京创维海通数字技术有限公司 Redis集群部署方案
Page 1 of 12Copyright@Skyworth Hightong Digital Technologies CO.,LTD
北京创维海通数字技术有限公司
声明
本文件以及文件所包含的知识产权和版权归北京创维海通数字技术有限公司所有,北京创维海通数字技术有限公司拥有对文件内容的全部解释权、使用权。未经授权或书面许可,任何机关、企业、个人均不允许对文件的内容和信息通过任何形式进行拷贝、复印和发布(例如网络、打印、复印、传真等)。一经发现,北京创维海通数字技术有限公司保留对其侵权行为进行法律追究的权利。 修订历史 版本号 V 1.0 V 1.1 V1.2 日期 2015-12-17 2015-12-31 2016-01-06 描述 创建 修改 修改
Page 2 of 12Copyright@Skyworth Hightong Digital Technologies CO.,LTD
北京创维海通数字技术有限公司
目录
1 2
概述......................................................................................................................... 4 系统方案................................................................................................................. 4 2.1 硬件设备 ...................................................................................................... 4 2.2 操作系统 ...................................................................................................... 4 2.3 其他组件 ...................................................................................................... 4 部署过程................................................................................................................. 4 3.1 环境准备 ...................................................................................................... 4 3.2 软件安装 ...................................................................................................... 5
3.2.1 Redis ................................................................................................... 5 3.2.2 Keepalived .......................................................................................... 5 3.3 配置文件 ...................................................................................................... 5
3.3.1 Redis ................................................................................................... 5 3.3.2 Keepalived .......................................................................................... 6 3.4 脚本 .............................................................................................................. 7
3.4.1 redis_check.sh .................................................................................... 7 3.4.2 redis_master.sh .................................................................................. 7 3.4.3 redis_backup.sh ................................................................................. 7 3.4.4 redis_fault.sh...................................................................................... 8 3.4.5 redis_stop.sh ...................................................................................... 8 3.4.6 redis服务脚本 ................................................................................... 8 启动......................................................................................................................... 9 验证....................................................................................................................... 10
3
4 5
Page 3 of 12Copyright@Skyworth Hightong Digital Technologies CO.,LTD
北京创维海通数字技术有限公司
1 概述
本文档描述如何部署实现Redis双主备份。
2 系统方案
2.1 硬件设备
常用的web服务器即可
2.2 操作系统
CentOS 6.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 主服务器 Redis、keepalived (VIP:192.168.3.188) 192.168.3.186 从服务器 Redis、keepalived (VIP:192.168.3.188) Page 4 of 12Copyright@Skyworth Hightong Digital Technologies CO.,LTD
北京创维海通数字技术有限公司
➢ Yum源
修改yum源配置文件 #rm –rf /etc/yum.repos.d/*
#vim /etc/yum.repos.d/server.repo [mirror] name=163
baseurl=http://mirrors.163.com/centos/6/os/x86_64/ enabled=1 gpgcheck=0 ➢ 程序包
上传软件包redis-3.0.5.tar.gz至/usr/local/src目录下
3.2 软件安装
3.2.1 Redis
#cd/usr/local/src
#tar –xvf redis-3.0.5.tar.gz #cd redis-3.0.5 #make
#make PREFIX=/usr/local/redis install
#安装到/usr/local/redis目录下
3.2.2 Keepalived #yum –y install keepalived
3.3 配置文件
3.3.1 Redis
#cp /usr/local/src/redis-3.0.5/redis.conf /usr/local/redis/ #vim /usr/local/redis/redis.conf daemonize yes #启动时以后台模式运行 requirepass 123456 //注意去掉#注释,并修改密码 Page 5 of 12Copyright@Skyworth Hightong Digital Technologies CO.,LTD
北京创维海通数字技术有限公司
masterauth 123456 去掉#注释,并修改密码 3.3.2 Keepalived
#/cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak #vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs {
notification_email {
****************** }
********************************************** smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL4 }
vrrp_script chk_redis { script \"/etc/keepalived/scripts/redis_check.sh\" #监控redis脚本 interval 2 }
vrrp_instance VI_1 { state MASTER #主服务器(备服务器写BACKUP) interface em1 #监听网卡名称 virtual_router_id 51 priority 101 #优先级(备服务器写100) authentication { auth_type PASS auth_pass redis } 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停止时的脚本
Page 6 of 12Copyright@Skyworth Hightong Digital Technologies CO.,LTD
北京创维海通数字技术有限公司
} 说明:注意修改黄色部分 3.4 脚本
创建脚本目录
#mkdir /etc/keepalived/scripts
3.4.1 redis_check.sh #!/bin/bash netstat -ntlp |grep 6379 RETVAL=$? if [ x\"$RETVAL\" == x\"0\" ]; then echo $RETVAL exit 0 else echo $RETVAL exit 1 fi 3.4.2 redis_master.sh #!/bin/bash REDISCLI=\"/usr/local/bin/redis-cli -a 123456\" LOGFILE=\"/var/log/keepalived-redis-state.log\" echo \"[master]\" >> $LOGFILE date >> $LOGFILE echo \"Being master....\" >> $LOGFILE 2>&1 echo \"Run SLAVEOF cmd ...\" >> $LOGFILE $REDISCLI SLAVEOF 192.168.3.186 6379 >> $LOGFILE 2>&1 sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态 echo \"Run SLAVEOF NO ONE cmd ...\" >> $LOGFILE $REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1 说明:黄色部分是对方主机的IP,注意修改。 3.4.3 redis_backup.sh
#!/bin/bash Page 7 of 12Copyright@Skyworth Hightong Digital Technologies CO.,LTD
北京创维海通数字技术有限公司
REDISCLI=\"/usr/local/bin/redis-cli -a 123456\" LOGFILE=\"/var/log/keepalived-redis-state.log\" echo \"[backup]\" >> $LOGFILE date >> $LOGFILE echo \"Being slave....\" >> $LOGFILE 2>&1 sleep 15 # 延迟15秒待数据被对方同步完成之后再切换主从角色 echo \"Run SLAVEOF cmd ...\" >> $LOGFILE $REDISCLI SLAVEOF 192.168.3.186 6379 >> $LOGFILE 2>&1 说明:黄色部分是对方主机的IP,注意修改。 3.4.4 redis_fault.sh #!/bin/bash LOGFILE=/var/log/keepalived-redis-state.log echo \"[fault]\" >> $LOGFILE date >> $LOGFILE 3.4.5 redis_stop.sh #!/bin/bash LOGFILE=/var/log/keepalived-redis-state.log echo \"[stop]\">> $LOGFILE date >> $LOGFILE 3.4.6 redis服务脚本 #vim /usr/local/bin/redis #!/bin/bash BIN=/usr/local/redis/bin #注意路径 CNF=/usr/local/redis/redis.conf #注意路径 case $1 in start) $BIN/redis-server $CNF ;; stop) ps -ef |grep redis | grep -v \"grep\" |awk '{print $2}' |xargs kill ;; status) if netstat -ntlp |grep 6379 &> /dev/null;then echo \"Redis is running...\" Page 8 of 12Copyright@Skyworth Hightong Digital Technologies CO.,LTD
北京创维海通数字技术有限公司
else echo \"Redis is not running...\" fi ;; *) echo \"Usage: redis #chmod +x /etc/keepalived/scripts/*.sh #chmod +x /usr/local/bin/redis 4 启动 启动redis-server #redis start 启动keepalived #service keepalived start 添加开机自启动 #echo “/usr/local/bin/redis start” >> etc/rc.d/rc.local #chkconfig keepalived on Page 9 of 12Copyright@Skyworth Hightong Digital Technologies CO.,LTD 北京创维海通数字技术有限公司 5 验证 redis服务状态 [root@launcher scripts]# netstat -ntlp |grep 6379 tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 5756/redis-server * tcp 0 0 :::6379 :::* LISTEN 5756/redis-server * redis从服务器状态: [root@AAA1 scripts]# redis-cli -a 123456 info | grep -A 15 Replication # Replication role:slave master_host:192.168.107.14 master_port:6379 master_link_status:up master_last_io_seconds_ago:4 master_sync_in_progress:0 slave_repl_offset:2481 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 Page 10 of 12Copyright@Skyworth Hightong Digital Technologies CO.,LTD 北京创维海通数字技术有限公司 redis主服务器状态: [root@AAA2 scripts]# redis-cli -a 123456 info | grep -A 8 Replication # 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 keepalived服务状态 [root@launcher scripts]# service keepalived status keepalived (pid 108386) is running... 通过VIP写入数据 从其他主机获取数据 模拟主服务器down掉 再次获取数据 Page 11 of 12Copyright@Skyworth Hightong Digital Technologies CO.,LTD 北京创维海通数字技术有限公司 查看VIP所在主机 通过VIP再次写入数据 获取数据 恢复主服务并查看VIP状态 再次获取新数据,查看是否同步。 数据同步成功 Page 12 of 12Copyright@Skyworth Hightong Digital Technologies CO.,LTD 因篇幅问题不能全部显示,请点此查看更多更全内容