Redis3.0基于windows的集群

时间:2023-01-06 20:34:18


Redis3.0基于windows的集群

一、配置环境

  • Redis:3.0

  • Win7:sp2

  • Ruby: ruby 2.3.1p112

1.1集群方案

16节点33从,即6节点1个副本,1份数据在集群中存储2份。

2、使用redis-trib.rb工具的create子命令提供了--args参数来指定集群中的Master节点拥有几个Slave节点,譬如使用6redis实例构建集群且--args参数值为1,那么整个集群就包含三个Master节点和三个Slave节点,每个Master节点都有一个Slave节点。这里我们只有三个redis实例,所以选择不为Master节点配备Slave节点,创建集群的方法和结果如图三所示,从中可知Redis集群已经构建成功,其中监听6379的实例负责存储0-5460哈希槽,监听6380的实例负责存储5461-10921哈希槽,监听6381的实例负责存储10922-16383哈希槽。

1.2集群拓扑节构

Redis集群是一个网状结构,每个节点都通过 TCP连接跟其他每个节点连接。

在一个有 N个节点的集群中,每个节点都有 N-1 个对外的 TCP 连接,和N-1 个对内的连接。

这些 TCP连接会永久保持,并不是按需创建的。当一个节点在集群总线中预计回复一个ping,等待足够长的时间,以标识节点不可达,它会尝试从头开始连接来刷新与节点的连接。

Redis的群集节点形成全网状,节点使用gossip协议和一个配置更新机制,以避免在正常条件下交换节点之间太多消息,因此,交换的消息的数量不是指数。

Redis3.0基于windows的集群

二、集群配置

新建6个文件夹分别是 7000/7001/7002/7003/7004/7005

安装Ruby环境,安装:rubyinstaller-2.3.0-x64.exe

http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe

这里将Ruby安装在 C:\Ruby22-x64 目录下。 

https://github.com/MSOpenTech/redis/releases/download/win-3.0.501/Redis-x64-3.0.501.msi

这里将Redis安装在 C:\Redis 目录下,或者到https://github.com/MSOpenTech/redis/releases 下载绿色的安装包;

解压Redis 3.0绿色安装包压到指定目录 

 

2.17000配置

1.redis.windows.conf复制一份然后修改配置文件中的下面选项。

#redis端口号

port 7000

 

#开启集群

cluster-enabled yes

 

#集群模式下,每个redis节点生成一个自己的集群配置文件,这个文件不需要人工修改,由redis自己维护

cluster-config-file nodes.7000.conf

 

#集群模式时,当前节点在与其他节点保活探测时,多久没有响应时认为其他节点处于fail状态,上面是5

cluster-node-timeout 5000

 

#是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。)

appendonly yes

appendfilename "appendonly.7000.aof"

 

#(默认为Yes,丢失一定比例Key后(可能Node无法连接或者挂掉),集群停止接受写操作 no:允许某些slot没有active节点的时候其余slot还能用。

#就是其中1个实例挂掉,不会导致整个rediscluster都不可用了

cluster-require-full-coverage yes

 

#控制从节点FailOver相关的设置设为0,从节点会一直尝试启动FailOver.设为正数,失联大于一定时间(factor*节点TimeOut),不再进行FailOver

cluster-slave-validity-factor 10

(注意:拷贝完成之后要修改 7001/7002/7003/7004/7005目录下面 redis.windows.conf 文件中的 port参数,分别改为对应的文件夹的名称)。

2.27001配置

拷贝5redis目录下的redis. windows.conf文件,依次根据7000进行配置。

其他7002700370047005配置同上。

2.3、创建集群

下载ruby文件:

https://raw.githubusercontent.com/MSOpenTech/redis/3.0/src/redis-trib.rb

如果在第一步时页面下载了redis源代码,那么它的src下也有这个文件。将redis-trib.rb放到某文件夹下,在命令窗口中用执行命令:
  redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
 
会提示是否确定,输入yes后,就ok

 

 

 

2.4、集群是启动

redis-serverredis.windows.conf   #所节点启动都相同。

2.5、集群是连接

redis-cli-c -p 7000 #连接7000,其他节点,只需修改端口号即可。

2.6、安装redis服务[可选操作]

用命令窗口,在redis目录中,执行命令:redis-server.exe redis.windows.conf启动redis实例,将6个端口的配置都执行一下,共6个窗口。没错误就OK了,有问题也就是端口冲突了。

如果不想用命令窗口形式启动,可以安装rediswindows服务,命令窗口切换到在d:\rediscluster\redis目录下,安装服务命令为:

1.  redis-server.exe --service-install redis.windows.conf --service-name redis7000  

redis-server.exe--service-install redis.7000.conf --service-name redis7000

 将此命令修改后(配置文件名和服务名),执行6次,依次把6个配置文件都安装为服务,然后启动服务就可以了。

 

三、集群测试与使用

3.1、查看节点情况

输入redis7000>redis-trib.rbcheck 127.0.0.1:7000查看节点情况

Redis3.0基于windows的集群

3.2、节点数据存储测试

通过2.7、集群是连接节点7000,输入“set sss 123”如下:

Redis3.0基于windows的集群

连接节点7000,输入”get sss 123”如下:

Redis3.0基于windows的集群

连接节点7005,输入”get sss 123”如下:

Redis3.0基于windows的集群

结果为123,同时将节点漂移到7000了。

三、节点热扩充

3.1、动态的向集群是添加一个从节点

1

redis-trib.rb add-node 127.0.0.1:7008(要添加的节点) 127.0.0.1:7002(任意一台正在运行的节点)

此增加的为从节点,即向7002增加从节点。增加之前需要连接新增节点并执行“>flushdb”进行数据清空。

Redis3.0基于windows的集群

增加节点:

Redis3.0基于windows的集群

3.2、动态的向集群是添加一个主节点

1

redis-trib.rb add-node 127.0.0.1:7008(要添加的节点) 127.0.0.1:7002(任意一台正在运行的节点)

此增加的为从节点,即向7002增加主节点。增加之前需要连接新增节点并执行“>flushdb”进行数据清空。当7002节点为从节点时,增加的节点将为集群中的主节点,当7002为主节点时,增加的节点将为从节点。

1增加主节点之后需要分配哈希卡槽(0 slots)。

Redis3.0基于windows的集群

2输入分配的卡槽数量

Redis3.0基于windows的集群

3输入分配的节点ID

Redis3.0基于windows的集群

4从哪些节点进行迁移,输入ALL表示从所以节点平均迁移。

Redis3.0基于windows的集群

5确认迁移

Redis3.0基于windows的集群

6迁移完成并检查

Redis3.0基于windows的集群

三、参考文献

http://www.cnblogs.com/raphael5200/p/5681114.html

http://*.com/questions/34230131/err-slot-xxx-is-already-busy-rediscommanderror

http://blog.csdn.net/yys79/article/details/51566417

http://ifeve.com/redis-cluster-spec/