Redis Sentinel端口绑定失败求助(WSL2 Ubuntu环境)
Redis Sentinel启动端口占用报错排查方案
报错信息
616:X 04 Dec 2023 21:59:04.445 # Warning: Could not create server TCP listening socket *:26380: bind: Address already in use
616:X 04 Dec 2023 21:59:04.445 # Failed listening on port 26380 (tcp), aborting.
环境与问题背景
- Windows 10系统,通过WSL2创建3个Ubuntu实例
- Redis主从架构运行正常,但启动Slave节点的Sentinel时触发上述端口占用报错
- 已尝试操作:修改Windows防火墙设置(关闭防火墙、添加26380入站规则)、将sentinel.conf端口从26379改为26380、重启Redis服务,均未解决问题
当前sentinel.conf关键配置
sentinel monitor ecomm 172.26.75.225 6379 2 port 26380
排查与解决步骤
1. 检查WSL2实例内部端口占用
在报错的Ubuntu实例中执行以下命令,确认是否有进程占用26380端口:
# 方式一 netstat -tulpn | grep 26380 # 方式二(更高效) ss -tulpn | grep 26380
若输出显示存在占用进程,执行kill -9 <PID>强制终止对应进程,再重新启动Sentinel。
2. 检查Windows主机侧端口占用
WSL2与Windows共享网络栈,可能Windows本地进程占用了26380端口:
- 打开Windows命令提示符(CMD),执行:
netstat -ano | findstr ":26380"
- 找到输出中的PID,打开任务管理器,通过PID定位并结束对应进程。
3. 调整Sentinel绑定地址
默认配置中Sentinel监听所有地址(*),可能引发网络冲突。修改sentinel.conf,指定绑定当前Slave实例的WSL内部IP:
bind 你的WSL实例内部IP(如172.26.XX.XX) port 26380
修改后重启Sentinel服务。
4. 清理WSL2端口转发残留规则
WSL2会自动生成端口转发规则,可能存在残留导致冲突:
- 在Windows CMD中执行,查看所有端口转发规则:
netsh interface portproxy show all
- 若发现与26380相关的规则,执行以下命令删除:
netsh interface portproxy delete v4tov4 listenport=26380 listenaddress=0.0.0.0
5. 重置WSL2网络状态
若以上步骤无效,尝试重启WSL2实例:
# 关闭所有WSL实例 wsl --shutdown # 重新启动目标Ubuntu实例 wsl -d 你的Ubuntu实例名称
重启后再尝试启动Sentinel。
内容的提问来源于stack exchange,提问作者Tejaswita
相关产品推荐
相关产品推荐

