Redis集群部署-windows(转)
Redis集群部署-windows
前言
为了能体验一下部署Redis集群是一种怎么样的体验,所一边做一边写了这篇记录。
1.准备
从这里下载windows服务端
写这个文章的时候最新版为 v3.2.100.
如果你不需要部署集群,请下载msi格式的安装包,安装之后就可以本机体验了。
如果要体验部署集群,请下载zip包。
PS:系统必须是x64的 😃
2.配置
下载下来后,把 Redis-x64-3.2.100.zip 解压到
D:\Program\Redis\Redis\
下面,当然你可以自行选择目录,这个不影响。
在 D:\Program\Redis\ 这级目录建立一堆文件夹,
11001,11002~11006,共6个文件夹。
或者用命令建立目录:
>for /L %i in (1 1 6) do md 1100%i
复制Redis\redis.windows.conf 文件到 11001\ 并改名字为 redis.conf
官方创建集群的方式
不安装Ruby创建集群的方式
设置主从
在对应的配置文件修改一行:
slaveof 127.0.0.1 11001
我把11004设置为11001的副本,11005->11002,11006->11003,这些都需要在对应的文件 11004\redis.conf 里面设置好的。
3.一些脚本
1Start.bat 用于创建6个目录,并复制配置文件,最后创建启动脚本
for /L %%i in (11001 1 11006) do md %%i & copy /y .\Redis\redis.windows.conf .\%%i\redis.conf for /L %%i in (11001 1 11006) do echo start ..\Redis\redis-server.exe redis.conf --port %%i --dir ..\%%i\ --cluster-enabled yes --cluster-node-timeout 5000 --cluster-config-file ..\%%i\nodes-%%i.conf>%%i\1Start.bat
2Start.bat 启动所有实例
for /L %%i in (11001 1 11006) do cd %%i & 1Start.bat & cd ..
3Stop.bat 正常模式停止所有实例
for /L %%i in (11001 1 11006) do .\Redis\redis-cli -p %%i shutdown
3Kill.bat 直接杀死所有Redis进程,和上面的二选一,不会持久化内容到磁盘
taskkill /im redis-server.exe
4CreateCluster.bat 创建集群,请先修改从服务器的配置(11004~11006),先启动所有实例之后再执行。
cd Redis rem 分别在各个Redis instance添加hash slots(这里是平均分配) redis-cli -p 11001 CLUSTER ADDSLOTS {0..5460} redis-cli -p 11002 CLUSTER ADDSLOTS {5461..10922} redis-cli -p 11003 CLUSTER ADDSLOTS {10923..16383} rem 分别在各个Redis instance执行SET-CONFIG-EPOCH redis-cli -p 11001 CLUSTER SET-CONFIG-EPOCH 1 redis-cli -p 11002 CLUSTER SET-CONFIG-EPOCH 2 redis-cli -p 11003 CLUSTER SET-CONFIG-EPOCH 3 rem 连接集群,在一个Redis instance执行就OK了 redis-cli -p 11001 CLUSTER MEET 127.0.0.1 11002 redis-cli -p 11001 CLUSTER MEET 127.0.0.1 11003
4.跑起来
可以使用上面的 2Start.bat 来启动所有实例,然后用cli连接:
redis-cli -p 11001
PS:你可以在Redis的目录按 shift+右键->在此处打开命令窗口,然后你就可以输入命令了。
不过。。。实事没那么简单。。。
你会收到一堆错误:
(error) CLUSTERDOWN Hash slot not served
5.坑
在windows版的Redis功能不完整,不能设置副本。。。。
另外CLUSTER ADDSLOTS {0..5460} 这句执行不了。。。
所以集群是启动不了了(→_→)
是不是很"惊喜" (:зゝ∠)
我当时就有种吐血的感觉了。。。
所以绝对不要使用结群部署模式哦!!!!
PS: 博客园的markdown编辑器折腾了我好久。。。
附件
我将我用来研究的自动化脚本和Redis的包打包一起了。
参考