您现在的位置是:网站首页> 编程资料编程资料

Redis集群的离线安装步骤及原理详析_Redis_

2023-05-27 432人已围观

简介 Redis集群的离线安装步骤及原理详析_Redis_

前言

本文主要是记录一下Redis集群在linux系统下离线的安装步骤,毕竟在生产环境下一般都是无法联网的,Redis的集群的Ruby环境安装过程还是很麻烦的,涉及到很多的依赖的安装,所以写了一个文章来进行记录。本文分为两部分,第一部分先通过原生命令的安装来实现redis集群的部署,通过原生命令的安装对于了解redis集群的实现原理有很大的帮助,第二部分通过官方工具Ruby来进行Redis集群的安装,通过Ruby安装Redis集群的时候主要是搭建好Ruby环境,真正Redis集群的安装配置通过Ruby还是很简单的。

一、通过原生命令安装Redis集群(仅做理解Redis集群原理使用)    

      1.配置开启所需要的Redis节点     

     因为这里只是做一个简单的Redis集群原理演示,所以假设此时Redis服务已经安装完毕,在config文件夹下创建六个redis.conf配置文件,分别为redis-7000.conf、redis-7001.conf、redis-7002.conf、redis-7003.conf、redis-7004.conf、redis-7005.conf。其内容如下:

 port ${port} daemonize yes dir "/opt/redis/redis/data/" dbfilename "dump-${port}.rdb" logfile "${port}.log" cluster-enabled yes //开启节点的集群功能 cluster-config-file nodes-${port}.conf cluster-require-full-coverage no cluster-node-timeout 15000

     依次启动六个redis后台服务

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

