Linux下搭建Redis分布式集群(详细图解演示)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HcJsJqJSSM/article/details/85345196

一 环境搭建. 

      1.1 环境准备.三台虚拟机.redis的版本是3.2.9.redis的各个版本下载地址:链接. 三个主节点三个从节点.

          ①:192.168.199.133.(部署两个Redis服务.)分别在目录redis_cluster7001和7002下.(作为集群控制端,需要编译安装redis,并且安装Ruby环境).

          ②:192.168.199.136.(部署两个Redis服务.)分别在目录redis_cluster7003和7004下.

          ③:192.168.199.137.(部署两个Redis服务.)分别在目录redis_cluster7005和7006下.

     其中192.168.199.133下载了Redis并且编译安装了.

分别完成另外两台的目录创建.

   ①:192.168.199.136.

 ②:192.168.199.137.

    1.2 配置文件复制.

      192.168.199.133下执行:

      scp -r /usr/local/redis/bin [email protected]:/usr/local/redis(-r递归复制目录)

      scp -r /usr/local/redis/bin [email protected]:/usr/local/redis

1.3 查看复制结果.

复制redis下的redis.conf目录至redis_cluster下的对应目录下.

  ①:199.168.199.133.

  cp redis.conf /usr/local/redis_cluster/7001

  cp redis.conf /usr/local/redis_cluster/7002

②:192.168.199.136.

scp /usr/local/redis-3.2.9/redis.conf [email protected]:/usr/local/redis_cluster/7003

scp /usr/local/redis-3.2.9/redis.conf [email protected]:/usr/local/redis_cluster/7004

③:192.168.199.137.(同上)

scp /usr/local/redis-3.2.9/redis.conf [email protected]:/usr/local/redis_cluster/7005

scp /usr/local/redis-3.2.9/redis.conf [email protected]:/usr/local/redis_cluster/7006

二.修改配置文件.

      2.1修改下面几个配置项.

           port 7001  //六个节点配置文件分别是7001-7003

           bind 192.168.1.109    //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访,和单机集群有区别

           daemonize yes        //redis后台运行

          pidfile /var/run/redis_7001.pid   //pidfile文件对应7001-7003

          cluster-enabled yes   //开启集群

          cluster-config-file nodes_7001.conf  //保存节点配置,自动创建,自动更新对应7001-7003

          cluster-node-timeout 5000    //集群超时时间,节点超过这个时间没反应就断定是宕机

          appendonly yes   //存储方式,aof,将写操作记录保存到日志中

           7001~7006的6个配置文件都修改一下.根据所在目录修改即可.

      2.2 192.168.199.133做为创建集群的主控制端,安装Ruby环境.(创建集群环境的脚本是Ruby语言编写的,需要Ruby的环境).

           ①:安装Curl.

          sudo yum install curl

  查看Curl的版本.curl --version

  

        ②:RVM的安装.(直接yum安装会出 现这样的错误.RVM是Ruby的包管理器)

        gem install redis

        ERROR: Error installing redis:

        redis requires Ruby version >= 2.2.2.)

    参考这篇文章的解决方式:链接.

    下面是自己按照文章中的解决方式走了一遍,是可行的.

     gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

    curl -sSL https://get.rvm.io | bash -s stable

find / -name rvm -print

source /usr/local/rvm/scripts/rvm

rvm list known(列出已知的rvm的版本)

rvm install 2.4.1(安装rvm 2.4.1).

rvm use 2.4.1(使用2.4.1的版本).

rvm use 2.4.1 --default(设置ruby的默认版本)

rvm remove 2.0.0(移除ruby2.0.0的版本).

ruby --version(查看ruby的版本).

安装redis.

三:启动Redis集群.

     3.1我三台虚拟机由于没有启动防火墙,如果启动了,做一下这些端口的映射.首先是启动6个Redis服务.

    ①:192.168.199.133的7001和7002服务.

 ./redis-server /usr/local/redis_cluster/7001/redis.conf

./redis-server /usr/local/redis_cluster/7002/redis.conf

ps -ef | grep -i redis

 ② 192.168.199.136

./redis-server /usr/local/redis_cluster/7003/redis.conf

./redis-server /usr/local/redis_cluster/7004/redis.conf

ps -ef | grep -i redis

③ 192.168.199.137

./redis-server /usr/local/redis_cluster/7005/redis.conf

./redis-server /usr/local/redis_cluster/7006/redis.conf

ps -ef | grep -i redis

至此6台Redis服务均已成功启动了.

       3.2 Redis的Ruby脚本创建集群.

         redis-3.2.9的src目录下有redis-trib.rb脚本.

       

     ./redis-trib.rb create --replicas 1  192.168.199.133:7001 192.168.199.136:7003 192.168.199.137:7005 192.168.199.133:7002 192.168.199.136:7004 192.168.199.137:7006   (这里说明一下,按照顺序,前面的是主节点后面三个是从节点,--replicates 1表示一个主节点有三个从节点的.)

三个主节点的Hash槽范围是:一共有16384的hash solt。(0~16383)

       7001:(0~5460)

       7003:(5461~10922)

       7005:(10923~16383)

至此,完成了Linux下的三台机器上三主三从节点的分布式Redis的集群搭建.这里是在虚拟机里面搭建,如果是云服务器上,肯定是开启了防火墙的,注意添加集群的端口开放,以及安全组的相应端口开放,否则会一直Join...添加服务中的.

四 测试Redis集群.

      4.1.首先是Redis客户端连接一下Redis服务.key值的测试.

       ./redis-cli -h 192.168.199.136 -p 7003 -c(-h是IP,-p是端口,-c是连接集群)

     连接集群后和单台操作redis的key一样,这里是设置了一个key,没有跳转是因为分配hash槽是就分配在这个7003主节点上了.

Redis Cluster值分配规则,所以分配key的时候,它会使用CRC16(‘my_name’)%16384算法,来计算,将这个key 放到哪个节点,这里分配到了15118slot 就分配到了7005(10923~16383)这个节点上。所以有这样一个跳转:

-> Redirected to slot [15118] located at 192.168.199.137:7005

看一下下面删除这两个key时,会更清楚一些.7005主节点跳转之7003主节点.5798属于(5461~10922).

   4.2 集群宕机测试.

       ①:首先是干掉一个主节点,例如7003.(当这个主节点有从节点的时候

   ./redis-trib.rb check 192.168.199.133:7001(check检查集群)7003对应的主节点挂了,则从节点7002升为主节点

cluster nodes(这里连接一个从节点7004).

②:再次干掉一个主节点(当这个主节点没有从节点的时候).直接说就是7002节点.

再次检测集群.

./redis-trib.rb check 192.168.199.133:7001

至此完成了,Linux下的分布式Redis的集群搭建的完整过程.遇到了一些问题,多思考一下,还是比较简单的.

猜你喜欢

转载自blog.csdn.net/HcJsJqJSSM/article/details/85345196
今日推荐