Redis数据库系列在windows上搭建redis集群(redis-cluster)
Posted 一宿君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis数据库系列在windows上搭建redis集群(redis-cluster)相关的知识,希望对你有一定的参考价值。
第七章、在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服务器上。
- 综上感觉集群真强大。
以上是关于Redis数据库系列在windows上搭建redis集群(redis-cluster)的主要内容,如果未能解决你的问题,请参考以下文章