Linux系统搭建Redis集群(redis-cluster)

工具准备

Linux图形化工具为Xftp,shell工具为Xshell
#Redis集群相关概念

  • redis-cluster架构图
    这里写图片描述
    redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护
    redis 集群中内置了 16384 个哈希槽,当需要在 redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
    例如:
    这里写图片描述
    Key:a
    计算a的Hash值,若为100,这个槽在server1上,所以a应存放于server1
    Key:hello
    hello的Hash值,若为10032,这个槽在server2上,则hello应存放于server2
    #集群搭建
    ##1. 集群结构
    集群中有三个节点,每个节点有一主一备,需要6台虚拟机。
    由于条件有限,所以搭建一个伪分布式的集群,使用6个redis实例来模拟

2. 搭建集群需要的环境

搭建集群需要使用到官方提供的ruby脚本。
需要安装ruby的环境

2.1 安装ruby

第一步:

yum -y install ruby
或
yum install ruby

   
   
  • 1
  • 2
  • 3

若使用yum install xxxx,找到安装包之后,会询问Is this ok [y/d/N]:,需要手动进行选择,如下图:
这里写图片描述
如果加上参数-y,则会自动选择y,不需要再手动选择,下载自动完成
第二步:

yum -y install rubygems
或
yum install rubygems

   
   
  • 1
  • 2
  • 3

2.2 上传安装包

第一步:
官方网站下载Redis的Linux系统安装包,后缀 .tar.gz,使用XFtp上传到Linux服务器
这里写图片描述
第二步: 解压:

tar -zxf redis-4.0.10.tar.gz
或
tar -zxvf redis-4.0.10.tar.gz

   
   
  • 1
  • 2
  • 3

-zxvf显示解压进度,-zxf不显示

2.3 下载脚本依赖

Redis集群需要使用官方提供的集群管理脚本工具redis-trib.rb
此工具位于redis安装包下的src目录
这里写图片描述
使用此脚本需要安装其所依赖的ruby包,执行命令:

gem install redis

   
   
  • 1

问题来了!
Linux报错:
Fetching: redis-4.0.2.gem (100%) ERROR: Error installing redis: redis requires Ruby version >= 2.2.2.
2.2.2的报错,是CentOS默认支持ruby到2.0.0,可gem 安装redis需要最低是2.2.2
解决办法:提升ruby版本

  1. 安装curl

     sudo yum install curl
    
         
         
    • 1
  2. 安装rvm

     curl -L get.rvm.io | bash -s stable
    
         
         
    • 1

    执行这一步可能会有特殊情况:

    这里写图片描述
    按提示执行所述的命令即可

     gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
     command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
    
         
         
    • 1
    • 2

    重新执行第二步的命令
    这里写图片描述
    成功!继续以下步骤

  3. 刷新资源

     source /usr/local/rvm/scripts/rvm
    
         
         
    • 1
  4. 查看rvm库中已知的ruby版本

     rvm list known
    
         
         
    • 1
  5. 安装一个ruby版本

     rvm install  2.4.0
    
         
         
    • 1

    可自行选择,最低版本2.2.2

  6. 使用一个ruby版本

     rvm use  2.4.0
    
         
         
    • 1
  7. 卸载一个已知版本

     rvm remove 2.0.0
    
         
         
    • 1
  8. 查看版本

     ruby  --version
    
         
         
    • 1

    这里写图片描述

问题解决,重新执行下载脚本依赖的命令:

gem install redis

   
   
  • 1

