redis集群搭建

来源:互联网 发布:网络协议大全 编辑:程序博客网 时间:2024/06/06 00:06

Redis集群相关概念
1)redis-cluster架构图
这里写图片描述
redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护
node<->slot<->value
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
2)redis-cluster投票:容错
这里写图片描述
领着投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.
什么时候整个集群不可用(cluster_state:fail)?
a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完成时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.
b:如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.
ps:当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误

一 搭建集群需要的环境
1)搭建集群需要使用到官方提供的ruby脚本
需要安装ruby的环境
yum install ruby
yum install rubygems
2)安装ruby和redis的接口程序 (http://pan.baidu.com/s/1qYNlLAO)
拷贝redis-3.0.0.gem至/usr/local下
执行:gem install /usr/local/redis-3.0.0.gem
二集群的搭建
我的集群中有三个节点的集群,每个节点有一主一备。需要6台服务器(关键是没有)。
搭建一个伪分布式的集群,使用6个redis实例来模拟。
1)在usr/loacl下创建redis-cluster目录并在redis-cluster建6个目录
2)将你安装的redis目录下的bin目录分别拷贝到redis-cluster下的6个目录下
cd /usr/local/redis
cp -r bin ../redis-cluster/redis01
3)分别修改redis-cluster下6个redis实例的端口号和开启集群
这里写图片描述
这里写图片描述
4)把创建集群的ruby脚本复制到redis-cluster目录下(ruby脚本在redis源码的srcxia)
[root@iZ3q4yops0bhjtZ src]# cp *.rb /usr/local/redis-cluster/
5)启动6个redis实例
6)创建集群()
./redis-trib.rb create –replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006
我设置的端口为7001-7006
这里写图片描述
7001 7002 7003为主节点
7001 slots:0-5460 (5461 slots) master
7002 slots:5461-10922 (5462 slots) master
7003 slots:10923-16383 (5461 slots) master
7004是7001从节点
7005是7002从节点
7006是7003从节点
这里写图片描述
三测试集群
[root@bogon redis-cluster]# redis01/redis-cli -h 192.168.25.153 -p 7002 -c
这里写图片描述
通过算法计算将key a自动存到7003的实例上

原创粉丝点击