前言
在 window 环境搭建一个 redis cluster, 这种教学式安装博客有很多. 自己也是参照了一些搭建成功的. 本篇也记录一下完整步骤, 如果参照了还没成功, 请告知.
既然是给各位参考, 索性也将工具包共享给大家. 以免因为网络原因阻碍学习的热情. 一键直达
1. 所需软件
- Redis-x64-3.2.100
- Ruby 语言运行环境
- Redis 的 Ruby 驱动 redis-xxxx.gem
- Redis 集群脚本 redis-trib.rb
- 创建一个独立的 redis-cluster目录, 便于查找归纳, 下面的例子也是上面的将软件放在此目录进行配置. 例如: 在 D 盘创建一个 redis-cluster 目录
2. 工具的准备
-
Redis 下载地址
下载 zip 包, 便于扩展, 解压之后 放入 redis-cluster 目录中, 备用 -
安装 Ruby
redis 的集群使用, ruby 脚本编写, 所以系统需要有 Ruby 环境 ,下载地址
按图示下载, 安装时默认选项都勾选即可 -
安装 Redis 的 Ruby 驱动 redis-xxxx.gem 下载地址, 按图示下载即可
下载解压至 redis-cluster 目录下. 最终目录如: .\redis-cluster\rubygems-2.7.7 -
Redis 集群脚本, 文件名: redis-trib.rb
可以直接从 (redis-3.2.0.tar) 的源码压缩包中的 src 文件夹下找到对应的 redis-trib.rb 文件. 源码包下载地址, 将集群文件 redis-trib.rb 拷贝到 .\redis-cluster 目录下即可
3. 开始配置
-
redis cluster 示例配置
Redis 集群正常运作至少需要3个主节点.
本案例中按照官网推荐的模式, 配置3个主节点,添加3个作为各个主节点的从节点, 共配置了 6个 redis 实例, 端口分别设置为 7001 ~ 7006 .
集群模式下主节点崩溃,从节点的 Redis 就会提升为主节点,代替原来的主节点工作. 崩溃的主 Redis 恢复工作后, 成为从节点.复制一份 Redis-x64-3.2.100 , 改名为 7001,
进去找到配置文件 redis.windows.conf 进行以下配置:
# redis 端口 port 7001 # 选项用于开实例的集群模式 cluster-enabled yes # 选项则设定了保存节点配置文件的路径, 默认值为 nodes.conf.节点配置文件无须人为修改, # 它由 Redis 集群在启动时创建, 并在有需要时自动进行更新 cluster-config-file nodes-7001.conf cluster-node-timeout 15000 appendonly yes
同时添加 start.bat 文件, 便于快速启动服务.
title redis-7001 redis-server.exe redis.windows.conf
剩下的端口请参照 7001 实现修改, 注意端口不要配置错了.
完成之后目录如下:
-
安装 ruby 驱动
cmd 进入 .\redis-cluster\rubygems-2.7.7 目录下 (或者先进入到 rubygems-2.7.7 目录,按住 shift, 鼠标点击右键, 点击 “在此处打开命令行窗口(w)”), 执行以下命令行ruby setup.rb
执行成功之后.
使用 GEM 安装 redis, 首先需要配置一下 rubygems 域名, 默认 rubygems 域名 https://rubygems.org/ 国内打不开,而 https://ruby.taobao.org/ 域名已经发生变化,使用新域名 https://gems.ruby-china.com/
执行指令gem sources --add https://gems.ruby-china.com/
修改成功之后, 再执行
gem install redis
4. 启动
分别执行 redis 实例下的 start.bat , 如 7001 启动界面
进入到 .\redis-cluster 目录, 执行
ruby redis-trib.rb create --replicas 1 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 127.0.0.1:7006
启动界面如下:
redis cluster 启动时先分配 master slave, 然后它会询问你是否采用它的配置方式(见 红框 一行), 输入 “yes” 即可. 看到 OK 信息, 那么代表启动成功.
5. 测试
再打开一个命令窗口, 进入 ./redis-cluster/7001 目录, 输入以下命令, 启动客户端
redis-cli.exe –c –h 127.0.0.1 -p 7001
输入" cluster nodes " :列出集群当前已知的所有节点( node),以及这些节点的相关信息。
想要了解更多指令, 参考这个博文
测试set get方法
当进行 set ,get 不同的 key, redis 会计算key 的hash slot, 看看是落到哪台redis 实例中,然后会重定向到对应的实例
6. 问题
- 创建redis集群报错: ERR Slot 0 is already busy (Redis::CommandError)
错误提示是说:slot插槽被占用了、这是因为 搭建集群前时,以前redis的旧数据和配置信息没有清理干净.
解决方案:
用 redis-cli 登录到每个节点执行 flushall 和 cluster reset 就可以了../redis-cli -h IP -p 端口 flushall cluster reset