Windows环境Redis集群部署配置
标签:Redis
工具/资料
windows系统环境Release 版本
https://github.com/MSOpenTech/redis/releases
https://github.com/MicrosoftArchive/redis/releases
Redis中文文档
http://redis.cn/documentation.html
Redis命令文档
http://redis.cn/commands.html
Redis命令参考
http://www.redisfans.com/
http://doc.redisfans.com/
3.0集群搭建部署参考文档
http://www.cnblogs.com/tommy-huang/p/6240083.html
http://doc.redisfans.com/topic/cluster-tutorial.html
Ruby 语言官网(中文)
http://www.ruby-lang.org/zh_cn/
20分钟体验 Ruby
http://www.ruby-lang.org/zh_cn/documentation/quickstart/
菜鸟教程
http://www.runoob.com/ruby/ruby-installation-windows.html
Ruby windows系统运行环境
http://rubyinstaller.org/downloads/
一、准备 Redis 3.0.504 运行程序
Redis 3.0.504 下载地址
https://github.com/MSOpenTech/redis/releases
下载msi
安装包文件或后缀.zip
文件,建议使用.zip
文件
下载后解压到文件夹 Redis-x64-3.0.504
备用。
二、修改 redis.conf 配置文件
这里配置 6380
、6381
、6382
端口为集群主服务,配置 6383
(从6380
)、6384
(从6381
)、6385
(从6382
) 端口为从服务。
集群服务模板配置
将 Redis-x64-3.0.504
目录下 redis.windows.conf
复制改名 redis-cluster6380.conf
备用,制作集群
模板配置文件。
修改模板配置文件以下位置:
port 6380
#logfile ""
logfile "D:/work/TfsRedis/Redis-x64-3.0.504/log/redis6380.log"
dbfilename dump6380.rdb
#dir ./
dir "D:/work/TfsRedis/Redis-x64-3.0.504"
################################ REDIS CLUSTER ###############################
cluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
修改好后复制五份改名,分别为 redis-cluster6381.conf
、redis-cluster6382.conf
、 redis-slave6383.conf
、redis-slave6384.conf
、redis-slave6385.conf
。
编写启动 Redis 服务批处理
本文档实验以命令行窗口形式运行Redis
服务,在Redis
目录下创建 redis-server-cluster.bat
批处理文件,右键菜单编辑
打开,编写启动命令
start "Redis3.0.504-cluster6380" "D:\work\TfsRedis\Redis-x64-3.0.504\redis-server.exe" "D:\work\TfsRedis\Redis-x64-3.0.504\redis-cluster6380.conf"
start "Redis3.0.504-cluster6381" "D:\work\TfsRedis\Redis-x64-3.0.504\redis-server.exe" "D:\work\TfsRedis\Redis-x64-3.0.504\redis-cluster6381.conf"
start "Redis3.0.504-cluster6382" "D:\work\TfsRedis\Redis-x64-3.0.504\redis-server.exe" "D:\work\TfsRedis\Redis-x64-3.0.504\redis-cluster6382.conf"
start "Redis3.0.504-slave6383" "D:\work\TfsRedis\Redis-x64-3.0.504\redis-server.exe" "D:\work\TfsRedis\Redis-x64-3.0.504\redis-slave6383.conf"
start "Redis3.0.504-slave6384" "D:\work\TfsRedis\Redis-x64-3.0.504\redis-server.exe" "D:\work\TfsRedis\Redis-x64-3.0.504\redis-slave6384.conf"
start "Redis3.0.504-slave6385" "D:\work\TfsRedis\Redis-x64-3.0.504\redis-server.exe" "D:\work\TfsRedis\Redis-x64-3.0.504\redis-slave6385.conf"
保存关闭备用。
三、配置 Ruby Redis 集群管理命令工具
-
Ruby相关站点
Ruby 程序设计语言官方网站
http://www.ruby-lang.org/zh_cn/
windows 环境 Ruby 运行时安装程序
http://rubyinstaller.org/downloads/
RubyGems 国内镜像 taobao本站将不在继续维护
https://ruby.taobao.org/
RubyGems 镜像- Ruby China
http://gems.ruby-china.org/ -
安装 Ruby 运行时环境
本文档以安装rubyinstaller-2.2.4-x64.exe
为例
安装位置D:\Ruby22-x64
-
安装 Ruby Redis 连接驱动
驱动下载地址
https://rubygems.org/gems/redis/versions/3.2.2 -
Gem 安装命令
gem install --local redis-3.2.2.gem
--local 表示从本地磁盘安装
四、命令行设置 Redis 集群配置
建议新创建集群之前将 Redis
运行程序目录下的 nodes-638*.conf
删除
redis-trib.rb create --replicas 0 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382
--replicas 0 表示集群每个服务器有0个从服务器
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
--replicas 1 表示集群每个服务器有1个从服务器
从服务器配置文件无需配置 slaveof <host> <port>
,redis-trib.rb create
命令会自动分配主从关系。
五、添加/删除节点
- 添加节点命令
redis-trib.rb
add-node new_host:new_port existing_host:existing_port
--slave
--master-id <arg>
-
添加 master 节点
命令示例
redis-trib.rb add-node 127.0.0.1:6386 127.0.0.1:6380
添加节点之后需要重新分配slot槽给新节点才能启用
分配方式可以自定义,是平均分配还是从其他已有节点选取部分分配给新节点,都是可以自定义的 -
添加 slave 节点
命令示例
redis-trib.rb add-node --slave 127.0.0.1:6387 127.0.0.1:6380
添加从节点不需要slot槽重新分配 -
重新分配
从已有节点(6382)分配slot槽给新节点(6386)
命令示例
redis-trib.rb reshard 127.0.0.1:6386
执行过程中有提示
PS D:\work\TfsRedis\Redis3.0cluster> .\redis-trib.rb reshard 127.0.0.1:6381
Connecting to node 127.0.0.1:6381: OK
Connecting to node 127.0.0.1:6380: OK
Connecting to node 127.0.0.1:6386: OK
Connecting to node 127.0.0.1:6385: OK
Connecting to node 127.0.0.1:6383: OK
Connecting to node 127.0.0.1:6384: OK
Connecting to node 127.0.0.1:6382: OK
>>> Performing Cluster Check (using node 127.0.0.1:6381)
M: d8ddc0ece223206991f242b8ee40e0974bba7a59 127.0.0.1:6381
slots:5461-10922 (5462 slots) master
1 additional replica(s)
M: b15315a9890ca334fefb446702cbb4686132f59d 127.0.0.1:6380
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 0483b953078e6decc1d948918d024f9abf342d43 127.0.0.1:6386
slots: (0 slots) master
0 additional replica(s)
S: c3d8aa6bfcf83666dd0c387d6efe31be883a0720 127.0.0.1:6385
slots: (0 slots) slave
replicates b15315a9890ca334fefb446702cbb4686132f59d
S: c4ef5b13482681b3bdce4fbf4b1ac4133fe1e0d6 127.0.0.1:6383
slots: (0 slots) slave
replicates d8ddc0ece223206991f242b8ee40e0974bba7a59
S: 0b4d057755f4fd6d33d5ca01c0b71a5f0dc3fa74 127.0.0.1:6384
slots: (0 slots) slave
replicates 78e9d9a7ed3383aec838acb9af7eefebe8af54d7
M: 78e9d9a7ed3383aec838acb9af7eefebe8af54d7 127.0.0.1:6382
slots:10923-16383 (5461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 600
What is the receiving node ID? 0483b953078e6decc1d948918d024f9abf342d43
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node #1:d8ddc0ece223206991f242b8ee40e0974bba7a59
Source node #2:done
Ready to move 600 slots.
Source nodes:
M: d8ddc0ece223206991f242b8ee40e0974bba7a59 127.0.0.1:6381
slots:5461-10922 (5462 slots) master
1 additional replica(s)
Destination node:
M: 0483b953078e6decc1d948918d024f9abf342d43 127.0.0.1:6386
slots: (0 slots) master
0 additional replica(s)
Resharding plan:
Moving slot 5461 from d8ddc0ece223206991f242b8ee40e0974bba7a59
...
Moving slot 6060 from d8ddc0ece223206991f242b8ee40e0974bba7a59
Do you want to proceed with the proposed reshard plan (yes/no)? yes
Moving slot 5461 from 127.0.0.1:6381 to 127.0.0.1:6386:
...
Moving slot 6060 from 127.0.0.1:6381 to 127.0.0.1:6386:
PS D:\work\TfsRedis\Redis3.0cluster>
How many slots do you want to move (from 1 to 16384)?
要重新分配多少槽(从1个到16384个),此处重新分配600个槽
What is the receiving node ID?
哪个节点接收600个槽,0483b953078e6decc1d948918d024f9abf342d43
是节点的ID
Please enter all the source node IDs. Type 'all' to use all the nodes as source nodes for the hash slots. Type 'done' once you entered all the source nodes IDs. Source node #1:d8ddc0ece223206991f242b8ee40e0974bba7a59 Source node #2:done
这里意思是从哪个节点取这600个槽,两种获取方式
方式一,all表示从所有已有节点中取600个槽,是平均分配取,还是随机分配取,还需要验证。
方式二,指定从某个节点或某几个节点取600个槽,当指定的某个或某几个节点确定后输入done结束指定节点,从某几个节点取,是平均分配取还是随机分配取也需要验证。
-
删除节点命令
删除节点前将已分配的slot槽重新分配回收,重新分配方法参见上一节。
命令示例
redis-trib.rb del-node 127.0.0.1:6386 0483b953078e6decc1d948918d024f9abf342d43