zoukankan      html  css  js  c++  java
  • Redis Cluster命令安装

    Redis Cluster原理介绍不在赘述,可以查看官方文档。

    这里简单记录一下命令安装步骤。

    本次安装在一台机器上,根据端口区分不同进程;配置文件为最简配置。生产上不可以这样安装部署。

    主节点 从节点
    10.238.162.34:7000 10.238.162.34:7003
    10.238.162.34:7001 10.238.162.34:7004
    10.238.162.34:7002 10.238.162.34:7005

    1 准备节点

    配置文件模板,配置从简,其余配置文件只有端口不同,可以通过以下命令快速修改生成其他节点的配置文件。

    sed 's/7000/7001/g' redis-7000.conf > redis-7001.conf

    #redis-7000.conf 
    daemonize yes #后台进程启动
    port 7000 #端口号
    logfile "7000.log" #日志文件
    dir "/server/redis_data" #工作目录
    dbfilename "dump-7000.rdb" #RDB文件名称
    cluster-enabled yes  #开启集群模式
    cluster-config-file nodes-7000.conf #集群配置文件
    cluster-require-full-coverage no #部分节点下线的情况下也可以对外提供服务

    Cluster参数详解

    • cluster-enabled <yes/no>: 是否启用集群模式,默认是注释掉的,相当于no使用单机模式
    • cluster-config-file <filename>: 集群配置文件名,集群会自动生成和更新这个文件,不建议手动修改,用于记录集群的基本信息,例如状态,持久化变量等等。注意不要和其它配置文件同名,一般使用nodes-6379.conf,6379是使用的端口
    • cluster-node-timeout <milliseconds>: 集群节点的不可用时间(超时时间),超过这个时间就会被认为下线,单位是毫秒,一般是15000毫秒
    • cluster-slave-validity-factor <factor>: 集群主从切换的控制因素之一,需要联合上述cluster-node-timeout参数一起使用。如果设为0,当主节点下线的时候,不管从节点与主节点断开连接的时间有多久,集群都会尝试主从切换。如果该值设为大于0,主从间的最大断线时间会通过node timeout x cluster-node-timeout计算。例如,如果cluster-node-timeout=5000,cluster-slave-validity-factor=10,那么如果一个从节点与主节点断线超过5000x10=50000ms=50s的话,当主节点下线的时候,该从节点都不会被切换为主节点。需要注意的是,如果该值设为非0的话,在一个主节点下线的时候,集群有可能会因为从节点不能进行切换导致不能正常运作。在这种情况下,集群只能在原主节点重新上线连接到集群的时候才能恢复正常运作
    • cluster-migration-barrier <count>: 与同一主节点连接的从节点最少个数,如果实际连接到同一个主节点的从节点个数超过该值,多余的从节点可以被迁移到其它没有从节点连接的主节点
    • cluster-require-full-coverage <yes/no>: 默认值为yes,意思是需要集群内的全部hash slots都正常工作才能接收写命令,如果设为0,那么可以允许部分hash slots下线的情况下继续执行读操作
       

    启动节点

    redis-server redis-7000.conf 
    redis-server redis-7001.conf 
    redis-server redis-7002.conf 
    redis-server redis-7003.conf 
    redis-server redis-7004.conf 
    redis-server redis-7005.conf 
    redis-server redis-7006.conf 

    2 节点握手 meet

    redis-cli -p 7000 cluster meet 10.238.162.34 7001
    redis-cli -p 7000 cluster meet 10.238.162.34 7002
    redis-cli -p 7000 cluster meet 10.238.162.34 7003
    redis-cli -p 7000 cluster meet 10.238.162.34 7004
    redis-cli -p 7000 cluster meet 10.238.162.34 7005

    3 分配槽

    编写以下脚本分配槽

    start=$1
    end=$2
    port=$3
    for slot in `seq  ${start} ${end}`
    do
    echo "slot:${slot}"
    redis-cli -p ${port} cluster addslots ${slot}
    done

    执行脚本完成槽分配

    sh addslots.sh 0 5461 7000
    sh addslots.sh 5462 10922 7001
    sh addslots.sh 10923 16383 7002

    4 主从关系分配

    首先查看通过以下命令查看node_id

    # redis-cli -p 7000 cluster nodes
    bdd0eac7817bfe3f1f3b6870e52fa906375dcd7f 10.238.162.34:7005 master - 0 1547122613598 0 connected
    bb8d545d8b49817faa52247d5bf5dd3a4fb22f3b 10.238.162.34:7003 master - 0 1547122611093 5 connected
    056d388dc86262914e8243071619255afea72532 10.238.162.34:7004 master - 0 1547122610592 4 connected
    563453a9a672a7671fdd28f37416d74f57ae917b 10.238.162.34:7002 master - 0 1547122614600 2 connected 10923-16383
    9e1476481ece3c9de7c2aa32f1b87a45ea2e20a4 10.238.162.34:7000 myself,master - 0 0 3 connected 0-5461
    7b0ca479d46c59d8056d16b84de3b6136043ccdd 10.238.162.34:7001 master - 0 1547122612596 1 connected 5462-10922

    然后分配主从关系

    redis-cli -p 7003 cluster replicate 9e1476481ece3c9de7c2aa32f1b87a45ea2e20a4
    redis-cli -p 7004 cluster replicate 7b0ca479d46c59d8056d16b84de3b6136043ccdd
    redis-cli -p 7005 cluster replicate 563453a9a672a7671fdd28f37416d74f57ae917b

    英文文档:https://redis.io/topics/cluster-tutorial

    中文文档:http://www.redis.cn/topics/cluster-tutorial.html

    Cluster 命令详解:http://www.redis.cn/commands.html#cluster

  • 相关阅读:
    Java 集合系列06之 Vector详细介绍(源码解析)和使用示例
    Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例
    Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)
    linked-list-cycle-ii-LeetCode
    reorder-list-LeetCode
    sum-root-to-leaf-numbers-LeetCode
    binary-tree-maximum-path-sum-LeetCode
    机器人的运动范围-剑指Offer
    矩阵中的路径-剑指Offer
    滑动窗口的最大值-剑指Offer
  • 原文地址:https://www.cnblogs.com/DBABlog/p/12926922.html
Copyright © 2011-2022 走看看