一,准备工作
1,三台window虚拟机,我是用的vmware创建的,windows server 2016,做伪集群的话一台就够了。ip分别为:192.168.74.131,192.168.74.132,192.168.74.133。
2,redis安装包,下载地址:https://github.com/MSOpenTech/redis/releases
我下的是64位的,redis64-3.0.501.zip
3,ruby环境配置:
参照:https://www.runoob.com/ruby/ruby-installation-windows.html
4,安装redis的ruby驱动:
https://rubygems.org/rubygems/rubygems-3.1.4.zip
下载地址 https://rubygems.org/pages/download
下载后解压,当前目录切换到解压目录中,如 D:\tools\rubygems-2.6.12 然后在命令行执行
ruby setup.rb。
然后GEM 安装 Redis :切换到redis安装目录,需要在命令行中,执行
gem install redis
5,下载集群管理脚本:redis-trib.rb,ruby脚本文件
下载地址:https://github.com/beebol/redis-trib.rb
二,开始安装redis集群
1,解压redis到三台虚拟机,分别复制2份,其中133虚机上复制4份,留两份等会作集群新增删除节点用
192.168.74.131->6380,6381
192.168.74.132->6382,6383
192.168.74.133->6384,6385,6386,6387
对应每个redis包下的配置文件,redis.windows.conf,
修改配置:
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes
其中nodes-6379.conf,对应改端口
2,创建启动脚本,startup.bat,并双击启动
内容:redis-server.exe redis.windows.conf
3,在配置有ruby环境的本机或其中一台虚机上,把redis-trib.rb文件弄过去,在此目录下,执行集群创建命令:
redis-trib.rb create --replicas 1 192.168.74.131:6380 192.168.74.131:6381 192.168.74.132:6382 192.168.74.132:6383 192.168.74.133:6384 192.168.74.133:6385
显示这个就表示创建集群成功,查看集群状态:
连接其中一个节点:redis-cli -h 192.168.74.131 -p 6380
可以使用以下命令查看:
cluster info,查看集群信息
cluster nodes:查看集群各节点状态
4,测试,数据保存,查看
三,新增,删除节点
1,新增节点,使用192.168.74.133.6386
先启动该节点,然后还是在redis-trib.rb所在目录,执行命令:
redis-trib.rb add-node 192.168.33.133:6386 192.168.33.131:6380
第二个参数节点相当于介绍人的意思,拉人进群,所以肯定是已经启动并且加入集群了的会员
1.1 将该节点变成指定节点的slave,
找到指定master节点的id,比如:be5af77694ce7afe525bf23709b3fd0be54c8c86
进入该192.168.74.133:6386,使用命令:
cluster replicate be5af77694ce7afe525bf23709b3fd0be54c8c86
1.2 将该节点变成master
一般加入集群,默认为master,但没有哈希槽使用,所以就重新分配哈希槽,申请分配哈希槽
redis-trib.rb reshard 192.168.74.133 6386,回车之后会询问需要分配多少个槽位,比如输入1000,确定之后,
集群会做个计划,你再次确认之后就开始正式分配了。
分配完成之后,可以使用cluster nodes查看这个节点分配的槽位范围
2,删除节点
2.1,如果是从节点,直接删除就行了
redis-trib.rb del-node 192.168.74.144:6386 *****(节点id)
2.2,如果是master,先要把槽位移走
redis-trib.rb reshard 192.168.74.133:6386,
->这里会提示我们要移动多少个槽位
->输入1000,(比如该节点总共1000个槽位)
-> 会提示要接收这些槽位的节点id
->输入指定接收节点的id
->提示完成done,然后使用命令删除节点
->redis-trib.rb del-node 192.168.74.133:6380 888(节点id)