zoukankan      html  css  js  c++  java
  • Redis高可用之集群配置(六)

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

     

    0、Redis目录结构


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

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

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

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

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

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

    一、介绍


    上篇文章中介绍了redis的主从复制,但是如果出从复制无法满足单节点故障问题,则需要引入集群部署。

    在之前有看到过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并且支持动态扩展,官方已经玩到可以1000个节点 实现的复杂度低。

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

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

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

    二、集群部署


    1、环境配置

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

    主机说明 主机IP 端口
    Redis

    192.168.250.129

    7000

    7001

    Redis 192.168.250.130

    7002

    7003

    Redis 

    192.168.250.131

    7004

    7005

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

    分别为: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
    复制代码

    3、上面文件都配置好后,即可启动

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

    注意:

    在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。

    5、我们验证一下集群是否创建成功

    登录redis客户端 ./src/redis-cli -c -p 7000, -c 参数代表连接到集群中
    我们先看一下主从配对情况,根据node ID匹配可以得出配比。如下:红色圈出来的为标注,大家可以看看是否有对应的ID,这样我们就区分了主从节点的关系了。

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

     

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

    6、我们验证一下故障转移

    我们从上面可以看出7002为master,7001为其从节点。我们按照如下流程进行操作

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

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

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

    大家如果有问题欢迎提问,谢谢。

  • 相关阅读:
    AutoFac学习笔记
    AutoMapper学习笔记
    ROSLYN 查看C#方法执行次数
    log4net 动态创建文件名
    WPF可切换按钮,iOS风格
    咕咕咕
    贪吃的小J
    UK Day15
    UK Day15
    UK Day15
  • 原文地址:https://www.cnblogs.com/gavin5033/p/12614303.html
Copyright © 2011-2022 走看看