redis - Redis 集群添加节点失败并显示 [ERR] 并非所有 16384 个插槽都被节点覆盖
问题描述
我有 6 个节点(3 个主节点,3 个从节点)的 Redis 集群。我试图添加额外的主从:
redis-cli --cluster add-node 100.96.1.11:6379 100.96.2.14:6379
我有
redis-cli --cluster add-node 100.96.1.11:6379 100.96.2.14:6379
>>> Adding node 100.96.1.11:6379 to cluster 100.96.2.14:6379
>>> Performing Cluster Check (using node 100.96.2.14:6379)
M: 9d91c8d60c4c644a7846829f91f1af8563bf99f9 100.96.2.14:6379
slots: (0 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[ERR] Not all 16384 slots are covered by nodes.
同时检查集群是否正常:
redis-cli --cluster check 100.96.1.5:6379
100.96.1.5:6379 (d475435a...) -> 36265 keys | 5462 slots | 1 slaves.
100.96.1.7:6379 (fd44a251...) -> 36205 keys | 5461 slots | 1 slaves.
100.96.2.13:6379 (00cc3a8b...) -> 36069 keys | 5461 slots | 1 slaves.
[OK] 108539 keys in 3 masters.
6.62 keys per slot on average.
>>> Performing Cluster Check (using node 100.96.1.5:6379)
M: d475435a6e70a5603f046f743f7774e6eead6afe 100.96.1.5:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 2c66b6ab6ebacd6054371bdc5d39aa08c48f76b5 100.96.1.10:6379
slots: (0 slots) slave
replicates 00cc3a8ba8cae1b539e172be01333b6f5fb2631a
M: fd44a251ce75c92049d1a5c748a8e52c2b0763e0 100.96.1.7:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
M: 00cc3a8ba8cae1b539e172be01333b6f5fb2631a 100.96.2.13:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: edcacf3cd1de6c5d9a3108211c7b84676b2cddca 100.96.2.9:6379
slots: (0 slots) slave
replicates fd44a251ce75c92049d1a5c748a8e52c2b0763e0
S: e6cea582a6d6a9c726d36d2899c9fbf4a7e08909 100.96.2.6:6379
slots: (0 slots) slave
replicates d475435a6e70a5603f046f743f7774e6eead6afe
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
怎么了?
解决方案
要将新节点添加到 Redis 集群,我们应该使用命令:
redis-cli --cluster add-node <new-node-ip:port> <existing-node-ip:port>
就我而言,有两个新节点的 IP。因此,如果我们需要添加两个新节点作为主节点和从节点,我们应该运行此命令两次,但--cluster-slave
对从节点使用标志:
redis-cli --cluster add-node <new-node-ip:port> <existing-node-ip:port>
redis-cli --cluster add-node <new-node-ip:port> <existing-node-ip:port> --cluster-slave
之后,我们应该重新分片 Redis 集群:
redis-cli --cluster reshard <existing-node-ip:port>
推荐阅读
- ruby-on-rails - 如何修复未定义的方法“path_for”#
我正在设置一个帐户配置文件系统,我想在我的 rails 应用程序中支持一个带有 active_storage 的头像。我期待看到我的头像,但我得到了这个broken_pics
- matlab - 无法将 MATLAB y 轴转换为乳胶格式
- java - 如何在启动时启动 Android 应用程序
- android - 启动 android/ios 活动表单平台特定代码
- java - Android 通知未在 Oreo 上显示
- python - Queryset上的Django forloop返回相同的用户
- docker - 无法使用 ClusterIP 将 Python 应用程序连接到 Kube pod 中的 RabbitMQ
- python - 暂停 python 脚本,直到创建另一个程序中的环境变量
- lua - 是否可以从 C 调用 require
- .htaccess - 我可以在地址栏中保留我的 URL 的同时将用户重定向到 Google Drive PDF 吗?