zoukankan      html  css  js  c++  java
  • 如何创建redis集群

    1.下载redis源码包

    wget http://download.redis.io/releases/redis-3.2.4.tar.gz
    2.解压并安装
    tar xvf redis-3.2.4.tar.gz
    cd redis-3.2.4
    make && make instal

    3.将src文件夹将可执行文件拷贝到/usr/local/bin目录下,因为已经有redis2版本了,所以复制过去之后命名带上3

    cp src/redis-server /usr/local/bin/redis-server3
    cp src/redis-cli /usr/local/bin/redis-cli3
    cp src/redis-trib.rb /usr/bin/redis-trib.rb3

    4.创建节点配置文件,至少要6个节点才能创建一个集群【这里示范在同一台机器上创建6个节点来搭建集群,当然你也可以选择两台机器做成3个master和3个slave的形式】

    创建6个文件夹并将redis.conf文件复制过去并修改,以7001文件配置为例,后面同步修改7001为7002-7006就可以了

    mkdir -p cluster/7001 cluster/7002 cluster/7003 cluster/7004 cluster/7005 cluster/7006
    cp redis.conf cluster/7001
    vim cluster/7001/redis.conf

    主要修改以下几处

    port  7001                                 //端口7000,7002,7003        
    bind 127.0.0.1                             //默认ip为127.0.0.1,所以本机可以不写,如果是多台机器需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
    daemonize    yes                           //redis后台运行
    pidfile  /var/run/redis_7001.pid           //pidfile文件对应7000,7001,7002
    cluster-enabled  yes                       //开启集群  把注释#去掉
    cluster-config-file  nodes_7001.conf       //集群的配置  配置文件首次启动自动生成 7001
    cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
    appendonly  yes                            //aof日志开启  有需要就开启,它会每次写操作都记录一条日志

    5.启动刚刚创建的节点

    redis-server3 cluster/7001/redis.conf
    redis-server3 cluster/7002/redis.conf
    redis-server3 cluster/7003/redis.conf
    redis-server3 cluster/7004/redis.conf
    redis-server3 cluster/7005/redis.conf
    redis-server3 cluster/7006/redis.conf

    6.查看redis节点启动情况,出现以下信息说明启动正常

    ps -ef|grep redis
    root      6106     1  0 15:49 ?        00:00:00 redis-server3 127.0.0.1:7001 [cluster]
    root      6112     1  0 15:49 ?        00:00:00 redis-server3 127.0.0.1:7003 [cluster]
    root      6116     1  0 15:49 ?        00:00:00 redis-server3 127.0.0.1:7004 [cluster]
    root      6120     1  0 15:49 ?        00:00:00 redis-server3 127.0.0.1:7005 [cluster]
    root      6124     1  0 15:49 ?        00:00:00 redis-server3 127.0.0.1:7006 [cluster]
    root      6689     1  0 15:50 ?        00:00:00 redis-server3 127.0.0.1:7002 [cluster]

    netstat -tnlp|grep redis
    tcp        0      0 127.0.0.1:7001              0.0.0.0:*                   LISTEN      6106/redis-server3  
    tcp        0      0 127.0.0.1:7002              0.0.0.0:*                   LISTEN      6689/redis-server3  
    tcp        0      0 127.0.0.1:7003              0.0.0.0:*                   LISTEN      6112/redis-server3  
    tcp        0      0 127.0.0.1:7004              0.0.0.0:*                   LISTEN      6116/redis-server3  
    tcp        0      0 127.0.0.1:7005              0.0.0.0:*                   LISTEN      6120/redis-server3  
    tcp        0      0 127.0.0.1:7006              0.0.0.0:*                   LISTEN      6124/redis-server3  
    tcp        0      0 127.0.0.1:17001             0.0.0.0:*                   LISTEN      6106/redis-server3  
    tcp        0      0 127.0.0.1:17002             0.0.0.0:*                   LISTEN      6689/redis-server3  
    tcp        0      0 127.0.0.1:17003             0.0.0.0:*                   LISTEN      6112/redis-server3  
    tcp        0      0 127.0.0.1:17004             0.0.0.0:*                   LISTEN      6116/redis-server3  
    tcp        0      0 127.0.0.1:17005             0.0.0.0:*                   LISTEN      6120/redis-server3  
    tcp        0      0 127.0.0.1:17006             0.0.0.0:*                   LISTEN      6124/redis-server3

    6.创建集群

    出现错误,看提示信息原来这个工具是基于ruby实现的,所以需要先安装ruby

    redis-trib.rb3 create --replicas 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:7006
    /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
        from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/local/bin/redis-trib.rb3:25:in `<main>'

    安装ruby,查看yum提供ruby的安装,那直接用yum安装就行了

    yum list|grep ^ruby
    yum -y install ruby ruby-devel rubygems rpm-build
    gem install redis

    还是报错,因为直接通过yum安装的ruby版本是2.0.0,而redis集群需要2.2.2+

    开始使用源码包安装ruby2.2.2+,但是还是出问题,因为2.0.0版本冲突的问题吧,百度了一下可以使用rvm来安装同时卸载掉原来的2.0.0

    yum install curl
    gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3  //一定先执行这一步,不然下一步可能会报错
    curl -L get.rvm.io | bash -s stable
    source /usr/local/rvm/scripts/rvm
    rvm list known  //查看可安装的版本 可以看到有2.3.3,就安装这个吧
    rvm install 2.3.3
    rvm remove 2.0.0  //干掉就版本
    rvm remove 2.7.9  //干掉就版本
    ruby --version  //ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]  成功

    重新执行gem install redis,成功

    重新执行redis-trib.rb3 create --replicas 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:7006还是报错

    带上一个参数redis-trib.rb3 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:7006

     

    否则会提示

     输入yes后最终出现如图界面,表示成功了

    验证是否成功,集群链接带-c参数,如下显示成功了

    追加一下碰到的几个异常情况
    报错: Node xx.xx.xx.xx:7001 is not empty. Either the node already exists (check with CLUSTER NODES) or contains some key in database 0. 
    方案:清除该节点下的 x.aof x.rdb nodes.conf(即redis.conf 中配置的的cluster-config-file)文件,并连接所有节点执行 flushdb, 之后重新执行redis-trib.rb3 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:7006
     
    报错:ERR: Slot xx is alredy busy (Redis: CommandError) 
    方案:连接所有节点执行 flushall 和cluster reset, 之后重新执行redis-trib.rb3 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:7006
  • 相关阅读:
    softmax in pytorch
    python使用xlrd读取excel数据
    redis集群扩容(添加新节点)
    redis集群添加新节点
    重新创建redis集群的注意事项
    在三台服务器,搭建redis三主三从集群
    UI自动化测试工具Airtest/Poco
    单个机器部署redis集群模式(一键部署脚本)
    内置函数二
    内置函数一
  • 原文地址:https://www.cnblogs.com/smileyes/p/7295294.html
Copyright © 2011-2022 走看看