windows搭建redis集群

1、redis集群简介

  • redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。
  • redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis3.0.0版本;
  • 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个节点。

2、集群搭建需要的环境

  1. Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。
  2. 2.2 要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。因为我没有那么多服务器,也启动不了那么多虚拟机,所在这里搭建的是伪分布式集群,即一台服务器虚拟运行6个redis实例,修改端口号为(7001-7006),当然实际生产环境的Redis集群搭建和这里是一样的。
  3. 安装ruby
    因为在redis/src中有一个文件叫做redis-trib.rb,这个文件就是作者用Ruby写的,用来搭建redis集群(redis3.0版本时才开始支持集群),redis-trib.rb的后缀就是Ruby的简写,所以想要搭建redis集群需要有一个能执行.rb这种文件的运行环境,这个环境就是Ruby

2、redis下载安装

下载地址:
版本:3.2.100
压缩版
https://github.com/microsoftarchive/redis
安装版 提取码:j2js
https://pan.baidu.com/s/1NJxFGXP91bH2UC1v2F86pQ

3、集群搭建

  1. 新建6个文件夹,用于存放redis文件
    windows搭建redis集群_第1张图片

  2. 将redis安装过后的文件每个文件夹都copy一份
    windows搭建redis集群_第2张图片

  3. 修改配置文件,我这以windows安装版为例
    我此处修改的是redis.windows.conf文件,你们的可能是redis.config文件

  • 修改端口:端口号可按照自己实际情况配置

windows搭建redis集群_第3张图片

  • 放开集群配置
    windows搭建redis集群_第4张图片
    其他5个,以此类推,关于集群响应时间等其他配置,因为本例子只是测试学习,不做其他配置。
  1. 启动redis
    进入其中的一个文件夹,输入cmd命令,回车,也可以按照我的操作,打开cmd,敲命令进入这个文件夹即可。
启动命令:redis-server redis.windows.conf  //指定配置文件,不指定默认还是6379,可能解压版本的不是

windows搭建redis集群_第5张图片
所有的redis均启动!

4、安装Ruby语言运行环境

  1. ruby下载
    下载地址:https://download.csdn.net/download/u011967767/20642642
  2. 安装
    双击安装即可。
  3. 下载安装集群脚本 redis-trib.rb copy到redis目录下
    我放在redis集群6个文件夹的根目录下
    windows搭建redis集群_第6张图片

redis-trib.rb 在redis源码包里面,此处提供的redis下载安装没有redis源码包,可以从以下地址下载:https://download.csdn.net/download/u011967767/20642765
4. 安装redis-3.2.1.gem
redis和ruby接口,所依赖的文件
https://download.csdn.net/download/u011967767/20643020
安装:gem install redis-3.0***.gem, cmd命令进入即可,前提是安装了ruby。

5、搭建集群

使用该脚本文件搭建集群,指令如下:
cmd命令进入redis-trib.rb文件目录,执行以下命令,IP地址根据自己的指定

 redis-trib.rb create --replicas 1 127.0.0.1:17001 127.0.0.1:17002 127.0.0.1:17003 127.0.0.1:17004 127.0.0.1:17005 127.0.0.1:17006 

中途有个地方需要手动输入yes即可
windows搭建redis集群_第7张图片

redis-trib.rb create --replicas 1 IP1:17001 IP2:17002 IP3:17003 IP4:17004 IP5:17005 IP6:17006 这个命令就代表把这些个redis实例创建为一个集群 上面命令中的1代表主节点和从节点的比值是多少,如果12个主节点,6个从节点那么我们的比值就是2,那么我们是3主3从,所以这个比值是1,而且前三个一定是主节点,redis就是这样规定的。

至此,Redi集群搭建成功!大家注意最后一段文字,显示了每个节点所分配的slots(哈希槽),这里总共6个节点,其中3个是从节点,所以3个主节点分别映射了0-5460、5461-10922、10933-16383solts。

最后连接集群节点,连接任意一个即可:
在一个集群节点下,dos窗口输入以下命令

redis-cli -p 17001 -c 

注意:一定要加上-c,不然节点之间是无法自动跳转的!

windows搭建redis集群_第8张图片
最后,加上两条redis集群基本命令:
1.查看当前集群信息

cluster info

2.查看集群里有多少个节点

cluster nodes

分享windows批量启动redis命令,省去手动启动
新建文件,redis-start.bat,路径自己指定,以后启动6个redis,只要双击bat即可。

@echo off
cd D:\DevTools\cluster\redis\
start  cmd /k redis3.2-01\redis-server redis3.2-01\redis.windows.conf &
start  cmd /k redis3.2-02\redis-server redis3.2-02\redis.windows.conf &
start  cmd /k redis3.2-03\redis-server redis3.2-03\redis.windows.conf &
start  cmd /k redis3.2-04\redis-server redis3.2-04\redis.windows.conf &
start  cmd /k redis3.2-05\redis-server redis3.2-05\redis.windows.conf &
start  cmd /k redis3.2-06\redis-server redis3.2-06\redis.windows.conf &

注意,我这个命令是在6个文件夹的外一层启动的,所以,还需要改redis.windows.conf 文件,因为会在6个文件夹外层生成node.conf配置文件,如果不更改的话,导致默认都生成node.conf文件,导致报错,
Waiting for the cluster to join…
windows搭建redis集群_第9张图片
所有文件都需要修改。
windows搭建redis集群_第10张图片
最后启动redis-start.bat

windows搭建redis集群_第11张图片
发现dump.rdb也生成了一个,这个文件是redis保存数据快照,发现也需要修改文件名,此处就不做修改了,大家启动的时候,手动去每一个文件夹下启动,就不会又此情况!
windows搭建redis集群_第12张图片
windwos搭建redis集群完成,linux版本,可以参照:
https://blog.csdn.net/qq_42815754/article/details/82912130

你可能感兴趣的:(redis,ruby)