zoukankan      html  css  js  c++  java
  • Redis本地集群搭建(5版本以上)

    Redis本地集群搭建(5版本以上)

    2019年11月3日10:05:48

    步骤

    1、下载安装Redis的安装包

    2、复制5份,一共6份Redis的解压安装版,修改每个Redis节点的端口并开启节点

    3、修改每个Redis节点的端口,以及开启集群模式

    3、使用redis-cli --cluster create ip:port给集群的节点分配哈希槽(如果要使用主从,只需要添加master节点的ip:port即可)

    4、使用redis-cli --cluster check ip:port查看节点信息

    5、使用redis-cli --cluster add-node node-ip:node-port master-ip:master-port --cluster-slave --cluster-master-id master节点id

    具体实现

    1、编译

    下载安装Redis的安装包

    wget http://download.redis.io/releases/redis-5.0.6.tar.gz
    

    解压安装包

    tar zxf redis-5.0.6.tar.gz
    

    进入到解压后的文件夹

    QQ截图20191103144705

    ps:编译前,服务器需要安装gcc

    yum install gcc-c++
    

    输入make命令即可编译,出现下图提示表示编译成功

    QQ截图20191103145058

    也可以指定编译位置

    make install PREFIX=path
    

    编译后的文件

    QQ截图20191103145746

    2、复制并修改配置,开启

    使用命令复制

    cp -rf 文件夹路径 文件夹路径
    

    效果

    QQ截图20191103150602

    修改redis.conf的配置,给复制的每一份redis都修改成不同的端口,后台启动

    # 默认
    daemonize no
    port 6379
    # cluster-enabled yes
    
    #修改
    daemonize yes
    port 7001
    cluster-enabled yes
    

    开启每个节点(批量执行)

    cd /software/redis/redis6379/bin
    ./redis-server ./redis.conf
    cd /software/redis/redis7000/bin
    ./redis-server ./redis.conf
    cd /software/redis/redis7001/bin
    ./redis-server ./redis.conf
    cd /software/redis/redis7002/bin
    ./redis-server ./redis.conf
    cd /software/redis/redis7003/bin
    ./redis-server ./redis.conf
    cd /software/redis/redis7004/bin
    ./redis-server ./redis.conf
    

    出现下图表示所有节点开启成功

    QQ截图20191103151400

    3、分配哈希槽

    使用如下命令

    redis-cli --cluster create ip:port ip:port ip:port
    

    QQ截图20191103151606

    4、查看分配信息

    使用命令redis-cli --cluster check ip:port查看分配的信息

    QQ截图20191103152330

    可以看出,6379分配到的是0-5460,7001是5461-10922,7003是10923-16383。

    5、添加从节点

    使用命令

    redis-cli --cluster add-node node-ip:node-port master-ip:master-port --cluster-slave --cluster-master-id master节点id
    
    

    QQ截图20191103152840

    添加完毕后查看节点信息

    cluster nodes
    
    

    QQ截图20191103152935

    从上图可以看出,设置了3主3从的集群模式。

    6、测试key

    连接redis(-c表示是集群模式)

    redis-cli -p 6379 -c
    
    

    QQ截图20191103153704

    可以看出,在端口为6379的节点上添加key,通过算法将这个key转发到了7001端口的节点上。

    进入7001端口的节点,可以查到这个key值。

    同时,7001端口的从节点也接收到了这个key值。

    7、测试哨兵

    使用 ps aux|grep redis查询每个redis节点的端口

    QQ截图20191103153842

    这时候主从节点之间是正常的

    QQ截图20191103153929

    关闭端口为7001的节点

    QQ截图20191103154106

    QQ截图20191103154040

    7001节点的7002端口从节点自动升级到了master节点。

    重新开启7001节点,自动降级到slave。

    QQ截图20191103154314


    Redis高可用集群的水平扩展

    扩展主节点

    新建端口为7005和7006的Redis节点并运行。

    QQ截图20191103155441

    把7005节点加入容器

    redis-cli --cluster add-node 127.0.0.1:7005 127.0.0.1:6379
    
    

    QQ截图20191103160806

    分配哈希槽给7005节点

    从7001节点分配1000个哈希槽给7005节点
    all表示均匀分配(从每个节点取一点哈希槽出来)
    done表示从当前节点取
    
    [root@iz2zeaf5jdjve80rjlsjgnz bin]# redis-cli --cluster reshard 127.0.0.1:7001
    >>> Performing Cluster Check (using node 127.0.0.1:7001)
    S: 152f1f15ac36784362e8733a393c9a257f7a8ba2 127.0.0.1:7001
       slots: (0 slots) slave
       replicates f9129fca620934624742e25a31d08c545a9d583e
    S: ac613c6d40e0d860662effb7403a67fe9b6029aa 127.0.0.1:7000
       slots: (0 slots) slave
       replicates 77cbdfe644fdc0e50e550cad44a3ed144c8d2499
    M: f9129fca620934624742e25a31d08c545a9d583e 127.0.0.1:7002
       slots:[5962-10922] (4961 slots) master
       1 additional replica(s)
    S: 09ede6784ccc5a41b82db3fe4c544b5c126f455e 127.0.0.1:7004
       slots: (0 slots) slave
       replicates bd08af40b95169524c27da654302c9f12d8a9e8c
    M: bd08af40b95169524c27da654302c9f12d8a9e8c 127.0.0.1:7003
       slots:[11422-16383] (4962 slots) master
       1 additional replica(s)
    M: 6c87fc578eec8bd7d588d111347dd7a7bd21dd0b 127.0.0.1:7005
       slots: (0 slots) master
    M: 77cbdfe644fdc0e50e550cad44a3ed144c8d2499 127.0.0.1:6379
       slots:[0-5961],[10923-11421] (6461 slots) master
       1 additional replica(s)
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.
    How many slots do you want to move (from 1 to 16384)? 1000
    What is the receiving node ID? 6c87fc578eec8bd7d588d111347dd7a7bd21dd0b
    Please enter all the source node IDs.
      Type 'all' to use all the nodes as source nodes for the hash slots.
      Type 'done' once you entered all the source nodes IDs.
    Source node #1: all
    
    Ready to move 1000 slots.
    
    

    QQ截图20191103161734

    扩展从节点

    将7006节点的Redis添加到集群中。

     redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7005 --cluster-slave --cluster-master-id 6c87fc578eec8bd7d588d111347dd7a7bd21dd0b
    
    

    QQ截图20191103162309

    参考

    Redis入门(适合新手)

    redis集群搭建(非常详细,适合新手)

    Redis5 cluster人工指定主从关系

    Redis 5 高可用集群的水平扩展

  • 相关阅读:
    套接字I/O模型-WSAAsyncSelect
    套接字I/O模型-完成端口IOCP
    套接字I/O模型-WSAEventSelect(转载)
    Win7+VS2010环境下CEGUI 0.8.4编译过程详解
    数组去重统计排序
    计算当前月有几天
    前端开发仓库
    Jquery中bind(), live(), on(), delegate()四种注册事件的优缺点,建议使用on()
    图表那些事
    图标字体,矢量图标
  • 原文地址:https://www.cnblogs.com/lxxxxxxy/p/11811146.html
Copyright © 2011-2022 走看看