1)redis-cluster架构图
架构细节:
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
(2)节点的fail是通过集群中超过半数的master节点检测失效时才生效.
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->key
说明:redis 只有从3.0往后才支持集群,之前的版本不支持集群。本问讲的是3.0的集群配置。更高的版本 配置文件有些许不一样 这里不做赘述。
2) redis-cluster选举:容错
架构细节:
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster负责维护node<->slot<->value
Redis集群中内置了 16384个哈希槽,当需要在 Redis集群中放置一个 key-value时,redis先对 key使用 crc16算法算出一个结果,然后把结果对 16384求余数,这样每个 key都会对应一个编号在 0-16383之间的哈希槽,redis会根据节点数量大致均等的将哈希槽映射到不同的节点
3)redis-cluster集群搭建条件
Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。
Redis集群至少需要6台服务器。
搭建伪分布式。可以使用一台虚拟机运行6个redis实例。只需要修改redis的端口号7001-7006
4)redis-cluster集群搭建环境
4.2 修改每个文件夹下的 redis.conf 修改2个地方
第一个地方改端口 port 7001 如果是redis02文件夹 那么端口号就改成 7002 以此类推
第二个地方开启集群模式 开启cluster-enablad yes 默认是注释掉的 取消注释即可
4.3 启动redis 一共有6个redis 可以写一个批处理批量启动
vim start-all.sh 输入
4.2.1
安装ruby
yum install ruby
yum install rubygems
安装ruby脚本运行使用的包。
下载地址:https://pan.baidu.com/s/1slLWGX3
[root@localhost ~]# gem install redis-3.0.0.gem
Successfully installed redis-3.0.0
1 gem installed
Installing ri documentation forredis-3.0.0...
Installing RDoc documentation forredis-3.0.0...
[root@localhost ~]#
4.2.3
执行脚本
进入redis安装目录进入src目录 找到redis-reib.rb这个文件夹。复制到redis-cluster文件夹 效果如下
然后开始执行脚本。输入命令