ps -ef | grep redis查看启动情况:

    

  2.通过集群命令meet完成节点之间的相互通信    

    meet:cluster meet ip port
    redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7001
    redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7002
    redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7003
    redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7004
    redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7005

    通过端口为7000的节点,其他的节点也可以相互感知到对方的存在,然后每两个节点之间都会通信。

    验证:登录端口号为7000节点以后,分别输入cluster nodes和cluster info 命令。

    

  3.指派槽

    完成了节点之间的通信以后,就需要给每个主节点分配虚拟槽,一共存在16384个slot,redis节点之间互相知道哪个槽在哪个节点上,如果数据访问到了不属于自己的槽的redis,redis会告诉数据应该去访问哪个redis

    指派槽的命令:cluster addslots slot[slot...]

    redis-cli -h 127.0.0.1 -p 7000 cluster addslots {0...5641}
    redis-cli -h 127.0.0.1 -p 7001 cluster addslots {5642...10922}
    redis-cli -h 127.0.0.1 -p 7002 cluster addslots {10923...16383}

    在这里发现使用addslots 只能一个一个输入,感觉非常扯,使用数组的方式redis会报错,用网上的解决办法是将大括号里的 三个点改为两个点,我试了试不行的,如果有什么好的解决办法可以提供一下。    

  4.配置节点的主从关系    

    cluster replicate node-id
    redis-cli -h 127.0.0.1 -p 7003 cluster replicate ${node-id-7000}
    redis-cli -h 127.0.0.1 -p 7004 cluster replicate ${node-id-7001}
    redis-cli -h 127.0.0.1 -p 7005 cluster replicate ${node-id-7002}

    到此通过原生命令安装Redis集群就已经完成了,中间的步骤存在问题,无法分配slots,但是可以帮助简单的理解一下由Redis的单节点到Redis的集群都需要做什么工作。 

 二、通过Ruby离线安装Redis集群    

  1.安装环境以及安装包说明

 系统:Centos7(安装的时候选择安装了gcc) 安装包:redis-4.0.6.tar.gz //redis 的安装包     ruby-2.5.6.tar.gz //集群搭建需要Ruby环境     rubygems-3.0.6.zip //redis集群需要的ruby插件,rubygems是ruby的一个包管理工具,通过rubygems安装redis-3.2.2.gem     zlib-1.2.11.tar.gz //可能缺少的基础环境zlib     openssl-1.0.2t.tar.gz //可能缺少的基础环境openssl

  2.安装步骤      

   (1)解压编译redis

 mkdir /usr/local/redis //创建redis工作目录 cp redis-4.0.6.tar.gz /usr/local/redis //将redis的安装包拷贝到redis目录下 cd /usr/local/redis //进去redis文件下 tar -vxf redis-4.0.6.tar.gz //解压缩 ln -s redis-4.0.6 redis //建立软连接 cd redis //进入redis目录下 make && make install //编译安装redis

      (2)创建集群目录

 cd /usr/local/redis mkdir redis_cluster //在redis安装目录下创建redis_cluster目录 mkdir redis700{0,1,2,3,4,5}//批量创建六个redis节点工作目录,三主三从。

    

  (3)配置redis.conf

     cd /usr/local/redis/redis_cluster //进去集群工作目录

     vim redis.conf //创建redis.conf文件并添加一下内容

 port 7000 //配置集群的端口 bind 本机的IP //这里的默认配置是127.0.0.1改为内网ip。 daemonize yes //允许redis在后台运行 pidfile /var/run/redis-7000.pid //改成和端口一致 cluster-enabled yes // 开启集群 把注释去掉 cluster-config-file node-7000.conf //集群的配置,和端口一致 cluster-node-timeout 15000 // 请求超时,默认为15秒 appendonly yes // aof日志开启,有需要就开启,每一次写操作都会记录一条日志。

    将redis.conf 分别copy到六个节点的文件下

    cp redis.conf redis7000/ //将配置文件拷贝到redis7000节点的工作目录下
    cp redis.conf redis7001/
    cp redis.conf redis7002/
    cp redis.conf redis7003/
    cp redis.conf redis7004/
    cp redis.conf redis7005/


    因为配置文件是根据7000端口模本的配置写的,所以除了redis7000目录下的redis.conf,其他工作目录下的配置文件都需要将文件内容中的端口号修改为对应的工作目录的端口号。   

   (4)启动服务      

    cd /usr/local/redis/redis_cluster
    依次启动所有节点
    redis-server redis7000/redis.conf
    redis-server redis7001/redis.conf
    redis-server redis7002/redis.conf
    redis-server redis7003/redis.conf
    redis-server redis7004/redis.conf
    redis-server redis7005/redis.conf

    查看启动情况:ps -ef | grep redis

    

    (5)安装ruby

 mkdir /usr/local/ruby //创建ruby工作目录 cp ruby-2.5.6.tar.gz /usr/local/ruby //将安装包拷贝到该目录下 cd /usr/local/ruby //进入ruby工作目录 tar -vxf ruby-2.5.6.tar.gz // 解压缩 cd ruby-2.5.6/ ./configure make && make install

     查看安装情况:ruby -v

    

    (6)安装rubygems

 mkdir /usr/local/rubygems //创建rubygems工作目录 cp rubygems-3.0.6.zip /usr/local/rubygems //将安装包拷贝到该目录下 cd /usr/local/rubygems //进入ruby工作目录 unzip rubygems-3.0.6.zip // 解压缩 cd rubygems-3.0.6/ ruby setup.rb

    执行ruby setup.rb 的时候出现以下错误:


      解决办法:缺少了zlib包,需要安装zlib。    

    (7)安装zlib

 mkdir /usr/local/zlib //创建zlib工作目录 cp zlib-1.2.11.tar.gz /usr/local/zlib //将安装包拷贝到该目录下 cd /usr/local/zlib //进入zlib工作目录 tar -vxf zlib-1.2.11.tar.gz // 解压缩 cd zlib-1.2.11/ ./configure --prefix=/usr/local/zlib

 make make install

    (8)编译ruby中的zlib       

 cd /usr/local/ruby/ruby-2.5.6/ext/zlib/ ruby extconf.rb

     出现以下错误信息:


     发现原来是要将文件安装到本地运行库的里面才行,所有安装的时候需要额外配置信息。重新执行一下命令:

 ruby extconf.rb --with-zlib-include=/usr/local/zlib/include/ --with-zlib-lib=/usr/local/zlib/lib //会生成一个Makefile文件


    继续下一步:make && make install

    又出现报错信息:


    这个时候打开ext/zlib/Makefile文件,找到下面一行把路径进行修改一下。

    zlib.o: $(top_srcdir)/include/ruby.h 改成:zlib.o: ../../include/ruby.h

    如下图:


    修改完成,然后保存,然后重新:make && make install


  zlib的错误都解决以后再继续重新安装rubygems。

 cd /usr/local/rubygems/rubygems-3.0.6 ruby setup.rb

这次就安装成功了,如下图:

    

    (9)安装redis-3.0.0.gem

 cp redis-3.0.0.gem /usr/local/redis/redis cd /usr/local/redis/redis gem install redis-3.3.0.gem

    出现以下错误信息:


   因为Redis集群交互是需要OpenSSL,所系我们还需要安装OpenSSL。    

    (10)安装openssl

 mkdir /usr/local/openssl //创建openssl工作目录 cp openssl-1.0.2t.tar.gz /usr/local/openssl //将安装包拷贝到该目录下 cd /usr/local/openssl //进入openssl工作目录 tar -vxf openssl-1.0.2t.tar.gz // 解压缩 cd openssl-1.0.2t/ ./config -fPIC --prefix=/usr/local/openssl enable-shared ./config -t make && make install

    安装成功:

    

    (11)编译ruby中的openssl

 cd /usr/local/ruby/ruby-2.5.6/ext/openssl/ ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib 此时会生成Makefile文件,下面出现的错误需要修改本文件 make && make install

    出现以下错误信息:


    解决办法:vim Makefile 把Makefile文件中所有的 $(top_srcdir) 换成 ../.. 注意替换所有

    替换完成后,重新进行

-六神源码网