Redis高可用之集群配置(六)

0、Redis目录结构


      1)Redis介绍及部署在CentOS7上(一)html

      2)Redis指令与数据结构(二)node

      3)Redis客户端链接以及持久化数据(三)redis

      4)Redis高可用之主从复制实践(四)ruby

      5)Redis高可用之哨兵模式Sentinel配置与启动(五)服务器

      6)Redis高可用之集群配置(六)微信

 

1、介绍


上篇文章中介绍了redis的主从复制,可是若是出从复制没法知足单节点故障问题,则须要引入集群部署。数据结构

在以前有看到过redis集群部署的三种方案,不过性能最高的仍是redis官方推荐的redis-cluster,性能最高,其余两种我就不介绍了,主要介绍一下redis-cluster这种。app

一、redis-cluster负载均衡

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

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

自动实现负载均衡与高可用,自动实现failover而且支持动态扩展,官方已经玩到能够1000个节点 实现的复杂度低。

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

若是集群中的master没有slave节点,则master挂掉后整个集群就会进入fail状态,由于集群的slot映射不完整。若是集群超过半数以上的master挂掉,不管是否有slave,集群都会进入fail状态。

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

 

2、集群部署


一、环境配置

第一:准备3台服务器,每台服务器运行两个redis

主机说明 主机IP 端口
Redis

192.168.250.129

 

7000

7001

Redis 192.168.250.130

7002

7003

Redis 

192.168.250.131

7004

7005

 

二、在每一台服务器上咱们添加一下配置文件

分别为:redis-7000.conf  redis-7001.conf  redis-7002.conf  redis-7003.conf redis-7004.conf  redis-7005.conf 

配置文件内容为以下:其余的配置文件修改一下端口以及log文件、日志文件便可。其中中间部分cluster表明集群设置

daemonize yes port 7000 logfile 7000.log dir ./ bind 192.168.250.129 127.0.0.1 cluster-enabled yes cluster-config-file nodes_7000.conf cluster-node-timeout 15000 appendonly yes appendfilename aof-7000.aof appendfsync everysec no-appendfsync-on-rewrite yes auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb

 

三、上面文件都配置好后,便可启动

 

四、启动后咱们就能够建立集群啦

注意:

在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节点

./src/redis-cli --cluster create 192.168.250.129:7000 192.168.250.129:7001 192.168.250.130:7002 192.168.250.130:7003 192.168.250.131:7004 192.168.250.131:7005 --cluster-replicas 1

 

等待集群建立成功,发现 7000/7002/7004为master主节点,其余的为slave。

 

五、咱们验证一下集群是否建立成功

登陆redis客户端 ./src/redis-cli -c -p 7000, -c 参数表明链接到集群中
咱们先看一下主从配对状况,根据node ID匹配能够得出配比。以下:红色圈出来的为标注,你们能够看看是否有对应的ID,这样咱们就区分了主从节点的关系了。

 

验证数据匹配是否采用哈希槽的方式。你们可自行测试一下。发现我在7000客户端设置的数据,被分配到7002上了。

 

咱们查看一下key 为 wangjing,发现定位到了7002

 

六、咱们验证一下故障转移

咱们从上面能够看出7002为master,7001为其从节点。咱们按照以下流程进行操做

先停掉7002,发现7001转为了master节点,而后恢复7002上线,7002变为slave节点。

那么redis集群演示就到此为止吧。

后面还涉及到 集群新增节点(包括master和slave)以及删除节点,这些操做你们自行操做吧,俗话说 师父领进门修行在我的。你们加油。

你们若是有问题欢迎提问,谢谢。 

 

asp.net core 交流群:787464275 欢迎加群交流
若是您认为这篇文章还不错或者有所收获,您能够点击右下角的【推荐】按钮精神支持,由于这种支持是我继续写做,分享的最大动力!

做者:LouieGuo
声明:原创博客请在转载时保留原文连接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,若有特殊需求请与本人联系!

微信公众号:欢迎关注                                                 QQ技术交流群: 欢迎加群

                

相关文章
相关标签/搜索