最近因我的项目须要搭建 Redis 集群。查找了一些相干博文和材料,踩了不少坑。上面是自己总结的 Redis 集群搭建步骤和搭建过程中遇到的坑,心愿对大家有帮忙。篇幅有点长,请急躁看。
1 下载安装 Redis
Redis 下载地址:https://github.com/MicrosoftArchive/redis/releases
装置过程比较简单,根本都是默认选项,不在赘述。能够自定义批改装置目录。(自己习惯性装置在 D:Program Files 目录下。)
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 节点文件夹(以端口命名,不便记忆而已)。
复制 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
(其余节点依照上述步骤配置,上述配置项中 6380 全副改为对应节点端口号即可,其余配置项保持一致)
2.2 装置节点服务
配置实现后,须要将 6 个节点注册成服务。在 6380 节点目录下(即:D:RedisCluster6380)关上 CMD,运行如下命令:
redis-server –service-install D:RedisCluster6380redis.windows-service.6380.conf –service-name Redis6380
排坑一:原本筹备将 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),运行命令就失常了。
其余节点反复运行命令即可,如下图:
运行实现后,关上 Windows 零碎服务查看,6 个 Redis 节点服务曾经装置胜利。启动所有节点服务。
3 下载安装 Ruby
3.1 下载安装 Ruby
下载地址:https://rubyinstaller.org/downloads/
3.2 装置 Redis 驱动
下载 Ruby 环境下的 Redis 驱动,下载地址:https://rubygems.org/gems/redis/versions/3.3.2
将下载的 Redis 驱动文件 redis-3.3.2.gem 复制到 Ruby 装置目录下(即:C:Ruby30-x64),关上 CMD,运行如下命令:
gem install –local C:Ruby30-x64redis-3.3.2.gem
运行后果如下图,示意 Redis 驱动已装置胜利。
4 创立 Redis 集群
4.1 下载 redis-trib.rb(redis 集群管理工具)
下载地址:https://github.com/beebol/redis-trib.rb
下载后解压,并将文件复制到 6380 节点(即:D:RedisCluster6380)目录下
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 个从节点)
上图能够看出:
主节点 | 从节点 | 槽 |
---|---|---|
6380 | 6383 | 0-5460 |
6381 | 6384 | 5461-10922 |
6382 | 6385 | 10923-16383 |
提醒 Can I set the above configuration? (type ‘yes’ to accept),示意“是否采纳以上配置信息进行设置”。须要手动输出 yes,提醒如下图信息,示意集群装置胜利。
4.3 验证集群运行状态
运行如下命令,查看集群节点运行状态
redis-cli -c -h 127.0.0.1 -p 6380
cluster nodes
运行命令:set test 1
Redis 集群会依据 Key 值(test)计算出对应的槽,并重定向到对应的 Redis 节点,如下图,显示重定向到 6384 节点。如果集群配置了 requirepass,会提醒“(error) NOAUTH Authentication required.”, 示意须要登录认证。
运行认证命令:auth 12345678
运行之后,通过 set 和 get 命令验证 Redis 集群工作是否失常。如下图所示:
4.4 验证 Redis 集群机制
手动将其中 1 个主节点服务进行,例如 6381。
再通过命令行查看集群状态。6381 节点曾经是 fail 状态,6381 节点的从节点 6384 被推选为主节点。阐明 Redis 集群工作机制失常。
5 设置 Redis 集群明码
进行所有 Redis 节点服务。
批改 redis.windows-service.6380.conf 配置文件,设置集群明码(Note:每个节点都须要设定明码且明码必须雷同),留神集群模式下,上面两行都须要设置。
requirepass 12345678
masterauth 12345678
默认配置项前都有“#”示意该配置项时正文状态。去掉“#”, 输出明码即可。
设置实现后,启动所有 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