Redis集群搭建及扩容

Posted Lossdate

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis集群搭建及扩容相关的知识,希望对你有一定的参考价值。

一、集群搭建

	RedisCluster最少需要三台主服务器,三台从服务器
	端口号分别为:7001~7006
	其中7001 7002 7003为主,7004 7005 7006为从
	这里伪集群在一个服务器里搭建
  1. 创建7001实例

    mkdir redis-cluster/7001 -p
    cd redis-cluster/
    mkdir 7002 7003 7004 7005 7006
    
  2. 解压redis,安装

    cd redis-5.0.10/src/
    make install PREFIX=/usr/local/redis-cluster/7001/
    cd ../
    cp redis.conf /usr/local/redis-cluster/7001/bin/
    cd /usr/local/redis-cluster/7001/bin/
    
  3. 编辑redis.conf文件,修改port为7001

    #注释bind 127.0.0.1
    #bind 127.0.0.1
    #修改
    protected-mode no
    port 7001
    daemonize yes
    #放开注释cluster-enabled yes
    cluster-enabled yes
    
  4. 复制7001,创建7002~7006实例,注意端口修改

    cd ../../
    cp -r 7001/* 7002/
    cp -r 7001/* 7003/
    cp -r 7001/* 7004/
    cp -r 7001/* 7005/
    cp -r 7001/* 7006/
    
    vim 7002/bin/redis.conf
    port 7002
    vim 7003/bin/redis.conf
    port 7003
    vim 7004/bin/redis.conf
    port 7004
    vim 7005/bin/redis.conf
    port 7005
    vim 7006/bin/redis.conf
    port 7006
    
  5. 创建start.sh,启动所有的实例

    vim start.sh
    
    #写入脚本
    cd 7001/bin
    ./redis-server redis.conf
    cd ../../
    
    cd 7002/bin
    ./redis-server redis.conf
    cd ../../
    
    cd 7003/bin
    ./redis-server redis.conf
    cd ../../
    
    cd 7004/bin
    ./redis-server redis.conf
    cd ../../
    
    cd 7005/bin
    ./redis-server redis.conf
    cd ../../
    
    cd 7006/bin
    ./redis-server redis.conf
    cd ../../
    
  6. 赋写和执行的权限

    chmod u+x start.sh
    ./start.sh
    

  7. 创建Redis集群(创建时Redis里不要有数据)
    cluster-replicas : 1主1从机 前三个为主
    最后的1表示备份一份,因为一主对应一从

    cd 7001/bin/
    ./redis-cli --cluster create 192.168.200.136:7001 192.168.200.136:7002 192.168.200.136:7003 192.168.200.136:7004 192.168.200.136:7005 192.168.200.136:7006 --cluster-replicas 1
    

  8. 查看

    cat nodes.conf
    

  9. 连接集群
    连接:

    ./redis-cli -h 127.0.0.1 -p 7001 -c
    

    注意:-c 表示是以redis集群方式进行连接
    测试:

    查看集群状态

    cluster info
    


    查看节点:

    cluster nodes
    

二、扩容

  1. 添加主节点 7007

    mkdir 7007
    

     cd /root/redis-5.0.10/src/
     make install PREFIX=/usr/local/redis-cluster/7007
     cd /usr/local/redis-cluster/
     cp /root/redis-5.0.10/redis.conf /usr/local/redis-cluster/7007/bin/
    

    编辑redis.conf

    # 将daemonize由no改为yes 
    daemonize yes 
    # 注释掉bind 127.0.0.1 
    # bind 127.0.0.1 
    # 是否开启保护模式,由yes该为no 
    protected-mode no
    #解开cluster-enabled yes的注释
    cluster-enabled yes
    
  2. 启动7007

    cd ../../
    cd 7007/bin/
    ./redis-server redis.conf
    
  3. 将7007加入集群

    ./redis-cli --cluster add-node 192.168.200.136:7007 192.168.200.136:7001
    


    查看

    ./redis-cli -h 127.0.0.1 -p 7001
    cluster nodes
    

  4. hash槽重新分配(数据迁移)

    ./redis-cli --cluster reshard 192.168.200.136:7007
    


    这里要输入分槽数(1~16384),这里用3000做演示
    接着会提示What is the receiving node ID?
    这里输入7007的id,在上面的查看这一步cluster nodes可以查看7007的id

    接着会提示:

    这里输入all
    之后有提示则yes
    完成后查看

    cat nodes.conf 
    


    可与i看到7007已经分配好槽了

  5. 创建7008,添加7008从结点,将7008作为7007的从结点

    cd ../../
    cp -r 7007 7008
    

    编辑redis.conf

    cd 7008/bin/
    vim redis.conf
    #修改port为7008
    port 7008
    
  6. 启动7008

    ./redis-server redis.conf
    
  7. 添加从节点7008

    #./redis-cli --cluster add-node 新节点的ip和端口 旧节点ip和端口 --cluster-slave -- cluster-master-id 主节点id
    ./redis-cli --cluster add-node 192.168.200.136:7008 192.168.200.136:7007 --cluster-slave --cluster-master-id e19bc34e78f6f03f91fd096916d1480b2c13a98d
    


    查看

    ./redis-cli -p 7008 -c
    cluster nodes
    

三、缩容

	删除已经占有hash槽的结点会失败
	需要将该结点占用的hash槽分配出去
./redis-cli --cluster del-node 192.168.200.136:7008 9e2fd2c696ee5daffac8a77ca5dc2ee2ad53b7b3

以上是关于Redis集群搭建及扩容的主要内容,如果未能解决你的问题,请参考以下文章

Redis集群搭建及扩容

Redis 集群搭建

Redis 集群搭建

REDIS CLUSTER 搭建,扩容缩容基本原理

一次系统扩容引起的elasticsearch故障及恢复

MongoDB分片集群搭建及扩容