1.redis-cluster结构
哨兵集群redis技术中只能主要负责解决高可用问题,但是实现分布式比较浪费资源,分布式计算比较复杂,需要根据搭建的结构实现不同的分布式hash一致性的重写过程.
redis3.0版本redis出现了最终的结构支持高可用分布式同时存在的 redis-cluster
2.特性
2.1基础-两两互联
集群中节点与节点.部分角色两两互联,底层内部二进制通信协议,优化传输速度(同步集群先关信息)
2.2哨兵逻辑整合到master
集群中要求最小的master数量是3,将哨兵的进程逻辑整合到master节点中,集群的高可用监听逻辑由master,投票由过半的master决定.因为基础两两互联,master才能实现相互监听管理
2.3客户端连接一个节点获取集群所有信息
客户端基于两两互联,实现从一个节点,获取集群的所有节点的内容(jedisCluster的代码高可用)
2.4槽道实现key和节点的松耦合
hash slot:redis-cluster集群中有新分片计算的逻辑,hash槽,底层计算(key.CRC16()%16384)key值会对应到一个槽道号[0-16383],master可以管理一批不同的槽道,实现key–>slot–>node
槽道使用特性:客户端连接集群任意一个节点,发送处理数据的命令,会计算key值对应的槽道号,找到管理槽道号的节点,进行通知客户端转发redirect
3.首次接触槽道的概念
redis-cluster的搭建
1.集群搭建的最终结构
三个主节点,最终各自有一从的cluster高可用分布式结构
2.搭建的环境
初步搭建cluster集群,需要使用ruby的语言编写的脚本redis-trib.rb 在redis根目录src文件夹中;需要配置ruby语言的环境(tomcat运行,需要在jdk环境),镜像中,ruby环境是安装完成的.
[root@10-9-104-184 ~]# ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
[root@10-9-104-184 ~]#
如果使用的是自行购买的云主机环境,不需要ruby环境也可以将集群搭建完毕
插入
yum -y install make
yum -y install cmake
yum -y install tcl*
yum -y install gcc
ruby() ruby-gems gem-redis
2.1准备配置文件(过程和我一致,我会提供重启,重搭脚本)
○ 将模板文件redis.conf拷贝成redis-cluster.conf
[root@10-9-104-184 redis-3.2.11]# cp redis.conf redis-cluster.conf
○ 将redis-cluster.conf(6379为端口信息填写配置,后续修改端口)
之前配置的protected-mode bind daimonize dump logfile都报纸原样
§ 593行/597行配置第二种持久化方式