windows环境下,redis集群安装和部署,流程及细节

准备软件:

第一:redis安装包,用来启动多个redis实例,

https://github.com/microsoftarchive/redis/releases(展开Assets四个选项中对应的rRedis-x64-3.2.100 .msi)

第二:利用redis.trib.rb的相关命令, 操作多个redis客户端,搭建集群

构建ruby运行环境==》安装ruby驱动==》执行redis-trib.rb命令

http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe

https://rubygems.org/gems/redis/versions/3.2.2

https://github.com/beebol/redis-trib.rb

 

相关具体操作:

第一:启动多个实例,

将单redis安装目录下的文件,复制一份到新建目录redis_cluster,

windows环境下,redis集群安装和部署,流程及细节

新建一个redis服务器启动配置文件,如下样例:

windows环境下,redis集群安装和部署,流程及细节

相关配置,功能如下:

第一个:启动多个实例,

port 6380 
appendonly yes #数据的保存格式aof
appendfilename "appendonly.6380.aof" #数据保存文件
cluster-enabled yes #是否开启集群
cluster-config-file nodes.6380.conf #集群节点配置文件
cluster-node-timeout 15000 #节点超时时间
cluster-slave-validity-factor 10 #验证slaver节点次数

cluster-migration-barrier 1
cluster-require-full-coverage yes #master节点和slaver节点是否全量配置

windows环境下,redis集群安装和部署,流程及细节

命令:redis-server.exe redis.6380.conf

在对应的redis_cluster目录下,搜cmd开启,依次启动多个实例

 第二步:构建集群

安装完ruby运行环境,

依次安装redis-3.2.2.gem驱动,注意文件位置,不要写错文件名称,建议放在redis_cluster下,

命令:gem install --local redis-3.2.2.gen

windows环境下,redis集群安装和部署,流程及细节

注意点:可能不能直接运行redis-trib.rb,博主在这里遇到卡住很久,以为是ruby系统环境变量没添加,

这里ruby redis-trib.rb即可,添加ruby

windows环境下,redis集群安装和部署,流程及细节

 相关具体操作:

ruby 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 参数指定每个主服务器,有一个从服务器

注意点:博主,执行命令报错,提示

***

D:/Program Files/redis-cluster/Ruby22-x64/lib/ruby/gems/2.2.0/gems/redis-3.2.2/lib/redis/connection/ruby.rb:55:in `rescue in _read_from_socket': Connection timed out (Redis::TimeoutError)

***

没找到相关消息,也不知道什么原因,后来重试一遍就好了,但又出现下面问题,

D:\Program Files\redis-cluster>ruby 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
>>> Creating cluster
[ERR] Node 127.0.0.1:6380 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

D:\Program Files\redis-cluster>ruby 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
>>> Creating cluster
[ERR] Sorry, can't connect to node 127.0.0.1:6383

重启对应的服务端即可,记得删除redis_cluster文件下,该服务对应生成的node.6380.conf文件

提示如下:搭建集群成功!

可参考:https://www.cnblogs.com/wheatli/p/8275542.html

windows环境下,redis集群安装和部署,流程及细节

其他命令:

ruby redis-trib.rb info 127.0.0.1:6381

ruby redis-trib.rb check 127.0.0.1:6381

info check显示详细搭建信息,后面任意指定一个添加到集群中服务端即可

windows环境下,redis集群安装和部署,流程及细节 

ruby redis-trib.rb add-node 127.0.0.1:6386 127.0.0.1:6381

前面参数是新添加,后面任意指定,默认添加一台主redis服务器

ruby redis-trib.rb add-node --slave --master-id 60e699321e1785cc8d3d50bf8ccc27e560827ecb 127.0.0.1:6386 127.0.0.1:6381

添加一台从服务器,用--slave --master-id参数,指定主服务器id

刚刚添加的节点服务端,可能未能分配卡槽,需要这个指令移动需要的卡槽

ruby redis-trib.rb reshard 127.0.0.1:6389

依次填写源redis节点,可以写所有all

windows环境下,redis集群安装和部署,流程及细节

 

重新负载均衡:原理是集群分配给每个redis服端的卡槽数量,来决定每台实例容量,

这里--weight 指定权重,

ruby redis-trib.rb rebalance --weight db28eec3b2e168752a598fb37e15260c7ccdc088=1 --weight 1ad9790b4f41c5d9d92645ed06b1ba7578e82104=1 --weight 689e6aa7d855611ec2dd5db41b67eee051d69f76=1 --weight 689e6aa7d855611ec2dd5db41b67eee051d69f76=1 --weight a15b5cecad66a51a5b7d6e229088c5946056d129=2 127.0.0.1:6381

可以参考:https://www.cnblogs.com/ivictor/p/9768010.html

小结:

博主测试,集群中主节点,不能少于两个,且主从节点,不能同时宕机,否则提示卡槽不能完全覆盖,造成redis集群不可用

[ERR] Not all 16384 slots are covered by nodes.