Redis+Keepalived实现双机不间断缓存<二>
2012-10-20 15:50
330 查看
引言:
本文第一部分,介绍这两种工具如何在linux下的安装.
本文第二部分,介绍如何利用这两种工具,来实现自动同步缓存数据,自动切换缓存主从关系.
Redis的主从机会自动数据.
Keepalived 有切换访问IP的功能,利用此特性来切换缓存的主从关系.
环境
192.168.36.2 VIP(虚IP)
192.168.36.53 Keepalived & Redis 的主服务器
192.168.36.54 Keepalived & Redis 的从服务器
思路:
当36.53(即主服务器)挂掉的时候,keepalived 的VIP会自动转到36.54
这个时候利用keepalived的notify_master 属性将36.54设置为Redis的主服务器.
这样就可以,将53挂掉期间数据保存到54上.而Keepalived又会让外部访问转到54,
所以此时缓存数据存取都没有问题(之前由于54是53的从机,所以54也有之前的数据)
而当36.53恢复正常之后,VIP有会返回到53.
这个时候同样利用keepalived的notify_master 属性,做以下几件事情.
1.将本地(即53)设置为54的从机,因为之前54是Redis的主机,所有数据都在54上,再由于Reids主从之前会自动同步数据.
所以这么做就够将所有缓存复制到53上(54有最早,53挂掉期间的所有数据)
2.将本机再次设置53为Reids的主机
3.将54设置为53的从机
步聚:
1.配置53
1.1为53也如下脚本redis.sh:
######设置本地为54的从机
/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 slaveof 192.168.36.54 6379;
######等待30秒,做数据同步,此点在网上没有找到好的方法
sleep 30;
######设置为本地为Redis的主机
/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE;
######设置54为53的从机
/usr/local/bin/redis-cli -h 192.168.36.54 -p 6379 slaveof 192.168.36.53 6379;
1.2修改53的/etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.36.2
}
notify_master /usr/local/myShellTemp/redis.sh ----------添加了该句,该句在本地被做为Keepalived时调用
}
2.配置54机,54就比较简单了:
2.1为54写如下会脚本redis.sh:
#######将本机设置为Redis的主机
/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE
2.2同53一样修改/etc/keepalived/keepalived.conf即可.
END
总结:没有linux基本太纠结了,纠结各种不想关的问题浪费了太多时间,单单这个shell脚本,还发了贴子,见论坛,呵呵.
还要学习的东西,太多太多了.
最后要感谢谢公司的运维大哥,帮忙.然后欢迎来喷,但勿暴乱.
本文第一部分,介绍这两种工具如何在linux下的安装.
本文第二部分,介绍如何利用这两种工具,来实现自动同步缓存数据,自动切换缓存主从关系.
Redis的主从机会自动数据.
Keepalived 有切换访问IP的功能,利用此特性来切换缓存的主从关系.
环境
192.168.36.2 VIP(虚IP)
192.168.36.53 Keepalived & Redis 的主服务器
192.168.36.54 Keepalived & Redis 的从服务器
思路:
当36.53(即主服务器)挂掉的时候,keepalived 的VIP会自动转到36.54
这个时候利用keepalived的notify_master 属性将36.54设置为Redis的主服务器.
这样就可以,将53挂掉期间数据保存到54上.而Keepalived又会让外部访问转到54,
所以此时缓存数据存取都没有问题(之前由于54是53的从机,所以54也有之前的数据)
而当36.53恢复正常之后,VIP有会返回到53.
这个时候同样利用keepalived的notify_master 属性,做以下几件事情.
1.将本地(即53)设置为54的从机,因为之前54是Redis的主机,所有数据都在54上,再由于Reids主从之前会自动同步数据.
所以这么做就够将所有缓存复制到53上(54有最早,53挂掉期间的所有数据)
2.将本机再次设置53为Reids的主机
3.将54设置为53的从机
步聚:
1.配置53
1.1为53也如下脚本redis.sh:
######设置本地为54的从机
/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 slaveof 192.168.36.54 6379;
######等待30秒,做数据同步,此点在网上没有找到好的方法
sleep 30;
######设置为本地为Redis的主机
/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE;
######设置54为53的从机
/usr/local/bin/redis-cli -h 192.168.36.54 -p 6379 slaveof 192.168.36.53 6379;
1.2修改53的/etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.36.2
}
notify_master /usr/local/myShellTemp/redis.sh ----------添加了该句,该句在本地被做为Keepalived时调用
}
2.配置54机,54就比较简单了:
2.1为54写如下会脚本redis.sh:
#######将本机设置为Redis的主机
/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE
2.2同53一样修改/etc/keepalived/keepalived.conf即可.
END
总结:没有linux基本太纠结了,纠结各种不想关的问题浪费了太多时间,单单这个shell脚本,还发了贴子,见论坛,呵呵.
还要学习的东西,太多太多了.
最后要感谢谢公司的运维大哥,帮忙.然后欢迎来喷,但勿暴乱.
相关文章推荐
- Redis+Keepalived实现双机不间断缓存<一>
- ViewPager,RadioGroup,FragmentManager 详解 <二> 主菜单 RadioGroup 和ViewPager 实现联动
- TestLink1.9.3测试用例:Excel转换XML工具<二>实现代码
- 自动定义瀑布流控件的实现<二>
- Android UI设计之<二>自定义SwitchButton开关,实现类似IOS中UISwitch的动画效果
- quick-cocos2d-x的热更新机制实现<二>特色
- Android实现推送方式解决方案<二>
- 百度地图开发之实现运动轨迹 <二>
- 如何实现具有层次结构的 TreeView <二> (WPF/TreeView/Style/Template)
- Lucene 如何实现高性能 GroupBy <二>
- 生产者消费者模型实现<二>真实实现BlockingQueue
- <转>简单的java缓存实现
- 模拟实现通讯录<二>(动态模拟)
- spring mvc 实现任意文件上传—— 下载<二>
- Linux 兴趣小组暑假学习--学习总结<二>
- 接口List<E>常用实现类分析
- AJAX跨域方法之一—使用<script>实现
- Android实战简易教程<二>(Spinner下拉级联效果)
- 【javascript笔记】声明函数的三种方式<二>
- redis 持久化<转>