手工创建三节点Redis集群

文章目录

    • 手工创建三节点集群
      • 配置三几个几点
      • 启动节点
      • 加入集群
      • 指派slots
      • 查看集群状态ok
      • redis cluster info显示cluster_state:fail解决方案

手工创建三节点集群

这里我们手工创建三节点集群,至少我们是可以自己设置多少个节点的。
脚本创建需要至少6个节点,具体参考如下
https://www.cnblogs.com/zhaoyongjie-z/p/12577972.html
https://blog.csdn.net/zjcjava/article/details/85256156

配置三几个几点

  • 在安装目录创建三个文件夹6379,6378,6377
  • 然后把redis.windows.conf文件拷进这三个文件夹中去,修改端口为对应的文件夹名
port 6379 //端口
cluster-enabled yes  //开启集群
cluster-config-file nodes.conf  //节点配置
cluster-node-timeout 5000 //集群超时
appendonly yes //启用AOF持久化策略

启动节点

启动3个节点:redis-server redis.conf ,确保该目录下没有AOF RDB文件,否则不能加入集群

依次创建服务,我们需要后台运行


服务配置启动
D:\tools\redis-latest\redis-server.exe --service-install D:\tools\redis-latest\6377\redis.windows.conf --service-name redis6377
D:\tools\redis-latest\redis-server.exe --service-install D:\tools\redis-latest\6378\redis.windows.conf --service-name redis6378
D:\tools\redis-latest\redis-server.exe --service-install D:\tools\redis-latest\6379\redis.windows.conf --service-name redis6379

启动服务
D:\tools\redis-latest\redis-server.exe --service-start --service-name Redis6378
D:\tools\redis-latest\redis-server.exe --service-start --service-name Redis6379
D:\tools\redis-latest\redis-server.exe --service-start --service-name Redis6377

加入集群

登录主节点,并加载其他节点通信


redis-cli.exe  -h 127.0.0.1 -p 6379
127.0.0.1:6379> cluster meet 127.0.0.1 6378
OK
127.0.0.1:6379> cluster meet 127.0.0.1 6377
OK
127.0.0.1:6379> cluster nodes
bca1c55dac0392cf13af6d306996632ff90d3a82 127.0.0.1:6377 master - 0 1611636668398 0 connected 10001-16383
7588f906dd9420f53c44c960ac89a510b2f549bf 127.0.0.1:6378 master - 0 1611636667325 2 connected 5001-10000
302bb2c5b3a568337378f4e2cf25959b1382b5ec 127.0.0.1:6379 myself,master - 0 0 1 connected 0-5000
 

指派slots

所有的slots必须全部分配完毕,漏掉一个都不行,你有几个节点就平均分配就可以了,比如这里是16383/3,剩下的分配到最后一个节点上

这里我们使用CMD脚本执行,命名为6379.bat

@echo off 
for /l %%i in (0,1,5000) do   redis-cli -h 127.0.0.1 -p 6379 cluster addslots  %%i 
pause

这里我们使用CMD脚本执行,命名为6378.bat

@echo off 
for /l %%i in (5001,1,10000) do   redis-cli -h 127.0.0.1 -p 6378 cluster addslots  %%i 
pause

这里我们使用CMD脚本执行,命名为6377.bat

@echo off 
for /l %%i in (10001,1,16383) do   redis-cli -h 127.0.0.1 -p 6377 cluster addslots  %%i 
pause

依次执行,前提是三台服务都启动了

查看集群状态ok

登录其中一个节点查看集群状态cluster_state:ok说明可以了,如果不行,说明你的slotes分配有问题,

127.0.0.1:6379> cluster info

redis cluster info显示cluster_state:fail解决方案

查看错误状态:


127.0.0.1:7000> get name
(error) CLUSTERDOWN The cluster is down
127.0.0.1:7000> cluster info
cluster_state:fail
cluster_slots_assigned:16380
cluster_slots_ok:16380
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:8
cluster_my_epoch:1
cluster_stats_messages_sent:1007
cluster_stats_messages_received:1005

找到缺少的slot分别为11992、12382、14041、14386

解决方法: 将一个或多个槽(slot)指派(assign)给当前节点
cluster addslots 11992 12382 14041 14386

你可能感兴趣的:(#,redis,redis,slots,cluster)