Redis主从配置及使用KeepAlived实现Redis高可用
来源:互联网 发布:国泰君安csmar数据库 编辑:程序博客网 时间:2024/04/30 16:55
一:环境介绍
Master: 172.16.206.29
Slave: 172.16.206.28
Virtural IP Address (VIP): 172.16.206.250
二:设计思路:
当 Master 与 Slave 均运作正常时, Master负责服务,Slave负责Standby;
当 Master 挂掉,Slave 正常时, Slave接管服务,有写权限,同时关闭主从复制功能;
当 Master 恢复正常,则从Slave同步数据,同步数据之后关闭主从复制功能,恢复Master身份,同时Slave等待Master同步数据完成之后,恢复Slave身份。
三:安装配置前准备工作
在主服务器 172.16.206.29 上面做下面操作
echo “172.16.206.29 osb29” >> /etc/hosts
echo “172.16.206.28 osb28” >> /etc/hosts
在从服务器 172.16.206.28 上面做下面操作
echo “172.16.206.29 osb29” >> /etc/hosts
echo “172.16.206.28 osb28” >> /etc/hosts
四:主服务器配置redis
1.下载redis 版本2.8.19
wget http://download.redis.io/releases/redis-2.8.19.tar.gz
2.解压 tar -zxvf redis-2.8.19.tar.gz
3.cd redis-2.8.19
4.make && make install
5.cp redis.conf /etc/redis.conf
cd src/
cp redis-server redis-cli redis-benchmark redis-check-aofredis-check-dump /usr/local/bin
6.修改 /etc/redis.conf里面可以把daemonize no 修改为daemonize yes
目的是可以在后台执行redis-server。
7.init.d 启动脚本
vi /etc/init.d/redis-server
chmod o+x /etc/init.d/redis-server
chkconfig –add redis-server
service redis-server start
五:从服务器配置redis
从服务器,配置一样,只不过 修改/etc/redis.conf 中
slaveof <masterip> <masterport>修改为
slaveof 172.16.206.28 6379
然后开启从服务器的redis服务。
start redis-server start
六:进行redis主从测试
#主服务器
redis-cli -p 6379 set hello world
#从服务器
redis-cli -p 6379 get hello
“world”
#主服务器
redis-cli -p 6379 set hello2 world2
#从服务器
redis-cli -p 6379 get hello2
“world2”
redis-cli -p 6379 set hello world
(error) READONLY You can’t write against a read only slave.
成功配置主从redis服务器,由于配置中有一条从服务器是只读的,所以从服务器没法设置数据,只可以读取数据。
七:安装和配置keepalived
1. wget http://www.keepalived.org/software/keepalived-1.2.15.tar.gz
tar -zxvf keepalived-1.2.15.tar.gz
cd keepalived-1.2.15
2. 安装openssl-devel和kernel-devel
yum install openssl-devel
yum install kernel-devel
ln -s /usr/src/kernels/2.6.32-431.el6.x86_64 /usr/src/linux
3. 配置编译安装
./configure–prefix=/usr/local/keepalived –with-kernel-dir=/usr/src/linux –enable-sha1
make && make install
4. 复制keepalived相关文件
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/samples/keepalived.conf.virtualhost
/etc/keepalived/keepalived.conf
八:修改配置文件和相关脚本
1. 在Master上创建配置文件
vi /etc/keepalived/keepalived.conf
2.在Slave上创建如下配置文件
vim /etc/keepalived/keepalived.conf
3.在Master和Slave上创建监控Redis的脚本
$ mkdir /etc/keepalived/scripts
$ vim /etc/keepalived/scripts/redis_check.sh
4.编写关键脚本
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在转换状态时会依照状态来执行脚本:
当进入Master状态时会呼叫notify_master
当进入Backup状态时会呼叫notify_backup
当发现异常情况时进入Fault状态呼叫notify_fault
当程序终止时则呼叫notify_stop
首先,在Redis Master上创建notity_master与notify_backup脚本:
vi /etc/keepalived/scripts/redis_master.sh
vi /etc/keepalived/scripts/redis_backup.sh
在Redis Slave上创建notity_master与notify_backup脚本:
vi /etc/keepalived/scripts/redis_master.sh
vi /etc/keepalived/scripts/redis_backup.sh
然后在Master与Slave创建如下相同的脚本:
vi /etc/keepalived/scripts/redis_fault.sh
vi /etc/keepalived/scripts/redis_stop.sh
在主从服务器上面给脚本都加上可执行权限:
chmod +x /etc/keepalived/scripts/*.sh
九:相关功能测试
启动Master和slave上的Redis
service redis-server start
启动Master和slave上的Keepalived
/etc/init.d/keepalived start
尝试通过VIP连接Redis:
$ redis-cli -h 172.16.206.250 INFO
连接成功,可以看到主从机的信息,例如:
role:master
slave0:172.16.206.28,6379,online
尝试插入一些数据:
$ redis-cli -h 172.16.206.250 SET hello3 world3
OK
从VIP读取数据
$ redis-cli -h 172.16.206.250 GET hello3
“world3”
从Master读取数据
$ redis-cli -h 172.16.206.29 GET hello3
“world3”
从Slave读取数据
$ redis-cli -h 172.16.206.28 GET hello3
“world3”
将Master上的Redis进程杀死:
$ service redis-server stop
查看Master上的Keepalived日志
$ tail -f /var/log/keepalived-redis-state.log
[fault]
Mon Jan 5 14:06:22 CST 2015
同时Slave上的日志显示:
$ tail -f /var/log/keepalived-redis-state.log
[master]
Mon Jan 5 14:13:52 CST 2015
Being master….
Run SLAVEOF cmd …
OK Already connected to specified master
Run SLAVEOF NO ONE cmd …
OK
现在,Slave已经接管服务,并且拥有Master的角色
$ redis-cli -h 172.16.206.250 INFO
$ redis-cli -h 172.16.206.28 INFO
role:master
然后恢复Master的Redis进程
$ service redis-server start
查看Master上的Keepalived日志
$ tail -f /var/log/keepalived-redis-state.log
[master]
2015年 01月 05日 星期一 15:48:08 CST
Being master….
Run SLAVEOF cmd …
OK
Run SLAVEOF NO ONE cmd …
OK
同时Slave上的日志显示:
$ tail -f /var/log/keepalived-redis-state.log
[backup]
Mon Jan 5 14:53:16 CST 2015
Being slave….
Run SLAVEOF cmd …
OK
Master已经再次恢复了Master角色
from:http://abcve.com/redis-keepalived/
- Redis主从配置及使用KeepAlived实现Redis高可用
- Redis主从配置及使用KeepAlived实现Redis高可用
- Redis主从配置及使用KeepAlived实现Redis高可用(亲测可用
- 使用keepalived 实现redis主从高可用
- 使用keepalived 实现redis主从高可用
- Redis主从配置及通过Keepalived实现Redis自动切换高可用
- redis+keepalived,实现主从高可用
- keepalived实现redis主从高可用
- keepalived+redis 高可用redis主从解决方案
- keepalived+redis 高可用redis主从解决方案
- keepalived+redis 高可用redis主从解决方案
- keepalived+redis 高可用redis主从解决方案
- keepalived+redis高可用redis主从解决方案
- redis高可用:keepalived+redis主从部署
- redis主从配置及高可用哨兵
- Keepalived实现redis的主从切换高可用原理详解
- redis + keepalived 实现高可用
- 一步一步搭建Redis + Keepalived主从高可用之Redis主从配置(二)
- C# :base的用法(冒号后面的base)
- 事件分发机制源码分析
- CentOS7.0 关闭防火墙
- 使用CoreLocation进行定位(Swift版)
- 栈机制应用——括号匹配[()]
- Redis主从配置及使用KeepAlived实现Redis高可用
- Array Easy Production
- CS231n第三课:最优化学习记录
- SpringMVC中定时器继承Task后无法对service注入问题
- C# 汉字转拼音
- poj1741Tree
- Redis主从复制总结整理
- iOS中UIDatePicker显示中文日期
- SQL防注入SqlParameter的使用