总体概述
1.Redis (安装Redis并运行3个实例,Redis集群需要至少3个以上节点,低于3个无法创建);
2.Ruby语言运行环境
3.Redis的Ruby驱动redis-xxxx.gem
4.创建Redis集群的工具redis-trib.rb
一.安装并搭建集群
1.下载redis对应版本(版本必需要3.0以上)
下载地址: https://github.com/MSOpenTech/redis/releases 下载ZIP压缩格式文件,并解压在硬盘中相应位置(这里可以在任意硬盘根目录下创建一个名为Redis的目录,并解压到此文件夹中)
2.下载并安装Ruby语言环境
下载地址: https://rubyinstaller.org/downloads/
如果你的电脑是64位,选择x64下载;否则,32位选择x86下载。这里选择倒数第二个下载(hhh~江湖传说一般最新版本可能不稳定)
下载完成后,打开文件,启动 Ruby 安装向导。
点击 Next,继续向导,记得勾选 Add Ruby executables to your PATH,直到 Ruby 安装程序完成 Ruby 安装为止。
如果您的安装没有适当地配置环境变量,接下来您可能需要进行环境变量的配置,这里不做叙述。
3.下载ruby环境下Redis的驱动
链接: https://rubygems.org/gems/redis/versions/4.6.0
在当前ruby目录下,打开cmd终端,输入gem install redis (下载的是最新版本)
路径:
执行结果:
4.在redis下创建模拟的主从服务器
在redis目录下建立7000-7005六个文件夹,将redis下面的文件复制到7000节点文件夹下面(其他的也是这样操作)
修改6个文件夹下redis.windows.conf 文件配置
先修改节点的端口号(其他节点文件夹也是)
](https://img-blog.csdnimg.cn/5a07f578acd04d29acb82e1efc7bddfd.png)
如果cluster-enabled 不为yes, 那么在使用JedisCluster集群代码获取的时候,会报错。
cluster-node-timeout 调整为 15000,那么在创建集群的时候,不会超时。
cluster-config-file nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。
5.下载Redis官方提供的创建Redis集群的ruby脚本文件redis-trib.rb
链接: https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb 若打不开就多试几次,若打开后是个网页,则在redis中创建一个文本文件,将页面内容复制到文本中,并修改文件名和格式如下述所示,文件格式最终为Ruby文件。
另附ruby脚本文件redis-trib.rb的地址,请参考链接:https://pan.baidu.com/s/1jlmL1fsspNgBjlrj9czMkQ
提取码:AXZ8
6.在redis目录下打开cmd终端,执行:redis-server.exe redis.windows.conf
7.分别打开7000-7005服务器
这里以一个服务器操作为例,其余端口号为对应各自节点
在7000目录下打开cmd窗口执行命令:redis-server.exe redis.windows.conf
分别在7001,7002,7003,7004,7005目录上打开cmd并执行上述操作
8.再次在redis目录打开cmd终端
执行:ruby redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
三主三从集群搭建成功!
二.集群搭建过程中可能出现的问题
异常:Node 127.0.0.1:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
问题描述:导致异常的主要原因是该节点中默认生成的配置或历史存储数据不一致导致的。
可能出现的错误原因:这里由于在构建集群时,先启动了7000-7005节点的,之后启动了redis服务,启动先后顺序发生了问题,导致Node xxx is not empty
dump.rdb是由Redis服务器自动生成的 默认情况下 每隔一段时间redis服务器程序会自动对数据库做一次遍历,把内存快照写在一个叫做“dump.rdb”的文件里,这个持久化机制叫做SNAPSHOT。有了SNAPSHOT后,如果服务器宕机,重新启动redis服务器程序时redis会自动加载dump.rdb,将数据库状态恢复到上一次做SNAPSHOT时的状态。
== 解决方法:清除对应节点的dump.rdb、nodes.conf文件,重启之后即可。==
版权归原作者 piaow_ 所有, 如有侵权,请联系我们删除。