redis集群搭建(详细教程)

Redis单机版搭建

在开始redis集群搭建之前,我们先简单回顾一下redis单机版的搭建过程,详细步骤按下一步一步来即可:

  • cd /usr/local
  • wget http://download.redis.io/releases/redis-3.2.4.tar.gz
  • tar -zxf redis-3.2.4.tar.gz
  • mv redis-3.2.4 redis
  • cd redis
  • make 
  • rm -rf ../redis-3.2.4.tar.gz

这样就安装完成了,可见下图

Redis Cluster(Redis集群)搭建

一、Redis Cluster 简介

  • redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis3.2.4版本;
  • redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点;
  • redis集群是没有统一的入口的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是一个redis实例;
  • 为了实现集群的高可用,即判断节点是否健康(能否正常使用),redis-cluster有这么一个投票容错机制:如果集群中超过半数的节点投票认为某个节点挂了,那么这个节点就挂了(fail)。这是判断节点是否挂了的方法;
  • 那么如何判断集群是否挂了呢? -> 如果集群中任意一个节点挂了,而且该节点没有从节点(备份节点),那么这个集群就挂了。这是判断集群是否挂了的方法;
  • 那么为什么任意一个节点挂了(没有从节点)这个集群就挂了呢? -> 因为集群内置了16384个slot(哈希槽),并且把所有的物理节点映射到了这16384[0-16383]个slot上,或者说把这些slot均等的分配给了各个节点。当需要在Redis集群存放一个数据(key-value)时,redis会先对这个key进行crc16算法,然后得到一个结果。再把这个结果对16384进行求余,这个余数会对应[0-16383]其中一个槽,进而决定key-value存储到哪个节点中。所以一旦某个节点挂了,该节点对应的slot就无法使用,那么就会导致集群无法正常工作。
  • 综上所述,每个Redis集群理论上最多可以有16384个节点。

二、集群搭建需要的环境

  1. Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。
  2. 要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。因为我没有那么多服务器,也启动不了那么多虚拟机,所在这里搭建的是伪分布式集群,即一台服务器虚拟运行6个redis实例,修改端口号为(7001-7006),当然实际生产环境的Redis集群搭建和这里是一样的。
  3. 安装ruby

三、集群搭建具体步骤如下(注意要关闭防火墙)

  1. 在usr/local目录下新建redis-cluster目录,用于存放集群节点(mkdir redis-cluster)
  2. 把redis目录下的所有文件复制到/usr/local/redis-cluster/redis01目录下,不用担心这里没有redis01目录,会自动创建的(cp -r redis/ redis-cluster/redis01)
  3. 删除redis01/src下的appendonly.aof,dump.rdb,nodes-6379.conf 3个文件(rm -rf redis-cluster/redis01/src/appendonly.aof  redis-cluster/redis01/src/dump.rdb  redis-cluster/redis01/src/nodes-6379.conf  ),src目录下没有这些文件可以不删除
  4. 修改redis.conf,启用后台启动 daemonize yes ,保护模式protected-mode no,配置集群信息,开启集群,cluster-enabled yes,指定集群的配置文件,cluster-config-file nodes-端口.conf (这个端口是你redis使用的那个端口)
  5. 复制出多个redis的文件夹放在redis-cluster中(这多个文件都需要修改redis.conf中的端口和cluster-config-file端口,如果是多台服务器的话就不需要可以使用不同的端口)  
      
  6. 启动已创建的redis(创建一个脚本一次性启动全部)

  7. 用redis-trib.rb搭建集群,因为redis-trib.rb是用Ruby实现的Redis集群管理工具,所以我们需要先安装ruby的环境,
    安装ruby(yum -y install zlib ruby rubygems),
    安装rubygems的redis依赖(gem install -l redis-3.3.0.gem)附上redis-3.3.0.gem下载链接

  8. 安装好依赖的环境之后,我们就可以来使用脚本命令了,注意:此脚本文件在我们Redis的解压缩目录src下 。
  9. 执行命令:
    ./redis-trib.rb create --replicas 1 192.168.137.88:7001 192.168.137.88:7002 192.168.137.88:7003 192.168.137.88:7004 192.168.137.88:7005 192.168.137.88:7006 
    --replicas 1:指定了从数据(备机)的数量为1
  10. 开放16379(如果防火墙关闭的话可以不开放)  redis端口+1W  
  11. 查看集群状态
    通过客户端输入以下命令:
    cluster nodes:这个命令可以查看插槽的分配情况
    整个Redis提供了16384个插槽,./redis-trib.rb 脚本实现了是将16384个插槽平均分配给了N个节点。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值