美文网首页
redis6.0.+ 版本 集群搭建

redis6.0.+ 版本 集群搭建

作者: lgtn | 来源:发表于2021-06-25 18:16 被阅读0次

    Redis的5种使用方式,各自优缺点分析:https://www.jianshu.com/p/220b8d2c41c3

    使用单机环境,不同端口,搭建三主三从的集群。本文中使用的ip为同一ip,搭建的集群是一个伪集群。搭建真正集群时,调整redis-cli --cluster create中的ip即可。

    本文的软硬件环境:

    ip:172.16.101.35

    os:CentOS Linux release 7.7.1908 (Core)

    redis:6.0.8

    1. 下载redis:http://download.redis.io/releases,本文中使用的为redis-6.0.8.tar.gz
    2. 编译安装

    2.1 解压redis-6.0.8.tar.gz

    tar xzf redis-6.0.8.tar.gz
    

    2.1 进入redis-6.0.8目录,执行make,进行编译

    cd redis-6.0.8 
    make
    
    若编译报错,可能是缺少编译环境gcc和tcl
    
      1)安装gcc,先清理掉上一步编译产生的文件,执行命令
    
      make distclean
    
      安装gcc,执行命令
    
      yum install gcc -y
    
      这里遇到一个问题:在安装6.0.1版本make时会遇到这样一个错误,server.c:xxxx:xx: error: ‘xxxxxxxx’ has no member named ‘xxxxx
    
        原因:gcc编译工具版本的问题,centos7默认安装的版本是4.8.5,但是要求对应版本要在5.3以上,查看gcc版本命令
    
        gcc -v
    
        解决方法:升级到5.3以上版本,依次执行命令
    
        yum -y install centos-release-scl
    
        yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
    
        scl enable devtoolset-9 bash
    
        echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile  --使永久生效
    
      2)安装tcl,执行命令
    
      yum install tcl -y
    
      重新编译make
    

    2.2 安装

     make install PREFIX=/usr/local/redis
    

    这时就会在/usr/local目录下生成一个redis目录,后面操作redis均使用此目录下文件,解压编译的目录作为源目录。

    1. 集群搭建

    2. 首先创建集群文件夹,存放不同配置文件

    cd /usr/local/redis 
    mkdir redis-cluster 
    cd redis-cluster 
    mkdir 7291 7292 7293 7294 7295 7296
    
    1. 复制配置文件至 7291 目录
    cp /usr/local/redis/bin/redis.conf /usr/local/redis/redis-cluster/7291
    
    1. 修改7291下配置文件内容,并将 bind 参数注释,否则外部客户端无法连接
    port 7291 
    daemonize yes 
    protected-mode no 
    dir /usr/local/redis/redis-cluster/7291/ 
    cluster-enabled yes 
    cluster-config-file nodes-7291.conf 
    cluster-node-timeout 5000
     appendonly yes 
    pidfile /var/run/redis_7291.pid
    
    1. 把7291下的redis.conf复制到其他5个目录
    cd /usr/local/redis/redis-cluster/7291
    cp redis.conf ../7292 
    cp redis.conf ../7293 
    cp redis.conf ../7294 
    cp redis.conf ../7295 
    cp redis.conf ../7296
    
    1. 批量替换内容
    cd /usr/local/redis/redis-cluster 
    sed -i 's/7291/7292/g' 7292/redis.conf 
    sed -i 's/7291/7293/g' 7293/redis.conf 
    sed -i 's/7291/7294/g' 7294/redis.conf 
    sed -i 's/7291/7295/g' 7295/redis.conf 
    sed -i 's/7291/7296/g' 7296/redis.conf
    
    1. 启动所有节点
    cd /usr/local/redis/bin
     ./redis-server ../redis-cluster/7291/redis.conf
     ./redis-server ../redis-cluster/7292/redis.conf 
    ./redis-server ../redis-cluster/7293/redis.conf 
    ./redis-server ../redis-cluster/7294/redis.conf
     ./redis-server ../redis-cluster/7295/redis.conf 
    ./redis-server ../redis-cluster/7296/redis.conf
    
    1. 检查进程
    ps -ef|grep redis 
    root 10776 1 0 06:32 ? 00:00:21 ./redis-server *:7291 [cluster] 
    root 10877 1 0 06:34 ? 00:00:23 ./redis-server *:7292 [cluster] 
    root 10923 1 0 06:35 ? 00:00:22 ./redis-server *:7293 [cluster] 
    root 10965 1 0 06:35 ? 00:00:22 ./redis-server *:7294 [cluster] 
    root 11013 1 0 06:36 ? 00:00:23 ./redis-server *:7295 [cluster] 
    root 11071 1 0 06:37 ? 00:00:22 ./redis-server *:7296 [cluster]
    
    1. 创建集群,注意! 使用绝对ip,不要使用127.0.0.1
    ./redis-cli --cluster create 172.16.101.35:7291 172.16.101.35:7292 172.16.101.35:7293 172.16.101.35:7294 172.16.101.35:7295 172.16.101.35:7296 --cluster-replicas 1
    
    参数说明: --cluster-replicas 1:表示一个主节点有一个从节点,集群需要6个节点,结果为三主三从;如果为2,则表示一主两从,同时需要9个节点
    
    1. 测试
    ./usr/local/redis/bin/redis-cli -p 7291 连接redis后,可使用如下命令管理集群
    
    1、集群命令
    cluster info :打印集群的信息
    cluster nodes :列出集群当前已知的所有节点(node),以及这些节点的相关信息。
    cluster meet :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
    cluster forget <node_id> :从集群中移除 node_id 指定的节点(保证空槽道)。
    cluster replicate <node_id> :将当前节点设置为 node_id 指定的节点的从节点。
    cluster saveconfig :将节点的配置文件保存到硬盘里面。
    2、槽slot命令
    cluster addslots [slot …] :将一个或多个槽(slot)指派(assign)给当前节点。
    cluster delslots [slot …] :移除一个或多个槽对当前节点的指派。
    cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
    cluster setslot node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
    cluster setslot migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。
    cluster setslot importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。
    cluster setslot stable :取消对槽 slot 的导入(import)或者迁移(migrate)。
    3、键命令
    cluster keyslot :计算键 key 应该被放置在哪个槽上。
    cluster countkeysinslot :返回槽 slot 目前包含的键值对数量。
    cluster getkeysinslot :返回 count 个 slot 槽中的键
    

    相关文章

      网友评论

          本文标题:redis6.0.+ 版本 集群搭建

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