1、 在以前有看到过redis集群部署的三种方案,不过性能最高的仍是redis官方推荐的redis-cluster,性能最高,下面介绍一下redis-cluster这种模式。node
一、redis-clusterredis
A、采用去中心化的思想,没有中心节点的说法,它使用hash slot方式将16348个hash slot覆盖到全部节点上,对于存储的每一个key值,使用CRC16(KEY)&16348=slot获得他对应的hash slot,vim
并在访问key的时候就去找他的hash slot在哪个节点上,而后由当前访问节点从实际被分配了这个hash slot的节点去取数据,节点之间使用轻量协议通讯 减小带宽占用 性能很高,ruby
自动实现负载均衡与高可用,自动实现failover而且支持动态扩展。负载均衡
B、其内部中也须要配置主从,而且内部也是采用哨兵模式,若是有半数节点发现某个异常节点,共同决定更改异常节点的状态,若是改节点是主节点,则对应的从节点自动顶替为主节点,当原先的主节点上线后,则会变为从节点。性能
若是集群中的master没有slave节点,则master挂掉后整个集群就会进入fail状态,由于集群的slot映射不完整。若是集群超过半数以上的master挂掉,不管是否有slave,集群都会进入fail状态。网站
C、根据官方推荐 集群部署至少要3台以上的master节点。那么接下来就开始部署吧 ui
二、在每一路径下咱们添加一下配置文件加密
都为: redis.confspa
/usr/software/redis/redis-cluster/1001
/usr/software/redis/redis-cluster/1002
/usr/software/redis/redis-cluster/1003
/usr/software/redis/redis-cluster/1004
/usr/software/redis/redis-cluster/1005
/usr/software/redis/redis-cluster/1006
cd /usr/software/redis/redis-cluster/1001
vim redis.conf
#修改以下键值对
################################## NETWORK ##################################### #bind 127.0.0.1 protected-mode no port 1001 ################################# GENERAL ##################################### daemonize yes pidfile "/var/run/redis_1001.pid" logfile "/usr/software/redis/redis-cluster/1001/log/redis.log" ################################ SNAPSHOTTING ################################ dir "/usr/software/redis/redis-cluster/1001/data" ################################ REDIS CLUSTER ############################### cluster-enabled yes cluster-config-file nodes-1001.conf cluster-node-timeout 15000 ################################## SECURITY ################################### requirepass "ww"
其余几个实例的配置文件修改如下配置便可(须要本身建立log,data目录):
port 100x pidfile "/var/run/redis_100x.pid"
logfile "/usr/software/redis/redis-cluster/100x/log/redis.log" dir "/usr/software/redis/redis-cluster/100x/data" cluster-config-file nodes-100x.conf
3、集群启动
一、使用redis-server /usr/software/redis/redis-cluster/1001/redis.conf ...将全部节点启动

二、启动后咱们就能够建立集群啦
注意:在redis5.0后 建立集群统一使用redis-cli,以前的版本使用redis-trib.rb,可是须要安装ruby软件相对复杂,相比以前的版本5.0不须要安装额外的软件,方便。具体的能够参照redis官方网站查看 https://redis.io/topics/cluster-tutorial
建立集群命令:其中 cluster-replicas 1 表明 一个master后有几个slave,1表明为1个slave节点
redis-cli --cluster create 127.0.0.1:1001 127.0.0.1:1002 127.0.0.1:1003 127.0.0.1:1004 127.0.0.1:1005 127.0.0.1:1006 --cluster-replicas 1 -a ww
第一次因为没有设置 -a ww 添加密码,集群建立失败,
过程当中会提示如下内容,输入 yes 继续;
Can I set the above configuration? (type 'yes' to accept): yes
集群自动分配结果以下:
三、验证集群是否建立成功
首先查看一下主从配对状况
执行 :redis-cli -c -p 1001 -a ww
数据自动分配到1002节点,链接也转移到1002 节点
四、验证故障转移
结论是主节点故障后,下挂从节点会升级成主节点,并接替主节点的槽位。旧主节点上线后,也只能做为其从节点。
kill 掉1001 ,发现其从节点1004转为了master
从新启动1001,其变成slave节点