美文网首页redis
linux 搭建redis集群

linux 搭建redis集群

作者: 无敌小圈圈 | 来源:发表于2018-08-20 18:15 被阅读0次

    准备

    集群搭建

    1. 启动Redis多个实例

    我们在Redis安装目录下创建目录cluster,并创建7000-7005六个文件夹。

    cd ~/redis
    mkdir cluster
    cd cluster
    mkdir 7000 7001 7002 7003 7004 7005
    

    进入到redis安装目录src下,分别拷贝redis-server 和 redis-cli 到7000-7005文件夹

    cd ~/redis/redis-4.0.0/src/
    cp -r redis-server redis-cli ~/redis/cluster/7000
    cp -r redis-server redis-cli ~/redis/cluster/7001
    cp -r redis-server redis-cli ~/redis/cluster/7002
    cp -r redis-server redis-cli ~/redis/cluster/7003
    cp -r redis-server redis-cli ~/redis/cluster/7004
    cp -r redis-server redis-cli ~/redis/cluster/7005
    

    在redis安装目录下存在redis.conf文件,由于要改动的地方比较多,建议下载到本地,用其他编辑器打开进行编辑

    ~/redis/redis-4.0.0
    sz redis.conf
    

    编写7000.conf~7005.conf 6个配置文件,这6个配置文件用来启动6个实例,后面将使用这6个实例组成集群。
    以7000.conf为例,配置文件需要改写如下几项。

    port  7000                              //端口7000,7002,7003        
    # bind 10.93.84.53                //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群,注释掉代表任意ip都可访问
    daemonize    yes                    //redis后台运行
    pidfile  ./redis_7000.pid          //pidfile文件对应7000,7001,7002
    cluster-enabled  yes               //开启集群  把注释#去掉,若没有此项说明redis版本太低,不支持集群搭建
    cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次启动自动生成 7000,7001,7002
    

    分别将这几个文件拷贝到7000-7005文件夹下,用来启动实例。

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

    启动完毕查看进程

    ps -ef | grep redis | grep cluster
    root       5138      1  0 23:51 ?        00:00:00 /root/redis/cluster/7000/redis-server *:7000 [cluster]                  
    root       5143      1  0 23:51 ?        00:00:00 /root/redis/cluster/7001/redis-server *:7001 [cluster]                  
    root       5145      1  0 23:51 ?        00:00:00 /root/redis/cluster/7002/redis-server *:7002 [cluster]                  
    root       5150      1  0 23:51 ?        00:00:00 /root/redis/cluster/7003/redis-server *:7003 [cluster]                  
    root       5155      1  0 23:51 ?        00:00:00 /root/redis/cluster/7004/redis-server *:7004 [cluster]                  
    root       5160      1  0 23:51 ?        00:00:00 /root/redis/cluster/7005/redis-server *:7005 [cluster]
    

    至此,机器上创建了6个实例,端口号为port=7000~7005。

    Redis 3.0以上的集群方式是通过Redis安装目录下的bin/redis-trib.rb脚本搭建。

    这个脚本是用Ruby编写的。

    2. 安装ruby环境

    尝试了各种方式,遇到各种奇葩问题,有些因为公司网络不行,有些版本不行,还有些当时安装成功,重启虚拟机以后就不见了。。。。原因未深入研究,但最终找到了妥帖的方法。。。
    网上很多文章推荐使用yum install ruby但是版本较低,搭建redis集群要求版本ruby2.2.2+
    rvm方式我这里也失败了
    最终还是下载压缩包的方法解决了我的难题

    • 卸载
      如果yum方法安装了低版本ruby,要先卸载
      yum remove ruby
    • 下载
      我选择的比较新的版本
      wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz
    • 解压并编译安装
    tar xf ruby-2.5.1.tar.gz
    cd ruby-2.5.1
    mkdir /usr/local/ruby-2.5.1
    ./configure --prefix=/usr/local/ruby-2.5.1
    make && make install
    
    • 创建快捷键

    需要先删除旧的快捷方式重新创建
    我这里直接输入ruby -v就显示了版本号 重启也ok

    ln -s /usr/local/ruby-2.5.1/bin/ruby /usr/bin/ruby
    ruby -v
    ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
    
    • 安装gem
      使用yum install rubygems命令安装gem的话,高版本的ruby虽然还存在系统中,但是再运行ruby -v会显示yum安装的低版本ruby,但是如果卸载低版本ruby,gem也随之卸载了。
      所以还是下载压缩包
    cd /usr/local/
    wget https://rubygems.org/rubygems/rubygems-2.7.7.tgz
    

    解压
    tar xf rubygems-2.7.7.tgz
    安装并为文件创件连接

    cd rubygems-2.7.7 
    ruby setup.rb
    ln -s /usr/local/rubygems-2.7.7/bin/gem /usr/bin/gem 
    

    安装ruby包redis-4.0.2.gem
    redis-trib.rb的运行需要的ruby包,正如我们的java程序需要的jar包一样。
      这个包和redis版本不是非得匹配,只要支持就行。这个包安装到哪都行,只是提供一个环境而已。
    gem install redis-4.0.2.gem
    有一台虚拟机出现错误,无法正常安装参考

    ERROR:  Loading command: install (LoadError)
        cannot load such file -- zlib
    ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass
    
    

    gem install redis报错解决办法

    3. 启动集群

    • 将redis-trib.rb文件从redis-4.0.0/src下复制到cluster文件夹下
     mv /root/redis/redis-4.0.0/src  /root/redis/cluster`
     cd /root/redis/cluster
    
    ./redis-trib.rb  create --replicas  1  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
     
    

    如果出现如下错误
    删除node-7000.conf等配置文件
    重启后就可以启动了

    [ERR] Node 127.0.0.1:7000 is not empty. Either the node already knows other nodes (check with CLUSTE
    

    4.验证

    进入任意实例文件夹

    cd 7000
    ./redis-cli -h 127.0.0.1 -p 7002 -c
    

    显示

    [root@bogon 7000]# ./redis-cli  -h 127.0.0.1 -p 7002 -c
    127.0.0.1:7002> 
    
    

    相关文章

      网友评论

        本文标题:linux 搭建redis集群

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