Redis 3.0集群试练

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 架构

174556_1tqr_1437015.jpg

 

架构细节:

(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)错误

174611_RsEu_1437015.jpg

  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.0(3.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

151242_IY3p_1437015.png                                             

这里输入yes,配置完成

151326_EhBq_1437015.png

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/ 

转载于:https://my.oschina.net/gibbons/blog/993803

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值