• Redis-Cluster模式基操篇


    在这里插入图片描述

    一、场景

    1、搞一套6个主节点的Cluster集群
    2、模拟数据正常读写
    3、模拟单点故障
    4、在不停服务的情况下将集群架构改为3主3从

    二、环境规划

    6台独立的服务器,端口18001~18006

    192.169.14.121
    192.169.14.122
    192.169.14.123
    192.169.14.124
    192.169.14.125
    192.169.14.126

    Redis–6.2.14版本
    CentOS Linux release 7.6.1810

    三、Redis-Cluster部署(6主模式)

    1、Redis安装(6节点分别执行)

    # 上传软件到/opt下
    tar -zxvf redis-6.2.14.tar.gz 
    cd redis-6.2.14
    make & make install
    

    2、创建目录(6节点分别创建对应目录)

    mkdir -p /data/redis-cluster-18001
    

    3、准备配置文件(6节点分别创建对应配置)

    vim /data/redis-cluster-18001/redis.conf
    ######测试环境就写最基础的配置了
    port 18001
    dir /data/redis-cluster-18001/
    cluster-enabled yes
    cluster-config-file nodes-18001.conf
    cluster-node-timeout 5000
    bind 0.0.0.0
    protected-mode no
    appendonly yes
    maxmemory 10G
    daemonize yes
    

    4、启动Redis(6节点分别执行)

    cd /opt
    ./redis-6.2.14/src/redis-server /data/redis-cluster-18001/redis.conf
    

    由于配置文件中声明了是集群模式,所以启动后看进程是有集群标识的
    在这里插入图片描述

    5、初始化集群(任意节点执行)

    cd /opt
    /usr/local/redis-5.0.4/src/redis-cli --cluster create --cluster-replicas 1 192.168.5.100:8001 192.168.5.100:8002 192.168.5.100:8003 192.168.5.100:8004 192.168.5.100:8005 192.168.5.100:8006
    

    在这里插入图片描述
    非常方便哈,Redis从3.0版本开始支持Cluster模式,但是最开始需要借助ruby来安装。
    从5.0版本开始,可以直接通过redis-cli --cluster的方式操作集群。

    6、集群验证

    cd /opt
    ./redis-6.2.14/src/redis-cli -c -h 192.168.14.121 -p 18001
    192.168.14.121:18001> cluster nodes
    

    在这里插入图片描述
    可以看到16384个槽位均匀分配在各个节点上。

    不过

    这种全主架构在Redis-Cluster中是有单点故障问题的,如果其中任意一台服务器挂掉,整个Redis集群将不可读写

    四、模拟单点故障并验证

    在这里插入图片描述
    同时查看cluster nodes
    在这里插入图片描述

    五、转为3主3从模式

    因为Redis-Cluster模式下当有槽位不可用(不管槽位内是否有数据)时会导致整个集群不可用。
    所以我们现在将6主模式改为3主3从模式

    1、先将node4、5、6的槽位转移到node1、2、3上
    在这里插入图片描述

    redis-cli --cluster reshard 集群任意节点IP:端口 --cluster-from 源node-id --cluster-to 目标node-id --cluster-slots 转移的槽位数量 --cluster-yes

    cd /opt
    ./redis-6.2.14/src/redis-cli --cluster reshard 192.168.14.121:18001 --cluster-from 3c01c7397471f52c1df4f05223de1bab80ac2b0f --cluster-to bcdb37c781a80ee7bf1c962917649b5a44ddec2f --cluster-slots 2701 --cluster-yes
    

    最终效果
    在这里插入图片描述

    2、节点下线

    redis-cli --cluster del-node 集群任意节点IP:端口 下线节点node-id

    redis-cli  --cluster del-node 192.168.14.121:18001 b494529c8a6cea6a47d8f058ab43df220b30815c
    

    在这里插入图片描述

    3、下线节点以从节点身份重新加入集群

    redis-cli --cluster add-node 新加节点IP:端口 集群任意节点IP:端口 --cluster-slave --cluster-master-id 主节点node-id

    cd /opt
    ./redis-6.2.14/src/redis-cli --cluster add-node 192.168.14.124:18004 192.168.14.121:18001 --cluster-slave --cluster-master-id 1dbc5115472fd6b64a537b6d862f6ec5b9892340
    

    在这里插入图片描述

    最终效果
    在这里插入图片描述

    现在任意节点宕机会自动切换主从,也不会影响集群的正常使用。

    彩蛋

    如果在生产环境是否也可以做槽位迁移呢?,当然是可以的,因为Redis-Cluster提供ask重定向处理功能(应对操作的key正在发生迁移),不过还是需要在业务顶峰期操作。

    在这里插入图片描述

  • 相关阅读:
    springboot+校园交友平台小程序 毕业设计-附源码191733
    PMI-ACP练习题(20)
    基于51单片机多路DTH11温湿度检测控制系统
    服务器没有安装torch库的解决记录
    spring boot 自定义配置文件并提示及NestedConfigurationProperty注解作用
    volatile修饰数组
    工业智能网关BL110应用之三十六: 如何连接配置金鸽 金鸽Modbus服务器
    1. 查询语句基础
    多个pdf怎么合并成一个pdf?
    Pikachu靶场——文件包含漏洞(File Inclusion)
  • 原文地址:https://blog.csdn.net/MZZHAO23/article/details/139294998