Redis集群搭建Cluster

3 篇文章 0 订阅

Redis集群搭建:
redis搭建集群有两种方式,这里简单说明下:

1、利用sentinel搭建Redis集群。

2、利用cluster搭建集群。

这里选择cluster没选择seninel,主要因为sentinel做后期扩展不方便,需要了解更多sentinel 和 cluster的区别,可以详细可以参考:浅谈Redis sentinel 和 Redis Cluster。

这里主要想说的是,在搭建过程中遇到的问题的解决办法:详细搭建步骤,往下拉…

问题1:ruby的sources问题;

gem install redis #执行该代码出现出现以下错误

ERROR:  Could not find a valid gem 'rails' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Connection timed out - connect(2) for "s3.amazonaws.com" port 443 (https://api.rubygems.org/latest_specs.4.8.gz)

如果遇到这个问题,考虑下以下两种方式;

第一、使用官方提供的解决办法,将sources改为http;注意:gem install redis 安装成功后,记得修改回来

1、执行删除:gem sources -r https://rubygems.org   
2、执行增加:gem sources -a http://rubygems.org

第二、如果第一种方法还不行,可以考虑重新下载ruby,版本为:2.3.3的;

问题2:redis-trib.rb创建集群时出现问题问题;

redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385

创建集群时出现以下问题

1、问题1:

Invalid argument during startup: Failed to open the .conf file: 
   verbose CWD=C:\developer\redis

2、问题2:

WARNING: redis-trib.rb is not longer available!
    ....
    ....
    ....

1、如果创建集群时,遇到以上问题1 > Invalid argument during startup: Failed to open the .conf file:
verbose CWD=C:\developer\redis,可以执行以下试试:

redis-server --service-install redis.windows.conf --loglevel verbose

2、如果遇到问题> WARNING: redis-trib.rb is not longer available!
则说明你的redis-trib.rb和redis版本不对应,所以可以去官网下载对应的redis版本源码redis-*.tar.gz,然后从src文件里提取redis-trib.rb文件。 我的Redis版本是Redis-3.2.1,所以我下载的是:redis-3.2.1.tar.gz;

下载地址:http://download.redis.io/releases/





详细搭建流程如下:

搭建准备:首先到 https://github.com/MSOpenTech/redis/releases 下载Redis-Windows版本;下载好后解压,解压之后可看到这些文件:


进入到解压目录,右键->打开命令窗口,输入 redis-server.exe  redis.windows.conf 启动redis-server :


看到如下界面说明启动redis server成功。

下面开始介绍windows下集群搭建。

1.首先我们构建集群节点目录:

(集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。主节点崩溃,从节点的Redis就会提升为主节点,代替原来的主节点工作,崩溃的主Redis回复工作后,会成为从节点)

拷贝开始下载的redis解压后的目录,并修改文件名(比如按集群下redis端口命名)如下:


6380,6381,6382,6383,6384,6385对应的就是后面个节点下启动redis的端口。

在节点目录下新建文件,输入(举例在6380文件夹下新建文件)


  
  
  1. title redis-6380;
  2. redis-server .exe redis .windows .conf
然后保存为start.bat 下次启动时直接执行该脚本即可;

接着分别打开各个文件下的 redis.windows.conf,分别修改如下配置(举例修改6380文件下的redis.window.conf文件):


  
  
  1. port 6380 //修改为与当前文件夹名字一样的端口号
  2. appendonly yes //指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。 yes表示:存储方式,aof,将写操作记录保存到日志中
  3. cluster-enabled yes //开启集群模式
  4. cluster-config- file nodes- 6380.conf //保存节点配置,自动创建,自动更新(建议命名时加上端口号)
  5. cluster-node-timeout 15000 //集群超时时间,节点超过这个时间没反应就断定是宕机

注意:在修改配置文件这几项配置时,配置项前面不能有空格,否则启动时会报错(参考下面)



其他文件节点 6381~6385也修改相应的节点配置信息和建立启动脚本(略)。

2.下载Ruby并安装:

    下载地址:http://railsinstaller.org/en  这里下载的是2.3.3版本:


    下载完成后安装,一步步点next知道安装完成(安装时勾选3个选项)



然后对ruby进行配置:


3.构建集群脚本redis-trib.rb

可以打开 https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb 然后复制里面的内容到本地并保存为redis-trib.rb;

如下图,与redis集群节点保存在同一个文件夹下(比如我所有节点都存放在redis-cluster文件夹下)。


然后依次启动所有集群节点start.bat

然后cmd进入redis集群节点目录后,执行: (–replicas 1 表示为集群中的每个主节点创建一个从节点)

redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385
  
  
将会出现下图的输出信息


上图可看出 主节点为6380,6381,6382 端口的三个地址,6384,6385,6383为三个从节点


中途会询问是否打印更多详细信息,输入yes即可,然后redis-trib 就会将这份配置应用到集群当中,让各个节点开始互相通讯


Redis集群数据分配策略:

采用一种叫做哈希槽 (hash slot)的方式来分配数据,redis cluster 默认分配了 16384 个slot,三个节点分别承担的slot 区间是:(上图3个M:节点的slots描述)


  
  
  1. 节点6380覆盖0-5460;
  2. 节点6381覆盖5461-10922;
  3. 节点6382覆盖10923-16383.

最后查看所有集群节点,会看到:


集群搭建并启动成功。。。

4.测试集群

进入任意一个集群节点,cmd执行  redis-cli.exe  -c -p 6381

写入任意一个value,查询


写一个hash:

hset redis:test:hash Hash1 12345
  
  


可以看到集群会用CRC16算法来取模得到所属的slot,然后将这个key分到哈希槽区间的节点上CRC16(key) % 16384

所以,可以看到我们set的key计算之后被分配到了slot-162 上, 而slot-162处在节点6380上,因此redis自动redirect到了6380节点上。


搭建步骤转载至: https://blog.csdn.net/hao495430759/article/details/80540407

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值