记录Windows部署Redis5.0.14版本Cluster集群

开源地址:https://github.com/tporadowski/redis(下载链接)

 1.下载解压后,解压成6份,为了好区分把文件夹分别命名为:6001,6002,6003,6004,6005,6006

 

2.修改redis.windows-service.conf文件,复制第一个到其他文件夹里,替换对应端口号

bind 127.0.0.1                  #绑定的IP,也可以为0.0.0.0或者注释掉 任意IP

port     6001                  #修改为与当前文件夹名字一样的端口号
 
masterauth redis@123            #配置redis密码

requirepass redis@123           #配置redis密码

appendonly yes                  #开启aof持久化

no-appendfsync-on-rewrite yes   #开启aof持久化重写期间同步

cluster-enabled yes             #开启集群

cluster-config-file nodes-6001.conf     # 开启节点配置文件(nodes-端口.conf命名方式,服务启动时自动生成)

cluster-node-timeout 15000               #开启集群节点宕机超时时间

 注意:(前面不要留空格,否则会出现类似:Invalid argument during startup: unknown conf file parameter :  cluster-enabled问题)

 3.在每个redis目录下打开一个cmd 窗口,把redis.windows-service.conf安装成服务启动


#安装成服务
redis-server --service-install redis.windows-service.conf --service-name redis6001
redis-server --service-install redis.windows-service.conf --service-name redis6002
redis-server --service-install redis.windows-service.conf --service-name redis6003
redis-server --service-install redis.windows-service.conf --service-name redis6004
redis-server --service-install redis.windows-service.conf --service-name redis6005
redis-server --service-install redis.windows-service.conf --service-name redis6006



#卸载服务
redis-server --service-uninstall redis.windows-service.conf --service-name redis6001
redis-server --service-uninstall redis.windows-service.conf --service-name redis6002
redis-server --service-uninstall redis.windows-service.conf --service-name redis6003
redis-server --service-uninstall redis.windows-service.conf --service-name redis6004
redis-server --service-uninstall redis.windows-service.conf --service-name redis6005
redis-server --service-uninstall redis.windows-service.conf --service-name redis6006

 3.创建Redis集群

#如redis设置了密码,则需要在创建集群的时候加 -a password ,要是没有会提示(Node 127.0.0.1:6001 NOAUTH Authentication required.)
#进入任意一个Redis中执行,只需要执行一次即可,后面哪怕我们重启了整个redis,也不需要执行第二次了
redis-cli -a redis@123 --cluster create 
127.0.0.1:6001
127.0.0.1:6002
127.0.0.1:6003
127.0.0.1:6004
127.0.0.1:6005
127.0.0.1:6006
--cluster-replicas 1  #1表示占比,表示主和从的比例数据,这里是三主三从,所以是1

##命令
redis-cli -a redis@123 --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1 

 ##执行创建集群命令

 输入 yes

 集群创建分配插槽成功.

 4.测试集群是否正常

##连接集群其中的一个主节点
redis-cli.exe -c -h 127.0.0.1 -p 6001  -a redis@123   # -c 表示集群 -h bind 地址 -p 端口 -a 密码

#添加值
set test 111

##查看是否存在
get test 或者 keys test

注意:如果set 值出现:NOAUTH Authentication required. 则需要 -a 密码

 查看从节点信息,并连接

#输入查
info replication

#连接从节点
redis-cli.exe -c -h 127.0.0.1 -p 6004

#查询test 是否存在
get test

 

 5.集群的扩容和收缩

 集群扩容,复制两份redis,分别为6007,6008,把端口改6007,6008 ,安装成服务(安装方式同上),并启动

##添加6007节点到集群
redis-cli.exe -a redis@123 --cluster add-node 127.0.0.1:6007 127.0.0.1:6001

##第一个127.0.0.1:6007是新增的集群节点 第二个127.0.0.1:6001是集群中正常存活的节点

 查看集群节点,发现新添加的节点没有被分配插槽

 为新添加的节点分配插槽并为主节点

##执行分配插槽
redis-cli.exe -a redis@123 --cluster reshard 127.0.0.1:6002 

#127.0.0.1:6002为集群中一个节点,如果设置了密码,则需要添加-a 密码

 提示我们需要分配多少个插槽,后面需要输入数字,这里我分配100个

 回车键确认,系统需要我们输入接受的节点ID,我们这里是新添加6007节点

 回车确认,会提示,分配插槽的方式,all=系统随机分配100个插槽,done=手动分配,我这里先选择系统随机all,回车后,会展现分配的插槽信息,然后输入yes,回车确认完成。

 查看集群节点信息

#查看集群信息
cluster nodes

 把6008添加到集群节点,并为6007节点的从节点

#添加到集群节点
redis-cli.exe -a redis@123 --cluster add-node 127.0.0.1:6008 127.0.0.1:6001

##第一个127.0.0.1:6008是新增的集群节点 第二个127.0.0.1:6001是集群中正常存活的节点

 

 把新添加的6008节点设置6007节点的从节点

#连接6008节点
redis-cli.exe -a redis@123 -c -h 127.0.0.1 -p 6008


#把6008设置为6007的从节点
cluster replicate 6011881505a0a70778c191548021b1340db3d00e   

#6011881505a0a70778c191548021b1340db3d00e为6007节点ID

查询集群信息,6008已变成6007节点的从节点

##查看
cluster nodes

集群收缩,移除6007主节点和6008从节点

#首先移除6008从节点
redis-cli.exe -a redis@123 --cluster del-node 127.0.0.1:6008 ccabb81d9fc74ed1b1e94c7305007d096d6d9eb5

#ccabb81d9fc74ed1b1e94c7305007d096d6d9eb5  为6008从节点ID 

注意如果6008节点已打开,需要关闭后才能移除掉。

查看集群信息

##查看集群信息
cluster nodes

移除主节点6007的插槽

##移除主节点6007的插槽
##首先要把主节点的插槽还回到集群中去,
redis-cli.exe -a redis@123 --cluster reshard 127.0.0.1:6007

回车确认,提示要移除多少个插槽,这里移除所有100个,输入100

回车确认,提示说输入一个接受节点ID,这里输入存活的主节点任何一个ID即可

 回车确认,提示输入源节点,即是6007节点ID

 输入all或done,回车确认,我这里输入done看看效果,前面分配的时候输入all,会输出移除的节点信息

 输入yes ,回车移除完成

删除主节点6007

#首先移除6007主节点
redis-cli.exe -a redis@123 --cluster del-node 127.0.0.1:6007 6011881505a0a70778c191548021b1340db3d00e

#6011881505a0a70778c191548021b1340db3d00e  为6007从节点ID 

查看集群信息,发现主节点6007没有了

##查看集群信息
cluster nodes

最后题外话:redis5.0.14.1 修复版本cluster 集群模式会出现以下问题,因此我又恢复到redis5.0.14

Reading the configuration file, at line 0


>>> '(null)'


 replicaof directive not allowed in cluster mode


fork operation failed

猜你喜欢

转载自blog.csdn.net/u010784529/article/details/125178984