美文网首页
redis-cluster备忘录

redis-cluster备忘录

作者: 博陵韩少 | 来源:发表于2018-12-21 14:19 被阅读0次

    一、日常操作


    redis 5.0版本命令有变化

    1.初始化集群
    redis-trib.rb create --replicas 1 IP1:6379 IP2:7000 IP3:7000 IP4:7000 IP5:7000 IP6:7000
    new:./redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1
    2.查看集群信息
    redis-cli -p 7000 -c cluster info
    3.查看节点信息
    redis-cli -p 7000 -c cluster nodes|sort -t "." -k3n,3 -k4n,4
    4.trib查看集群信息
    redis-trib.rb info 127.0.0.1:7000
    new:redis-cli --cluster info 127.0.0.1:7000
    5.增加master主节点
    redis-trib.rb add-node IP-new:7000 IP-old:7000
    6.增加slave备节点
    redis-trib.rb add-node --slave --master-id 88dkf##2dnf IP-new:7000 IP-old:7000
    故障slave加入前需要将本机的rdb文件 和 node.conf文件重命名。
    redis-cli --cluster add-node 127.0.0.1:7000 127.0.0.1:7002 --cluster-slave --cluster-master-id 6d838ee761f95d1fc2c1cf34f4272cf2151694c7
    7.删除节点
    redis-trib.rb del-node IP:port 611dbds**ebb
    删除从节点非常简单,指定ip+port以及节点id即可。但是删除主节前,一定要先将slot槽重新移动到其他主节点。
    8.重新分配槽位
    redis-trib.rb reshard IP-new:7000
    根据提示选择移动到新节点的槽位数量,源头的范围(一般填 all)。

    最少3主。启动cluster6个节点:redis-server /redis/data/redis.conf ,确保该目录下没有AOF RDB文件,否则不能加入集群。

    二、性能优化


    1.关闭RDB防止fork进程的内存溢出问题
    save ""
    appendonly=yes
    2.防止某个节点挂掉,整个cluster挂掉的问题
    cluster-require-full-coverage no
    3.设置最大内存
    maxmemory
    11453246122
    ~~最大不超过10G
    4.日志
    logfile "./redis.log"
    5.防止因为磁盘同步,卡掉住进程的情况出现
    no-appendfsync-on-rewrite yes
    6.内核修改,如果没开防火墙可以不设置这个
    net.nf_conntrack_max = 1648576
    7.这个用来防止内存申请不到发生卡死的情况,很重要
    vm.overcommit_memory=1
    (1)编辑/etc/sysctl.conf,改vm.overcommit_memory=1,然后sysctl -p?使配置文件生效
    (2)sysctl vm.overcommit_memory=1
    (3)echo 1 > /proc/sys/vm/overcommit_memory
    建议使用方法 1
    8、thp redis warning要求关掉 ——【ok】默认为关
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    同时写入rc.local,保证下次重启生效
    9.最大连接数要改一下,redis的warning会要求修改
    net.core.somaxconn= 1024
    编辑/etc/sysctl.conf ,增加 net.core.somaxconn= 1024,然后sysctl -p 使配置文件生效
    10.设置内存超出策略
    allkeys-lru
    11.BGREWRITEAOF 这个命令可以重写aof,因为aof长时间增量更新,导致越来越大,但是内存可能没这么大,所以可以用这个命令重写进行复制备份,恢复等
    12.内存吃紧的时候可以尝试手动去掉内存碎片
    config set activedefrag yes
    memory purge

    三、疑难杂症处理


    案例1:

    集群中某个从节点down掉,重新开启从节点,然后手动加到集群中,但redis-cli -p 7000 -c cluster nodes|sort -t "." -k3n,3 -k4n,4执行后,发现列表中存留下图所示的noaddr 从节点,cluster info命令查看的话也会多一个僵尸slave。 虽然对集群无大的影响(也可能没发现),但总感觉要恢复到完美的初始状态。

    image.png
    分析:
    网上查看原因,需要修复挂掉的从节点的node.conf。里面的节点id是‘0df3’
    集群中随便挑选一个节点执行grep 42.75 node.conf,发现42.75的节点id是更新后的‘
    90bb’
    image.png
    解决:
    所有节点统一执行下 redis-cli -p 7000 -c cluster forget *0df3。文献中说必须1分钟内执行完,笔者尝试发现没有这个限制,有待进一步研究。

    四 redis 5.0.5 cluster 安装

    4.1 redis安装

    文件拷贝到/usr/local
    tar xzvf redis-5.0.5.tar.gz
    make
    make install

    4.4 ruby ruby-gem安装

    pass

    • If you are using Redis 5, this is very easy to accomplish as we are helped by the Redis Cluster command line utility embedded into redis-cli, that can be used to create new clusters, check or reshard an existing cluster, and so forth.
    • For Redis version 3 or 4, there is the older tool called redis-trib.rb which is very similar. You can find it in the src directory of the Redis source code distribution. You need to install redis gem to be able to run redis-trib.

    4.3 集群配置

    命令全局化
    cp redis-cli /usr/bin/
    cp -p redis-trib.rb /usr/bin/
    按照下面的目录来慢慢配置我们的集群

    image.png

    4.2.1 节点配置

    在redis根目录新建7000节点
    mkdir -p iclustre/7000
    vi 7000/redis.conf

    daemonize yes
    port 7000
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 15000
    appendonly yes
    

    cp -p ./src/redis-server icluster/7000/
    同理创建7001-7005其他5个节点,注意更改redis.conf里的port。
    cp -p ./src/redis-cli ./icluster
    cp -p ./src/redis-trib.rb ./icluster
    创建服务启动脚本 和 集群初始化脚本
    vi start-all.sh

    cd 7000
    ./redis-server redis.conf
    cd ..
    cd 7001
    ./redis-server redis.conf
    cd ..
    cd 7002
    ./redis-server redis.conf
    cd ..
    cd 7003
    ./redis-server redis.conf
    cd ..
    cd 7004
    ./redis-server redis.conf
    cd ..
    cd 7005
    ./redis-server redis.conf
    cd ..
    

    vi redis-cluster-init.sh

    ./redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1
    #./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7000
    
    参考

    https://redis.io/topics/cluster-tutorial#redis-cluster-and-docker

    相关文章

      网友评论

          本文标题:redis-cluster备忘录

          本文链接:https://www.haomeiwen.com/subject/aiymkqtx.html