Redis-Cluster集群搭建实战, 遇到ruby版本太低的问题, 顺利解决 !

今天来搭建一个Redis-Cluster, redis是在3.0.0版本后支持了Redis-Cluster集群, 它是Redis官方提出的解决方案, Redis-Cluster采用无中心结构, 每个节点保存数据和整个集群状态, 每个节点都和其他所有节点连接.对于redis是什么, 以及如何搭建redis单机版本, 本文中就不介绍了.我们为什么需要用到redis集群?单击版redis内存容量...
摘要由CSDN通过智能技术生成

今天来搭建一个Redis-Cluster, redis是在3.0.0版本后支持了Redis-Cluster集群, 它是Redis官方提出的解决方案, Redis-Cluster采用无中心结构, 每个节点保存数据和整个集群状态, 每个节点都和其他所有节点连接.

对于redis是什么, 以及如何搭建redis单机版本, 本文中就不介绍了.

我们为什么需要用到redis集群?

  1. 单击版redis内存容量有限的问题
  2. 高并发场景下, 单击版redis性能不高
  3. 单击版redis不具有高可用性, 不能应用于生产环境

下面我们用一张图来看一下, 如何解决这样一个需求: 我需要存30G的数据到redis中, 但是一台机器只有10G不够使用, 所以我想使用redis集群来解决, 并且同时要做到高可用.

在这里插入图片描述

redis最少需要3个主节点, 对应每个主节点有一个副本(从节点), 所以我们最少需要6个节点. 本文将要搭建的依然是redis的伪集群, 就是在一台服务器(虚拟机)上搭建, 通过不同的端口号来区分. 其实与实际生产环境中的搭建步骤没有本质区别, 都是一样的.

了解redis集群中的存储机制 – 槽的概念(slot)

redis-cluster 把所有的物理节点映射到slot 上,cluster 负责维护.

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样运算后得出的数肯定回事0-16383之间的一个数字. 因此这样每个key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。

例如三个节点:槽分布的值如下:

SERVER1: 0-5460

SERVER2: 5461-10922

SERVER3: 10923-16383

举个栗子:

  • 如果要存一个key是name, value是hello
  • 那么首先对name通过crc16得出一个结果, 然后对16384进行取余(模运算)
  • 得出的数字假如是8888, 那么cluster就会找哪个主节点的区间包含了8888
  • 那么找到了是redis-2, 就会把这个key-value存到redis-2中, 对应的从节点也会有一份

搭建Redis-Cluster

在正式搭建之前, 先整理一下搭建Redis-Cluster集群需要哪些步骤:

准备工作:

  • redis的安装包

    wget http://download.redis.io/releases/redis-4.0.2.tar.gz
    tar -zxvf redis-4.0.2.tar.gz
    
  • linux系统 (这里使用的是centOS 6)

  • 安装编译C语言的环境 (redis是C语言写的)

    yum -y install gcc gcc-c++ libstdc++-devel tcl -y
    
  • 安装ruby (们需要使用ruby脚本来实现集群搭建)

    yum install ruby
    yum install rubygems
    

搭建工作:

  • 第一步: 上传redis的安装包到linux中, 解压缩.
  • 第二步: 进入redis, make 编译
  • 第三步: make install 安装6个redis实例
  • 第四步: 拷贝redis的配置文件redis.conf到6个实例的bin目录下
  • 第五步: 修改redis.conf配置文件
    • 修改bind的IP
    • 端口号 (7001 - 7006) 用于区分不同的redis实例
    • 设置后台运行进程
    • 设置开启集群
  • 第六步: 启动6个redis实例
  • 第七步: 上传用于搭建redis集群的ruby脚本
  • 第八步: 安装ruby脚本
  • 第九步: 执行ruby脚本搭建redis集群
  • 第十步: 存入key-value, 进行测试

第一步: 上传redis的安装包到linux中, 解压缩.

mv redis-4.0.2/ redis-src

第二步: 进入redis, make 编译

cd /usr/local/redis-cluster/redis-src/
make MALLOC=libc

第三步: make install 安装6个redis实例

cd /usr/local/redis-cluster/redis-src/
make install PREFIX=/usr/local/redis-cluster/redis-1
make install PREFIX=/usr/local/redis-cluster/redis-2
make install PREFIX=/usr/local/redis-cluster/redis-3
make install PREFIX=/usr/local/redis-cluster/redis-4
make install PREFIX=/usr/local/redis-cluster/redis-5
make install PREFIX=/usr/local/redis-cluster/redis-6

在这里插入图片描述

第四步: 拷贝redis的配置文件redis.conf到6个实例的bin目录下

vim redis-1/bin/redis.conf
vim redis-2/bin/redis.conf
vim redis-3/bin/redis.conf
vim redis-4/bin/redis.conf
vim redis-5/bin/redis.conf
vim redis-6/bin/redis.conf
  • 修改bind的IP为当前IP
    在这里插入图片描述

  • 修改运行端口为7001 (7002 7003 …)
    在这里插入图片描述

  • 设置后台运行进程
    在这里插入图片描述

  • 开启集群
    在这里插入图片描述

第六步: 启动6个redis实例

cd /usr/local/redis-cluster/redis-1/bin
./redis-server redis.conf

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值