前言
在上一篇文章中队redis进行了简单的介绍和安装,在这一篇文章中进行一个redis-Cluster的集群搭建。
Redis-Cluster介绍
redis-cluster架构设计
架构细节:
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->key
(5)Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。
集群搭建
Redis集群中要求奇数节点,所以至少要有三个节点,并且每个节点至少有一备份节点,所以需要6台服务器。这里我在一个服务器中使用了6个节点。
搭建
1.在user/local路径下新建文件夹redis-cluster,复制redis(简单的介绍和安装文章中安装的redis) 到这个路径下
#创建redis-cluster
mkdir redis-cluster
#将redis复制到redis-cluster文件目录中,分别命名为1-6
cp -r /usr/local/redis /usr/local/redis-cluster/redis01
cp -r /usr/local/redis /usr/local/redis-cluster/redis02
cp -r /usr/local/redis /usr/local/redis-cluster/redis03
......
2.修改每一个下面的redis.conf文件
#编辑redis.conf
vim redis.conf
#需要进行修改的内容
port=7001#(剩下5个分别为7002,,7003,7004,7005,7006)
cluster-enabled yes
cluster-require-full-coverage no #默认是yes,只要有结点宕机导致16384个槽没全被覆盖,整个集群就全部停止服务,所以一定要改为no
3.需要一个ruby脚本redis-trib.rb 放到redis-cluster下(将redis的解压目录src目录下的该文件复制过去)
cp /usr/local/redis-3.2.9/src/redis-trib.rb /usr/local/redis-cluster/
4.执行ruby脚本
执行ruby脚本,需要安装ruby的环境
yum install ruby
yum install rubygems
5.安装redis需要依赖的gem包
下载:https://rubygems.org/gems/redis/versions/3.2.2
将redis-3.2.2.gem拷贝到linux的/usr/local/redis-cluster/下,然后执行安装
gem install redis-3.2.2.gem
6.启动所有的redis实例,
启动上面创建的那6个redis节点,为了简便我们在/usr/local/redis-cluster/写一个脚本来启动所有的redis,内容如下