Windows环境下搭建Redis集群

最近因项目需要搭建Redis集群。查找了一些相关博文和资料,踩了不少坑。下面是本人总结的Redis集群搭建步骤和搭建过程中遇到的坑,希望对大家有帮助。篇幅有点长,请耐心看。

1   下载安装Redis

Redis下载地址:https://github.com/MicrosoftArchive/redis/releases

1.png

安装过程比较简单,基本都是默认选项,不在赘述。可以自定义修改安装目录。(本人习惯性安装在D:Program Files目录下。

2.png

2   创建Redis集群节点

Reids集群工作至少需要6个节点: 其中3个为主节点, 其余3个是各个主节点的从节点。主节点崩溃,从节点会自动被推选为主节点,代替主节点工作。

因本人条件有限,只能在一台机器上模拟6个Redis节点,分别对应地址和端口如下:

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

(Note:生产环境下,每个节点需要部署在独立的服务器上。如果部署在一台服务器上,那么只要服务器宕机,整个集群就无法正常工作,不具备高可用性。)

2.1   配置节点

安装完成后,创建文件目录D:RedisCluster,同时创建6个Redis节点文件夹(以端口命名,方便记忆而已)。

3.png

复制D:Program FilesRedis目录下所有文件到D:RedisCluster6380目录下。配置6380节点。将redis.windows-service.conf文件重命名为redis.windows-service.6380.conf(重命名是为了方便区分,不重命名应该也可以)。修改配置项如下:

port 6380

loglevel notice

appendonly yes

appendfilename "appendonly.6380.aof"

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

4.png

(其他节点按照上述步骤配置,上述配置项中6380全部改为对应节点端口号即可,其他配置项保持一致)

2.2 安装节点服务

配置完成后,需要将6个节点注册成服务。在6380节点目录下(即:D:RedisCluster6380)打开CMD,运行如下命令:

redis-server --service-install D:RedisCluster6380redis.windows-service.6380.conf --service-name Redis6380

5.png

排坑一:本来准备将Redis节点放在Redis安装目录下(即:D:Program FilesRedis),但是由于全路径包含Program Files文件夹,中间有空格,导致在运行上述指令时,总是报错:

Invalid argument during startup: Failed to open the .conf file: FilesRedis6390redis.windows-service.6390.conf CWD=D:Program FilesRedis6390

后来,重新创建集群节点目录(即:D:RedisCluster6380),运行命令就正常了。

6.png

其他节点重复运行命令即可,如下图:

7.png

运行完成后,打开Windows系统服务查看,6个Redis节点服务已经安装成功。启动所有节点服务。

8.png

3 下载安装Ruby

3.1 下载安装Ruby

下载地址:https://rubyinstaller.org/downloads/

9.png
10.png
11.png

3.2 安装Redis驱动

下载Ruby环境下的Redis驱动,下载地址: https://rubygems.org/gems/redis/versions/3.3.2

12.png

将下载的Redis驱动文件redis-3.3.2.gem复制到Ruby安装目录下(即:C:Ruby30-x64),打开CMD,运行如下命令:

gem install --local C:Ruby30-x64redis-3.3.2.gem

运行结果如下图,表示Redis驱动已安装成功。

13.png

4 创建Redis集群

4.1 下载redis-trib.rb(redis集群管理工具)

下载地址:https://github.com/beebol/redis-trib.rb

14.png

下载后解压,并将文件复制到6380节点(即:D:RedisCluster6380)目录下

15.png

4.2 创建Redis集群

排坑二:在运行下面命令之前,不要设置Redis的集群密码。否则,会抛出无法打开节点异常。设置密码,可以在集群搭建完成之后设置。后续有介绍。

在6380节点目录下打开CMD,运行命令如下:

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个从节点)

16.png

上图可以看出:

主节点 从节点
6380 6383 0-5460
6381 6384 5461-10922
6382 6385 10923-16383

提示Can I set the above configuration? (type 'yes' to accept),表示“是否采用以上配置信息进行设置”。需要手动输入yes,提示如下图信息,表示集群安装成功。

17.png

4.3 验证集群运行状态

运行如下命令,查看集群节点运行状态

redis-cli -c -h 127.0.0.1 -p 6380

cluster nodes

18.png

运行命令:set test 1

Redis集群会根据Key值(test)计算出对应的槽,并重定向到对应的Redis节点,如下图,显示重定向到6384节点。如果集群配置了requirepass,会提示“(error) NOAUTH Authentication required.”,表示需要登录认证。

运行认证命令:auth 12345678

运行之后,通过set和get命令验证Redis集群工作是否正常。如下图所示:

19.png

4.4 验证Redis集群机制

手动将其中1个主节点服务停止,例如6381。

20.png

再通过命令行查看集群状态。6381节点已经是fail状态,6381节点的从节点6384被推选为主节点。说明Redis集群工作机制正常。

21.png

5 设置Redis集群密码

停止所有Redis节点服务。

修改redis.windows-service.6380.conf配置文件,设置集群密码(Note:每个节点都需要设定密码且密码必须相同),注意集群模式下,下面两行都需要设置。

requirepass 12345678

masterauth  12345678

默认配置项前都有“#”表示该配置项时注释状态。去掉“#”,输入密码即可。

22.png
23.png

设置完成后,启动所有Redis节点服务。

参考资料:

https://blog.csdn.net/kimihong/article/details/105171243

https://www.cnblogs.com/zhangrui153169/p/12837903.html

https://blog.csdn.net/tangyaliang11/article/details/78659473

https://www.modb.pro/db/15229

你可能感兴趣的:(redis)