这里写图片描述
依赖下载完成,准备工作结束
##3. 开始搭建集群(下面的命令都给出了相对路径,方便大家参考)
**第一步:**安装redis

  1. 安装的前提条件:需要安装gcc

    
         
         

    yum install gcc-c++
    ```
    2. 进入解压好的redis安装包,由于redis使用C语言编写,所以要先编译再安装

    ```
    
       
       
    • 1

    cd redis-4.0.10
    [root@localhost redis-4.0.10]# make //编译
    [root@localhost redis-4.0.10]# make install PREFIX=/usr/local/redis //安装,PREFIX指定安装路径,没有的路径自动创建
    ```
    3. 将redis安装包中的 redis.conf 文件拷贝到redis的 bin 目录下:

    ```
    
       
       
    • 1

    [root@localhost redis-4.0.10]# cp redis.conf /usr/local/redis/bin/
    ```
    4. 拷贝六份redis/bin到新目录下

    ```
    
       
       
    • 1

    [root@localhost redis]# cp -r bin /usr/local/redis-cluster/redis01
    [root@localhost redis-cluster]# cp -r redis01 redis02
    [root@localhost redis-cluster]# cp -r redis01 redis03
    [root@localhost redis-cluster]# cp -r redis01 redis04
    [root@localhost redis-cluster]# cp -r redis01 redis05
    [root@localhost redis-cluster]# cp -r redis01 redis06
    ```

    第二步: 修改配置文件(每个redis实例都需要修改)

    [root@localhost redis-cluster]# vim redis01/bin/redis.conf
    
       
       
    • 1
    1. 开启后端启动
      这里写图片描述
    2. 修改端口号,默认6379,集群端口号从7001~7006
      若是同一台主机,端口必须不同,不同主机可以相同
      这里写图片描述
    3. 打开cluster-enable前面的注释
      这里写图片描述
    4. 修改绑定ip
      这里写图片描述
      **注意:**这里的ip需要通过ifconfig命令查看,是服务器的内网ip,不是公网ip,如果是虚拟 机的话,就是自己所设置的ip,否则的话,会出现即使启动redis服务,通过ps -ef|grep redis命令找不到相关进程的情况
    5. 关闭保护模式
      这里写图片描述

    **第三步:**把创建集群的ruby脚本复制到redis-cluster目录下

    [root@localhost src]# cp redis-trib.rb /usr/local/redis-cluster/
    
       
       
    • 1

    **第四步:**启动6个redis实例

    1. 通过编写脚本启动,redis-cluster目录下:

      
           
           

      [root@localhost redis-cluster]# vim startall.sh
      ```

      ```
      
         
         
      • 1

      cd redis01
      ./redis-server redis.conf
      cd …
      cd redis02
      ./redis-server redis.conf
      cd …
      cd redis03
      ./redis-server redis.conf
      cd …
      cd redis04
      ./redis-server redis.conf
      cd …
      cd redis05
      ./redis-server redis.conf
      cd …
      cd redis06
      ./redis-server redis.conf
      cd …
      ```
      这里写图片描述
      2. 赋予脚本执行权限

      ```
      
         
         
      • 1

      [root@localhost redis-cluster]# chmod +x startall.sh
      ```

      **第五步:**启动6个redis实例

      [root@localhost redis-cluster]# ./startall.sh
      
         
         
      • 1

      这里写图片描述
      查看redis进程

      [root@VM_175_68_centos redis-cluster]# ps -ef|grep redis
      
         
         
      • 1

      这里写图片描述
      若出现找不到进程的情况,检查第二步、第三步配置操作是否正确。若无误还不能启动,关闭防火墙(不建议)或者防火墙开放端口(7001~7006)
      CentOS7开放端口:

      firewall-cmd --zone=public --add-port=80/tcp --permanent //单独开放
      firewall-cmd --permanent --zone=public --add-port=7001-7006/tcp //批量开发
      firewall-cmd --reload //更改完成,重新载入
      
         
         
      • 1
      • 2
      • 3

      **第六步:**创建集群

      [root@VM_175_68_centos redis-cluster]# ./redis-trib.rb create --replicas 1 10.135.175.68:7001 10.135.175.68:7002 10.135.175.68:7003 10.135.175.68:7004 10.135.175.68:7005 10.135.175.68:7006
      
         
         
      • 1

      这里写图片描述
      M:b4fb23576acc8eef0eec83bf3b76df3955081a1d 为主节点Id
      S: 112d377b8d70b6dedf2355ca4e6c325ccc818003 10.135.175.68:7005
      replicates b4fb23576acc8eef0eec83bf3b76df3955081a1d 为从节点下所对应主节点Id
      目前来看,7001-7003 为主节点,7004-7006 为从节点,并询问你是否同意这么配置,输入 yes 后,会开始集群创建
      这里写图片描述
      创建成功!
      #集群测试

      [root@VM_175_68_centos redis-cluster]# redis01/redis-cli -c -h 10.135.175.68 -p 7002
      
         
         
      • 1

      这里要注意命令中的-c参数,必须要有,否则能够连接集群,但却不能进行集群中redis的跳转
      这里写图片描述
      连接成功!
      存入一个键值
      这里写图片描述
      可以看到,redis对a进行了计算得出a应该存放于端口为7003的redis服务器中,自动进行了跳转并保存a
      取出a的值
      这里写图片描述
      可以看出a确实是存入7003这个redis中了,集群搭建成功!
      #总结
      到此,Redis集群的搭建就完成了,希望我的文章对你有所帮助

              </div>
      

      猜你喜欢

      转载自blog.csdn.net/lida1234567/article/details/83512485
      今日推荐