redis创建集群时卡在Waiting for the cluster to join......的解决方法

Redis集群搭建“卡住”之谜:从“Waiting for the cluster to join”到端口全解析 本文深入解析Redis集群搭建过程中常见的'Waiting for the cluster to join'问题,揭示其根本原因是集群总线端口未开放。详细介绍了Redis的双端口机制,包括客户端端口和集群总线端口的作用及计算规则,并提供了完整的故障排查指南和集群搭建最佳实践,帮助开发者高效解决Redis集群部署难题。 阅读详情

1.问题引入

今天使用docker来部署redis集群时,发现命令执行一直卡住

redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
/data # redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 172.38.0.15:6379 to 172.38.0.11:6379
Adding replica 172.38.0.16:6379 to 172.38.0.12:6379
Adding replica 172.38.0.14:6379 to 172.38.0.13:6379
M: 0c6b4100491f58e7a6307140fe75a311d18a8ca2 172.38.0.11:6379
   slots:[0-5460] (5461 slots) master
M: 9e00fce0f3d46a84e90a345e0a49bd3b6b83f0de 172.38.0.12:6379
   slots:[5461-10922] (5462 slots) master
M: a9ee9a3f378c96122464acf266eaa4d5a461dc06 172.38.0.13:6379
   slots:[10923-16383] (5461 slots) master
S: e3a33f10cf128eceeb392d472c9f5e4f5cf05fce 172.38.0.14:6379
   replicates a9ee9a3f378c96122464acf266eaa4d5a461dc06
S: d519e4a874ce61465653d468dc7e6c64b7c3b573 172.38.0.15:6379
   replicates 0c6b4100491f58e7a6307140fe75a311d18a8ca2
S: 16817240277c5e1a5ad7d92421d3c9626ed80c89 172.38.0.16:6379
   replicates 9e00fce0f3d46a84e90a345e0a49bd3b6b83f0de
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
...........................................................................

2.解决方案

检查redis的配置文件,这里我的配置文件是使用shell脚本写的,如下:

for port in $(seq 1 6);\
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
appendonly yes
EOF
done

发现配置文件中虽然开放了客户端访问端口6379,但是没有开放总线端口,总线端口的port是在原客户端访问端口的基础上加10000,用于redis集群间的通信,因此我们需要在shell脚本中添加一行

cluster-announce-bus-port 16379

重新运行shell脚本,更新reids的配置,再运行启动redis的脚本即可,代码如下:

for port in $(seq 1 6);\
do \
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
done
Redis6集群安装及其扩容缩容 移除master相对麻烦,因为主节点的里面是有分配了hash槽的,所以必须先把hash槽放入到其他的可用主节点中去,然后再进行移除节点操作,不然会出现数据丢失问题。上一步骤中创建的集群仅有master节点,需添加slave节点实现高可用,手动添加slave以实现和master不同主机,避免主机故障时,主从节点同时挂掉.前文安装的Ruby在Redis6属于无用功。因为主节点的里面是分配了hash槽,所以必须先把8006里的hash槽放入到其他的可用主节点中去,然后再进行移除节点操作,否则会出现数据丢失问题。 阅读详情

相关推荐

Docker搭建Redis-cluster集群实践以及遇到问题Waiting for the cluster to join...

Docker搭建Redis-cluster集群 编写Redis配置文件 #创建目录 mkdir -p /usr/local/docker-redis/redis-cluster #切换至指定目录 cd /usr/local/docker-redis/redis-cluster/ #编写 redis-cluster.tmpl 文件 vi redis-cluster.tmpl port ${PORT} #开放端口访问 bind 0.0.0.0 #秘密访问 requirepass root master

qq_23079879的博客 1777

Waiting for the cluster to join..

假如现在有3台机器信息如下: A 192.168.131.1 1111(Master) 1112(Slave) B 192.168.131.2 2221(Master) 2222(Slave) C 192.168.131.3 3331(Master) 3332(Slave) 在3主3从的redis-cluster配置过程中,如果出现了,Waiting for t...

impressionw的博客 11万+

2021年全国职业院校技能大赛高职组网络系统管理赛项

S1 Ruijie(config)#switch virtual domain 1 Ruijie(config-vs-domain)#switch 1 Ruijie(config-vs-domain)#switch 1 priority 150 Ruijie(config-vs-domain)#switch 1 description S1 Ruijie(config-vs-domain)#exit Ruijie(config)#vsl-port Ruijie(config-vsl-port)#po

bfq05234214的博客 1133

【已解决】Waiting for the cluster to join 长时间没有反应

Redis集群部署主从时Waiting for the cluster to join 长时间没有反应

lushixuan12345的博客 2278

Keil5调试遇坑记:手把手解决J-Link驱动与固件版本冲突(附老版本驱动包)

