Redis数据库系列(七)、在windows上搭建redis集群(redis-cluster)

  • Post author:
  • Post category:其他




第七章、在windows上搭建redis集群(redis-cluster)



7.1、所需软件

Redis、Ruby语言运行环境、Redis的Ruby驱动redis-xxxx.gem。



7.2、规划集群

  • 集群规划有三分节点的集群,每个节点有一主一从,需要六台redis服务器。

    我们用Redis-x64-5.0.10.zip版本做演示,redis解压后,再复制出5份,配置三主三从的集群。
  • 由于redis默认的端口号是6379,所以另外五台redis服务器的端口一次改为6380、6381、6382、6383、6384,使其redis解压目录也用端口号命名,容易区分。
  • 如下图所示:

    在这里插入图片描述
  • 打开目录6379下的 redis.windows.conf配置文件,修改里面的端口号、密码和主机密码用于主从复制连接,以及相应的集群支持配置。

    在这里插入图片描述

    在这里插入图片描述
  • 修改其他支持集群的配置:
  • 开启cluster集群,如果cluster-enabled 不为yes, 那么在使用JedisCluster集群代码获取的时候,会报错。

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

    cluster-config-file nodes-6379.conf
    
  • cluster-node-timeout 调整为 15000,那么在创建集群的时候,不会超时。

    cluster-node-timeout 15000
    
  • 开启AOF持久化,相应的appendonly-6379.aof持久化记录文件,也以appendonly-端口号.aof格式命名。

    appendonly yes
    

    在这里插入图片描述

  • 在redis解压目录中创建两个bat批处理文件,startRedis.bat用于启动redis服务,linkClientRedis.bat用于客户端连接redis服务器。

    在这里插入图片描述



7.3、安装Ruby

Redis的集群使用Ruby脚本编写,所以系统需要有 Ruby 环境 ,

下载地址:https://rubyinstaller.org/downloads/,下载好安装包解压后,

双击安装选择安装路径后傻瓜式安装,非常简单。

在这里插入图片描述



7.4、安装Redis的Ruby驱动redis-xxxx.gem

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

下载好解压,切换到解压目录中,然后打开DOS命令窗口执行ruby setup.rb命令:

在这里插入图片描述

然后再切换到端口号为6379的解压目录下,打开DOS命令窗口,执行命令gem install redis

在这里插入图片描述



7.5、依次启动每个节点redis服务器并且执行集群构建脚本

在这里插入图片描述

切换到redis-6379的解压目录下,打开DOS命令窗口,执行如下构建集群脚本:

#后面的1代表初始化数据库空间为1个(redis中默认为16个,这里设置为1个足够我们使用)
redis-cli --cluster create  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 --cluster-replicas 1 -a 123456

在这里插入图片描述



7.6、测试

这时我们前面说了linkClientRedis.bat批处理文件的作用是启动客户端连接Redis服务器:

但是现在我们构建的是集群,所以在启动客户端的同时还要启动集群,在所有的linkClientRedis.bat文件中后面加上-c,就代表以集群方式连接上的Redis服务器,如果不设置-c,以后会有权限受限。

在这里插入图片描述

设置好后,依次启动六台redis服务器,然后进入redis-6379解压目录下,双击linkClientRedis.bat批处理文件

在这里插入图片描述

输入dbsize查看数据总记录数:

在这里插入图片描述

输入命令cluster nodes 查看当前集群连接状态

在这里插入图片描述

输入cluster info查看当前集群信息:

在这里插入图片描述

输入info replication查看当前的主从连接信息:

在这里插入图片描述

进入redis-6384的客户端输入info replication:

在这里插入图片描述

测试后发现三主三从的关系是对应的,对应关系是集群自动分配的,如下图所示:

在这里插入图片描述

六台redis服务器的集群关系对应图如下:

在这里插入图片描述



7.7、特别注意



  • 上述我们已经知道三主三从的关系是集群结构随机分配的,无论是谁主谁从,在集群结构中,只要从其中一台Redis服务器set写入内容后,其他另外五台服务器都可以访问到,而并非只有其对应的主从结构的服务器才可以访问。


  • 这样的话服务器在向客户端提供服务时,可以根据服务器访问峰值随机向客户端提供服务器响应,避免其中某一台服务器严重透支,

    使所有服务器响应负载均衡。


  • 如果说其中一台从机挂掉了

    ,例如上述从机6384突然宕机,不要慌,其他五台redis服务器会继续为客户端提供服务,基本不会有太大的影响,只是使其对应的主机6379暂时失去了主从结构;但是当从机6384再次恢复的时候,依然会找到主机6379再次连接主从结。还有一点很重要的是在主从结构断开的这段时间内,如果说客户端写入了数据,当从机6384重新连接上的时候,主机6379依然会把所有数据自动备份到6384服务器上,这就很强悍了。

  • 如果说其中一台主机挂掉了

    ,例如上述主机6379突然宕机,也不要慌,它的从机6384会直接代替它的位置升级为主机,继续和其他几台服务器一块为客户端提供服务;还有如果说这时候6384原来的主机6379又恢复正常了,放心吧,6384主机大哥的位置依然还是大哥,可以理直气壮的跟6379说谁让你走的,你就算回来只能是小弟了,跟着就做了6384的从机,数据依然会同步到6379服务器上。

  • 综上感觉集群真强大。



版权声明:本文为qq_52596258原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。