在windows上搭建redis集群(Redis-Cluster)

Redis集群策略主要有:

  • 集群
  • 主从复制(在windows上搭建redis集群(主从复制))
  • 哨兵模式 (在windows上搭建redis集群(Redis-Sentinel))
  • 分片 


本文主要讲解如何搭建分布式集群。

所需软件:

Redis 3.2

Ruby语言运行环境

RedisRuby驱动redis-xxxx.gem

创建Redis集群的工具redis-trib.rb


安装配置redis 

redis下载地址

https://github.com/MicrosoftArchive/redis/releases

1) 下载Redis-x64-3.2.100.zip

**********************************************************************************************************************************************

要让集群正常运作至少需要3个主节点,建议配置3个主节点,其余3个作为各个主节点的从节点(也是官网推荐的模式)

所以需要6台虚拟机。

主节点崩溃,从节点的Redis就会提升为主节点,代替原来的主节点工作,崩溃的主Redis恢复工作后,会再成为从节点。

**********************************************************************************************************************************************

2) 创建Redis集群目录

redis 解压后,再复制出 5 份,配置 三主三从集群。 由于 redis 默认端口号为 6379,那么其它5份的端口可以为63806381638263836384 并且把目录使用端口号命名

在windows上搭建redis集群(Redis-Cluster)_第1张图片

3) 修改配置文件

打开每个Redis目录下的文件 redis.windows.conf,修改里面的端口号分别对应相对应的文件夹名:637963806381638263836384

再修改集群支持配置,将以下配置前面的#去掉。

在windows上搭建redis集群(Redis-Cluster)_第2张图片

cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes


cluster-config-file nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。

4) 编写启动脚本,或者进入每个端口命名的文件夹下启动服务

编写一个 bat 来启动 redis,在每个节点目录下建立 startup.bat,内容如下:
title redis-6379
redis-server.exe redis.windows.conf

 

title命名规则 redis-相对应的端口。

 

安装Ruby

redis的集群使用  ruby脚本编写,所以系统需要有 Ruby 环境 ,下载地址 

https://rubyinstaller.org/downloads/

 

在windows上搭建redis集群(Redis-Cluster)_第3张图片

在windows上搭建redis集群(Redis-Cluster)_第4张图片

安装时3个选项都勾选。

 

安装RedisRuby驱动redis-xxxx.gem

下载地址 https://rubygems.org/pages/download

 

在windows上搭建redis集群(Redis-Cluster)_第5张图片

下载后解压,当前目录切换到解压目录中,如 D:\Program Files\Redis_cluster\rubygems-2.7.7 然后命令行执行  ruby setup.rb
 

再用 GEM 安装 Redis :切换到redis安装目录,需要在命令行中,执行 gem install redis

在windows上搭建redis集群(Redis-Cluster)_第6张图片

安装集群脚本redis-trib

下载地址  https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb

 打开该链接把里面的脚本保存为redis-trib.rb,建议保存到一个Redis的目录下(不用每个都放),例如放到6379目录下。

注意:现在打开这个链接中的代码已不支持redis 5.0以下的版本了,需要下载老版本的

脚本,链接

https://download.csdn.net/download/weixin_41846320/10760378

 

redis-trib.rb集群的命令为 

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
 

--replicas 1 表示每个主数据库拥有从数据库个数为1master节点不能少于3个,所以我们用了6redis
 

 启动每个节点并且执行集群构建脚本

把每个节点下的 start.bat双击启动, 在切换到redis目录在命令行中执行  

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
这个命令只需输入一次就好了,之后节点关闭,重启就不需要再执行了

 

注意:如果出现 redis-trib.rb is not longer available!  如果redis版本是5.0以上,则使用如下命令:

redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 12

1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1

原因是redis5.0以上不再需要redis-trib.rb了,而是使用自带的redis-cli作为创建集群的命令了。

如果不是,那么将redis-trib.rb改为老版本就可以了。在windows上搭建redis集群(Redis-Cluster)_第7张图片

在出现 Can I set the above configuration? (type 'yes' to accept):   请确定并输入 yes 。成功后的结果如下:

在windows上搭建redis集群(Redis-Cluster)_第8张图片在windows上搭建redis集群(Redis-Cluster)_第9张图片

 连接集群进行测试

使用Redis客户端Redis-cli.exe来查看数据记录数,以及集群相关信息

命令 redis-cli –c –h ”地址” –p "端口号" ;  c 表示集群
 

在windows上搭建redis集群(Redis-Cluster)_第10张图片
 

查看集群的信息,命令:cluster info

在windows上搭建redis集群(Redis-Cluster)_第11张图片

查看主从关系,命令: info replication

主库显示信息:

在windows上搭建redis集群(Redis-Cluster)_第12张图片

从库显示信息:
在windows上搭建redis集群(Redis-Cluster)_第13张图片

查看各个节点分配slot,命令 cluster nodes

在windows上搭建redis集群(Redis-Cluster)_第14张图片

005c72fcbd96681520ed866e4d8b9d155e9da197 127.0.0.1:6383 slave 70e30d41c93a648043
14798cc756e2fc513eb8cc 0 1541145105902 5 connected
70e30d41c93a64804314798cc756e2fc513eb8cc 127.0.0.1:6380 master - 0 1541145103879
 2 connected
5461-10922
521b02ed92b7fd3da92c00686f5b004fd1697cf6 127.0.0.1:6381 master - 0 1541145104878
 3 connected
10923-16383
083402d0f0efa9f556da6e2f04b0dfecc014350c 127.0.0.1:6382 slave 5461e1d8f0d880f34b
51e548141d09b12cd8fdd6 0 1541145106902 4 connected
d0386b9f1b7f6c5a3a2687d3e454ad5a2999be7e 127.0.0.1:6384 slave 521b02ed92b7fd3da9
2c00686f5b004fd1697cf6 0 1541145102869 6 connected
5461e1d8f0d880f34b51e548141d09b12cd8fdd6 127.0.0.1:6379 myself,master - 0 0 1 connected 0-5460

可以看到有3个master,3个slave
以及可以看到master各自的slot分布情况

 

存几个值,看下值的分布

在windows上搭建redis集群(Redis-Cluster)_第15张图片

以6380节点为例,管理的slots为5461-10922,key为test的slot为6918,显然命中6380管理的卡槽6918,所以客户端也跳转到了6380。key为test1的slot为4768,在6379的卡槽范围0-5460,所以客户端又跳转到了6379。

 

Redis集群数据分配策略:

采用一种叫做哈希槽 (hash slot)的方式来分配数据,redis cluster 默认分配了 16384 个slot,当我们set一个key 时,会用CRC16算法来取模得到所属的slot,然后将这个key分到哈希槽区间的节点上,具体算法就是:CRC16(key) % 16384

注意的是:必须要3个以上的主节点,否则在创建集群时会失败,三个节点分别承担的slot 区间是:

节点A覆盖0-5460;
节点B覆盖5461-10922;
节点C覆盖10923-16383.

 

至此,Redis Cluster在Windows上的配置就完成了

你可能感兴趣的:(Redis)