redis集群 php,介绍Redis三种集群模式(Cluster集群模式)

下面由Redis教程栏目给大家介绍Redis三种集群模式-Cluster集群模式,希望对需要的朋友有所帮助!

0e3b65f3fb296aa40e7bd9ff8b0c593f.png

Redis三种集群模式-Cluster集群模式

一、  在之前有看到过redis集群部署的三种方案,不过性能最高的还是redis官方推荐的redis-cluster,性能最高,下面介绍一下redis-cluster这种模式。

1、redis-cluster

A、采用去中心化的思想,没有中心节点的说法,它使用hash slot方式将16348个hash slot覆盖到所有节点上,对于存储的每个key值,使用CRC16(KEY)&16348=slot得到他对应的hash slot,

并在访问key的时候就去找他的hash slot在哪一个节点上,然后由当前访问节点从实际被分配了这个hash slot的节点去取数据,节点之间使用轻量协议通信 减少带宽占用 性能很高,

自动实现负载均衡与高可用,自动实现failover并且支持动态扩展。

B、其内部中也需要配置主从,并且内部也是采用哨兵模式,如果有半数节点发现某个异常节点,共同决定更改异常节点的状态,如果改节点是主节点,则对应的从节点自动顶替为主节点,当原先的主节点上线后,则会变为从节点。

如果集群中的master没有slave节点,则master挂掉后整个集群就会进入fail状态,因为集群的slot映射不完整。如果集群超过半数以上的master挂掉,无论是否有slave,集群都会进入fail状态。

C、根据官方推荐 集群部署至少要3台以上的master节点。那么接下来就开始部署吧

2、在每一路径下我们添加一下配置文件

都为: redis.conf

二、集群配置

cd /usr/software/redis/redis-cluster/

1.创建目录

/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

2.修改redis.conf

cd /usr/software/redis/redis-cluster/1001

vim redis.conf

#修改如下键值对################################## NETWORK #####################################

#bind 127.0.0.1protected-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"/var/run/redis_100x.pid"

logfile "/usr/software/redis/redis-cluster/100x/log/redis.log""/usr/software/redis/redis-cluster/100x/data"-config-file nodes-100x.conf

三、集群启动

1、使用redis-server /usr/software/redis/redis-cluster/1001/redis.conf ...将所有节点启动

2、启动后我们就可以创建集群啦

注意:在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

7ce8668daa0007d3fe7576aa70c469d6.png

集群自动分配结果如下:

e42646396c5c7c26787c4d563df0d2d3.png

3、验证集群是否创建成功

首先查看一下主从配对情况

3f84c087a9d43b73b762ca733b6f3516.png

执行 :redis-cli -c -p 1001 -a ww

数据自动分配到1002节点,连接也转移到1002 节点

ed40d1fcbc3dbcfd6130c389f671a182.png

4、验证故障转移

结论是主节点故障后,下挂从节点会升级成主节点,并接替主节点的槽位。旧主节点上线后,也只能作为其从节点。

kill 掉1001 ,发现其从节点1004转为了master

5085f0d3a16130308089b6c64064b0db.png

重新启动1001,其变成slave节点

c31d9c83a4491205791f0f1d62dbec2e.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值