基于zookeeper的redis高可用
2016-04-12 10:00
691 查看
首先这不是为了具体说明每一步怎么实现,只是为了记录这个高可用的思路。
1.实验到目的:redis中主从关系master和多个slave,当master挂掉后,可以自动切到其他的slave上,让这个slave作为新的master。
2.实现思路:
a.服务端代码:每个redis服务器上分别运行一个java工程,工程的目的是:
i.将本机的redis信息(ip + redis访问端口)注册到zookeeper指定的目录中
ii.将redis在zookeeper中的注册节点放入nodeList链表中,并将有序链表的第一个节点指定为master,其他的节点slaveof 。
iii.while(true)循环向redis的地址发出ping请求,返回pong则是正常,如果连续3次不是pong则删除zookeeper中本节点的注册信息。
iV.删除节点后(zookeeper会监控这些注册信息,并更新nodeList)再次指定nodeList中第一个节点为master,其他的slaveof。
V.当一个节点重启后,ping命令再次返回pong,这时,判定nodeList中是否 已经存在注册信息。再次在zookeeper中创建节点。
b.客户端代码:从nodeList中得到第一个节点的信息,Jedis访问redis。。。
1.实验到目的:redis中主从关系master和多个slave,当master挂掉后,可以自动切到其他的slave上,让这个slave作为新的master。
2.实现思路:
a.服务端代码:每个redis服务器上分别运行一个java工程,工程的目的是:
i.将本机的redis信息(ip + redis访问端口)注册到zookeeper指定的目录中
ii.将redis在zookeeper中的注册节点放入nodeList链表中,并将有序链表的第一个节点指定为master,其他的节点slaveof 。
iii.while(true)循环向redis的地址发出ping请求,返回pong则是正常,如果连续3次不是pong则删除zookeeper中本节点的注册信息。
iV.删除节点后(zookeeper会监控这些注册信息,并更新nodeList)再次指定nodeList中第一个节点为master,其他的slaveof。
V.当一个节点重启后,ping命令再次返回pong,这时,判定nodeList中是否 已经存在注册信息。再次在zookeeper中创建节点。
b.客户端代码:从nodeList中得到第一个节点的信息,Jedis访问redis。。。
相关文章推荐
- Redis内存使用优化与存储
- CentOS7配置redis开机启动
- CentOS7安装配置redis-3.0.0
- CentOS7安装redis数据库及php-redis扩展
- Spring 整合 Redis
- Redis笔记
- Redis命令-有序集合-zrange
- Redis
- Jedis对redis的操作详解
- Jedis对redis的操作详解
- Redis-3.0.7_ubuntu下编译
- 干货--Redis+Spring+Struts2实现网站计算器应用项目案例
- Spring Boot使用redis做数据缓存
- Spring Boot使用redis做数据缓存
- Spring Boot使用redis做数据缓存
- Linux服务器如何自定义安装Redis
- Redis PHP通用类
- 分布式缓存Redis使用心得
- CentOS6.5编译安装Redis
- redis 3.0的集群部署