windows下建立redis集群学习笔记

    这几天自己尝试在windows环境下搭建了redis集群,在搭建过程中遇到了不少问题,网上的很多解决方案都是在linux环境下的,不适用,而且比较零散,这里将自己搭建的过程简要记录,并说一下遇到的坑。

 

获取redis

Redis通过github下载压缩包,不要从官网下载,这里用3.2.100版本

https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100

 

配置文件

修改配置文件开启集群模式,几个关键配置项:

cluster-enabled yes  #开启集群模式

cluster-config-file nodes-6379.conf  #指定集群配置文件,自动生成

cluster-node-timeout 15000  #节点超时配置

cluster-slave-validity-factor 10 #用于限定slave于master的失联时长的倍数;如果设置为0,slave总是尝试failover,不管master与slave之间的链接断开多久(即只要slave无法与master通讯,都会尝试进行failover;Cluster有选举机制,有可能会被否决);如果此值为正值,则失联的最大时长为:factor * node timeout,当失联时长超过此值后,slave触发failover。比如node timeout为5秒,factor为10,那么当slave与master失联超过50秒时,slave将会尽力尝试failover。此值需要合理设置,也会对集群有效性、数据一致性产生影响。

cluster-migration-barrier 1 #master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数被设为2,那么只有当一个主节点拥有2个可工作的从节点时,它的一个从节点才会尝试迁移

cluster-require-full-coverage yes  #集群全部的分区slot有节点负责,集群状态才为ok并提供服务。

集群一般为单数个主节点,最少3个起步,一个节点的配置文件修改好之后赋值几份,再修改对应的端口号即可,这样就有了多个节点了。

 

安装ruby

redis建立集群是需要依赖ruby的(5.0之后不需要),所以要安装ruby环境,官网下载安装即可https://rubyinstaller.org/downloads/,这里用的是2.3.3版本,安装的时候注意将ruby的路径添加到系统环境变量,将对应选项勾上,默认是不勾的。

 

ruby安装redis驱动

ruby安装好之后打开cmd,通过命令安装redis驱动,这里有一个大坑,ruby的redis驱动必须要与你的redis一致,否则接口版本不一样会导致集群创建失败,在默认情况下如果不指定版本号,gem安装驱动的时候会默认拿最新的redis接口版本,这样是不对的,要去下面的地址查一下对应gem离线安装包的版本号是多少,选择对应版本的来安装。

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

gem install redis -v3.2.1

 

获取redis-trib.rb

    redis-trib.rb是Ruby对redis集群的管理工具,网上有很多redis-trib.rb可以下载,这里要特别注意redis-trib.rb对于redis是有版本要求的,不是所有的redis-trib.rb都可以直接拿来使用,实际上redis的源码里面就有redis-trib.rb,根本不需要到其他地方去找,源码在上面的github里面就有。

启动redis

分别进入到需要作为集群redis的目录,打开cmd,输入命令启动redis,

redis-server.exe redis.windows.conf

创建集群

进入到redis-trib.rb所在目录,打开cmd,输入命令

redis-trib.rb create --replicas 1  127.0.0.1:6379 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

说明:

1. --replicas 1 意思是每个master主节点都对应创建一个slave从节点,默认情况下,后面的6个节点前三个是主节点,后三个是从节点

2.在创建集群的时候如果出现下面的提示,那么十有八九是因为ruby安装的redis驱动与当前redis的版本不一致造成的,请重新安装对应版本的redis接口驱动

WARNING: redis-trib.rb is not longer available!
You should use redis-cli instead.

All commands and features belonging to redis-trib.rb have been moved to redis-cli.
In order to use them you should call redis-cli with the --cluster
option followed by the subcommand name, arguments and options.

Use the following syntax:
redis-cli --cluster SUBCOMMAND [ARGUMENTS] [OPTIONS]

3.当命令成功执行,控制台会给出集群的配置类似下面的,询问是否同意按照上面的配置建立集群,这里要输入yes,不要输入y

4.同意配置之后会进入开始建立集群,节点间会相互发送消息进行通信,加入集群,一般情况下是很快的,但是有可能会卡住,一直停留在Waiting for the cluster to join.......这里,网上有很多说法,有的说防火墙、消息总线端口没开、有的说要在其他机器的节点执行meet一下,但这都是针对于linux环境的,而我在windows环境下建立了,根本不对,最后我将redis删掉,重新配置就好了,原因可能是因为之前建立过集群遗留的配置文件影响的。

>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.......

5.最后成功建立应该是会出现下面的提示的:

6.创建成功之后会看到redis节点之间在不停的发送接收信息,这就代表了redis的通信正常

 

查看集群状态

进入到其中一个节点的目录,打开cmd,通过redis-cli -c 打开redis客户端,通过cluster info可以查看到当前集群的状态,cluster nodes可以看到节点的信息

说明:

cluster info:

1.cluster_state 集群的状态,正常是ok,如果集群不可用就是fail

2.cluster_slots_assigned:16384  已分配的分区数量,正常是16384,如果少于16384证明有分区没有被分配,这是不正常的,建议重新建立集群

3.cluster_slots_ok:16384 正常的分区数

4.cluster_known_nodes:6  集群中的节点数

5.cluster_size:3 集群的规模

cluster nodes:

 

 

重新建立集群

集群建立了之后会一直存在,redis关闭之后重新打开就可以了,不需要重新建立,如果要重新建立集群需要一个一个移除

1.使用redis客户端工具进入各个节点

2.执行flushall命令,清除节点数据

3.执行cluster reset命令,重置集群状态

4.使用redis-trib.rb,执行创建节点的命令

    在重建的时候发现在执行创建命令的时候出现卡在Waiting for the cluster to join.......,但是已经通过cluster reset重置过集群的状态了,怀疑还有配置文件是需要手动清理的,按照网上的说法手动将nodes-6379.conf和.rdb文件删除后,redis直接就起不来了,不知道是否有哪里操作失误,最后只好重新下载redis重新搭建,反正重建也是要清除redis数据的,也不影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值