文档章节

Redis 3.0集群试练

1899
 1899
发布于 2015/04/07 19:28
字数 929
阅读 818
收藏 1

redis cluster的现状

reids-cluster计划在redis3.0中推出,可以看作者antirez的声明:

http://antirez.com/news/49    

(ps:跳票了好久,今年貌似加快速度了),目前的最新版本见:

https://raw.githubusercontent.com/antirez/redis/3.0/00-RELEASENOTES

作者的目标:Redis Cluster will support up to ~1000 nodes. ...

目前redis支持的cluster特性(已测试):

1):节点自动发现

2):slave->master 选举,集群容错

3):Hot resharding:在线分片

4):集群管理:cluster xxx

5):基于配置(nodes-port.conf)的集群管理

6):ASK 转向/MOVED 转向机制.

redis cluster 架构

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot,cluster 负责维护node<->slot<->value

redis-cluster选举:容错

(1)领着选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.

(2):什么时候整个集群不可用(cluster_state:fail)? 

  •  如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完成时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.

  • 如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.

  •  当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误

  1.  

部署环境:CentOS 6.5 X86_64

地址:192.168.93.131

集群环境:三个主节点与三个从节点

对应端口关系如下:

127.0.0.1:7000

127.0.0.1:7001

127.0.0.1:7002

127.0.0.1:7003

127.0.0.1:7004

127.0.0.1:7005

这里也可不使用回环地址

安装依赖,否则启动cluster过程会报错

yum install ruby rubygems

安装ruby后执行 gem install redis

2.

下载redis 3.03.0版本之前不支持cluster模式)

https://github.com/antirez/redis/archive/3.0.0.tar.gz

我这里使用最新版

rz通过CRT上传解压:

cd /usr/local/src

tar -zxvf redis-3.0.0.tar.gz

mv redis-3.0.0 /usr/local/

cd /usr/local/redis-3.0.0.

make && make install

注意:

“warning: Clock skew detected. Your build may be incomplete.”

出现这个问题 需要通过ntpdate同步系统时间

3.

创建集群相关目录

mkdir -p /usr/local/cluster

cd /usr/local/cluster

mkdir 7000

mkdir 7001

mkdir 7002

mkdir 7003

mkdir 7004

mkdir 7005

4.

修改配置文件redis.conf

cp /usr/local/redis-3.0.0/redis.conf  /usr/local/cluster

修改如下各项

daemonize yes

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

redis.conf配置文件分别拷贝到7000/7001/7002/7003/7004/7005目录下

拷贝过去之后,将各个redis.conf文件下的port和目录名对应

5.

cd /usr/local/cluster/7000

redis-server redis.conf

cd /usr/local/cluster/7001

redis-server redis.conf

cd /usr/local/cluster/7002

redis-server redis.conf

cd /usr/local/cluster/7003

redis-server redis.conf

cd /usr/local/cluster/7004

redis-server redis.conf

cd /usr/local/cluster/7005

redis-server redis.conf

6.

执行redis的创建集群命令

cd /usr/local/redis-3.0.0/src

./redis-trib.rb  create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

                                             

这里输入yes,配置完成

7.

进去集群环境:

[root@localhost cluster]# redis-cli -c -h 127.0.0.1 -p 7000

127.0.0.1:7000>set sex male

Ok

127.0.0.1:7000>get sex

“male”

切换任意节点:

[root@localhost cluster]# redis-cli -c -h 127.0.0.1 -p 7004

127.0.0.1:7004> get sex

-> Redirected to slot [2584] located at 127.0.0.1:7000

"male"

查看所有节点:

redis-cli -p 7000 -h 127.0.0.1 cluster nodes

添加其他地址下的节点:

 ./redis-trib.rb add-node 192.168.93.132:7000 

93132的节点添加到93130的集群上

基础参考:http://redis.readthedocs.org/en/redirect-to-RedisDoc.com/ 

© 著作权归作者所有

共有 人打赏支持
1899
粉丝 51
博文 206
码字总数 106081
作品 0
宝山
运维
私信 提问
容器混搭搞出线上 Redis 事故,这坑我先踩为敬

事情是这样的, 现在有一个 redis 3.0 集群节点都是裸 redis 或 host 网络模式部署的容器 redis (基本上跟裸 redis 差不多), 需要把它们替换成 macvlan 网络模式的 redis 容器, 以显得我们的 ...

kkkls
2015/10/13
5.4K
33
Redis 短期发展规划

刚刚Redis的第一作者@antirez发表了一篇博文,对Redis的后续发展规划做了一个比较明确的描述。下面是NoSQLFan的简单翻译,关注Redis的同学不要错过。 Lua脚本支持 对于Redis嵌入Lua脚本执行,...

红薯
2011/11/09
915
2
求知识,redis3.0集群创建好后,如何在spring-data-redis支持?

RT,以前只有一台REDIS的时候,是用org.springframework.data.redis.core.RedisTemplate的,现在变成3.0集群了,如和使用spring-data-redis? redis 3.0集群配置,我是参考这个配置http://my...

猫神
2015/11/24
644
0
初学乍练redis:使用redis-migrate-tool做redis在线数据迁移

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/84138537 目录 一、问题提出 二、关于redis-migrate-tool 三、实验 1. 建议集群red...

wzy0623
2018/11/16
0
0
这可能是最全的 Redis 集群方案介绍了

这可能是最全的 Redis 集群方案介绍了 原创 2016-06-01 曾健生 运维帮 由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用。Redis在3.0版本前只支持单实例模式,虽然现在的服务...

fdhay
2016/06/02
129
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2.x基础教程:快速入门

简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让...

程序猿DD
昨天
2
0
SpringSecurity认证流程源码级详解

SpringSecurity认证流程源码级详解 认证流程说明 认证结果如何在多个请求之间共享 获取认证用户信息

chendom
昨天
1
0
C语言中的volatile——让我保持原样

volatile译为:易变的。这不是和题目的让我保持原样矛盾了吗?其实不然,在变量前加上该关键字修饰,确实是告诉编译器,这个变量是一个容易改变的变量,不要对它进行优化,每次都要到变量的地...

天王盖地虎626
昨天
1
0
五、RabbitMQ的消息属性(读书笔记)

简介 当使用RabbitMQ发布消息时,消息又AMQP规范中的三个低层帧类型组成: Basic.publish方法帧; 内容头帧; 消息体帧; 这三种帧类型按顺序一起工作,以便消息传递时完好无损。 其中,内容...

XuePeng77
昨天
1
0
JavaEE开发的颠覆者SpringBoot实战摘要笔记

一、注解理解 1.spring注解 1)@Configuration/@ComponentScan/@Bean注解实现java方式的配置。 @Configuration代替xml文件 @ComponentScan指定扫描范围 @Bean代替bean标签 2)@Bean、@Componen...

啃不动地大坚果
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部