本文详细解析了Keil5与J-Link调试器版本冲突问题,特别是当出现'The connected J-Link is defective'警告时的解决方案。通过对比升级固件与降级驱动的优缺点,提供了详细的J-Link驱动降级操作指南,包括获取老版本驱动、替换步骤及常见问题排查,帮助开发者高效解决这一常见调试障碍。

metaverse5vr的博客 106

【深度剖析】三一重工的数字化转型(中篇)

三一重工在数字化转型方面取得了提高效率、降低成本、加强研发创新和改善内控管理等多方面的成效。本研究旨在通过对三一重工数字化转型的深入分析,引导企业思考在第四次工业革命与第三次能源革命交汇的超级技术窗口期,如何进一步把握发展机遇,并为同行业其他企业提供探索性的建议。作为装备制造行业的佼佼者,三一重工的数字化转型受到了业界的广泛关注。作为行业内首批接触并实践数字化转型的企业之一,三一重工的转型经验不仅成功,而且积累了丰富的理论与实践,为其他制造业企业的数字化转型提供了可借鉴的范例。

领信卓越的博客 2304

【已解决】redis集群创建的时候一直卡在Waiting for the cluster to join ....上、一直没有反应

redis集群创建的时候一直卡在。

slience_me的博客 3033

802.1AS时间同步机制深度解析:从Sync报文到多域冗余设计

本文深度解析了802.1AS时间同步机制,从Sync与Follow_Up报文的核心交互原理入手,详细阐述了其如何通过精确的时钟频率比测量、链路延迟计算和驻留时间补偿来实现微秒乃至纳秒级同步。文章进一步探讨了802.1AS-2020版本引入的多时钟域冗余设计,为构建高可靠的车载TSN网络提供了关键见解和实战配置指南。

pytorch8learner的博客 457

搭建Redis集群遇到的问题:Waiting for the cluster to join~~~

搭建Redis集群的过程中,执行到cluster create : … 的时候,发现程序在阻塞,显示:Waiting for the cluster to join 的字样,然后就无休无尽的等待… 根据字样的提示,在等待集群的创建。嗯?这是什么原因?大部分情况下这是因为集群通信的端口没有开放! 先说下解决方案: 开放Redis服务的两个TCP端口。譬如Redis客户端连接端口为6379,而Redis服务在集群中还有一个叫集群总线端口,其端口为客户端连接端口加上10000,即 6379 + 10000 =

胖太乙 1万+

手把手保姆级|Python爬取微信公众号文章完整版,反反爬策略拉满,附可运行完整代码(永久可用)

做Python爬虫的朋友都知道,爬取微信公众号文章 绝对是爬虫领域的「香饽饽」也是「硬骨头」。一方面,微信公众号的文章是极具价值的数据源:不管是自媒体从业者做竞品分析、新媒体运营者整理干货、还是个人学习收集资料,都需要批量爬取公众号文章;另一方面,微信的反爬机制堪称全网最严苛之一 ——腾讯对微信生态的风控做到了极致,动态渲染页面、高频IP封禁、Cookie短时效失效、请求头严格校验、自动化工具秒识别、频繁请求直接拉黑,这些反爬手段让90%的爬虫新手望而却步:要么爬了几篇就被封IP,要么Cookie失效爬取中

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2623

权重衰减weight_decay参数从入门到精通

Weight Decay是一个正则化技术,作用是**抑制模型的过拟合**,以此来提高模型的泛化性。 目前网上对于Weight Decay的讲解都比较泛,都是短短的几句话,但对于其原理、实现方式大多就没有讲解清楚,本文将会逐步解释weight decay机制。

iioSnail的博客 4万+

docker 在多机器上进行redis集群搭建(解决Waiting for the cluster to join)

docker 在多机器上进行redis集群搭建(解决Waiting for the cluster to join)

席__的博客 9万+

Python学习第32天:Web前端入门

本文介绍了Web前端开发三大核心技术:HTML、CSS和JavaScript。首先概述了HTML的发展历程和HTML5新特性,详细讲解了常用HTML标签如文本、列表、链接、图像、表格、表单等。其次介绍了CSS的基础语法、选择器、颜色字体设置、盒子模型和布局定位方法。最后简要提及JavaScript为网页添加交互功能的作用。文章为Python开发者提供了前端技术的基础知识,帮助理解网页的结构、样式和行为实现原理。

tigerhhzz的博客 1910

Docker部署Redis Cluster时 Waiting for the cluster to join太长时间

Docker部署Redis Cluster时 Waiting for the cluster to join太长时间,问题排查、解决 编写docker-compose.yaml文件去部署Redis集群

小镇cxy 918

STM32+FreeRTOS环境下LwIP协议栈移植详解

本文详细介绍了在STM32F407ZGT6平台上移植轻量级TCP/IP协议栈LwIP的过程。使用FreeRTOS操作系统和LAN8720A以太网PHY芯片,通过STM32CubeMX生成基础工程配置。重点包括LwIP源码的获取与工程集成、关键配置文件的编写(如lwipopts.h)、操作系统适配层sys_arch.c的实现,以及以太网接口驱动ethernetif.c的移植。文章特别强调内存管理、中断优先级、硬件校验和等关键配置项的注意事项,为基于STM32和LwIP的嵌入式网络开发提供了实用参考。

电脑管家 751

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

基于Docker搭建Redis集群,以及Waiting for the cluster to join等问题分析、解决

基于Docker搭建Redis集群,以及槽位问题分配等问题解决前言一、Redis集群搭建1.拉取镜像2.创建6个Redis节点3.初始化Redis节点二、搭建问题问题1.Waiting for the cluster to join2.开启认证3.开启AOF三、获取镜像详细信息总结 前言 该篇博文,主要介绍如何基于Docker搭建Redis集群,以及解决Redis集群搭建过程中,"Waiting for the cluster to join"环节阻塞等问题。 一、Redis集群搭建 1.拉取镜像 通过do

weixin_46053046的博客 4250

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

centos7创建redis集群一直卡在Waiting for the cluster to join

redis集群创建的时候,一直卡在Waiting for the cluster to join ....上、一直没有反应。 问题: 机器没有开放redis集群总线端口。 解决方法: 开放redis集群总线端口。 集群总线端口是redis客户端连接的端口+10000。 如:redis客户端端口是7001。 则:集群总线端口就是17001。 注意、所以redis集群机器都要放开对应的...

逝唁的博客 3587

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

redis构建集群时,一直Waiting for the cluster to join

但是,您可以通过阅读 Redis 集群源代码中的 cluster.h 和 cluster.c 文件来获取有关集群总线协议的更多详细信息。如果 Redis 节点正在监听端口 6379 上的客户端连接,并且您在 redis.conf 中设置 cluster-port 20000,则将打开集群总线端口 20000。如果 Redis 节点正在监听端口 6379 上的客户端连接,并且您未在 redis.conf 中添加 cluster-port 参数,则将打开集群总线端口 16379。但是出现上面的情况。

不做菜虚困的博客 1393

redis故障处理Waiting for the cluster to join一直加载

Redis集群连接问题解决方案:1.开放集群总线端口(Redis端口+10000);2.若报错连接失败,检查是否注释redis.conf中的bind 127.0.0.1;3.解决步骤:停止集群→删除节点配置文件→修改配置→重启集群。注意服务端IP应设为实际服务器IP而非127.0.0.1,否则可能导致远程连接失败。

QAQqazwsx的博客 766

创建Redis分片集群时,Waiting for the cluster to join卡住

创建Redis分片集群时,Waiting for the cluster to join卡住很久无反应。

weixin_43378573的博客 1352

redis集群出现Waiting for the cluster to join

Waiting for the cluster to join......... 解决方法: windows本地redis集群出现Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join..............卡主不断打点在控制台,试过ip改成外网的,试过关闭防火墙都没效果,而且...

qq_30908729的博客 4838

配置redis集群时一直是Waiting for the cluster to join.....

@TOC 配置redis集群时一直是Waiting for the cluster to join… 为什么会发生这种问题 检查自己是否只开启一个端口,因为Redis集群端口需要了个两个,一个是客户端去连接的客户端通信端口(比如6379),而另一个是redis进行操作的集群总线端口(客户端通信端口+10000),固定值10000,这两个连通才能使用集群。 详细学习 客户端通信端口:客户可以通过此端口,去进行操作 集群总线端口:任意的结点通过这个端口,去储存数据 如果去解决这个问题 我用的的是阿里云的服务器

weixin_45851575的博客 1892

Redis创建集群时出现“Waiting for the cluster to join“长时间等待

Redis创建集群时出现"Waiting for the cluster to join"长时间等待

woxinzhihen的博客 589

Redis集群长时间连接不上问题Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join

redis集群长时间无法连接,长时间waiting for the cluster to join问题

Buyi的博客 3524

【解决】Waiting for the cluster to join...配置redis集群时的坑

>>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join .............................................................

杨大仙 3399

项目实训 : redis集群部署一直卡在Waiting for the cluster to join

redis集群部署一直卡在Waiting for the cluster to join 配置Redis集群的时候在最后create cluster时发现一直卡在Waiting for the cluster to join,但是我建立集群的时候已经将每个服务器对应的redis占用的端口在防火墙中开放出去了,不应该有这样的问题才对。 趁点还没有打满屏幕赶紧查看了一下官方文档,文档说除了redis占用的端口(默认为6379)之外,还会占用部署的端口+10000的端口作为集群总线端口,需要将这个端口也在防火墙中

Azisagawa的博客 2284
上一篇: sudo chmod -R 777 /etc命令导致的linux无法ssh连接,sudo命令无法使用问题
下一篇: 【SpringCloud】01认识微服务,了解服务拆分与远程调用
蒲公英的岁月
博客等级 码龄8年 67粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值