window系统下成功配置单机模式后
可以启动
但是过一会或者访问locahost:8848自动关闭
我们打开nacos/logs文件夹,把log全部删掉再开启一遍,注意不是bin里的log
拉到最下面
意思就是端口被占用了,Nacos2.0版本新增了gRPC通讯方式,还需要两个端口 9849 和 9849
查看端口占用
# windows
netstat -ano | findstr 8848
netstat -ano | findstr 9848
netstat -ano | findstr 9849
# linux
netstat -tunlp | grep 8848
netstat -tunlp | grep 9848
netstat -tunlp | grep 9849
查看是什么进程占用
# windows 命令
tasklist | findstr 14548
# 如果是Linux部署请使用下面这个命令
ps -ef | grep 14548
杀掉进程
# windows 命令
taskkill /F /PID 14548 /T
# Linux 命令
kill -9 [pid]
如果你安装了Hyper-v或者WSL2,很不幸什么都查不出来,Widows 默认把某些端口范围分给了他们,所以没有进程占用但nacos或者springboot启动都显示端口被占用
查看动态端口的端口范围,这是一个待选择范围,并不代表其中的所有端口都会被保留
# tcp
netsh int ipv4 show dynamicportrange protocol=tcp
# udp
netsh int ipv4 show dynamicportrange protocol=udp
查看保留端口范围,即当前所有已经被征用了的端口
# tcp
netsh interface ipv4 show excludedportrange protocol=tcp
# udp
netsh interface ipv4 show excludedportrange protocol=udp
# linux
sudo iptables -L --line-numbers -t filter -p tcp
可以看到9848和9849在保留端口范围内
可以选择关闭hyper-v设置-》应用-》开启或关闭windows功能-》取消hyper-v选项
,显然装hyper-v大概率是需要用docker,我们可以排除需要的端口或者修改TCP 动态端口范围
此操作需要管理员权限
win+r->cmd->Ctrl+Shift+Enter
排除端口
# windows
netsh int ipv4 add excludedportrange protocol=tcp startport=要排除的端口 numberofports=范围
即
netsh int ipv4 add excludedportrange protocol=tcp startport=8848 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=9848 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=9849 numberofports=1
# linux
sudo iptables -A INPUT -p tcp --dport 8848:9849 -j DROP
或者设置保留端口范围
# ipv4
netsh int ipv4 set dynamic tcp start=10000 num=13977
# ipv6
netsh int ipv6 set dynamic tcp start=10000 num=13977
重置
# windows
netsh int ip reset
# linux
sudo systemctl restart network
此时查看tcp动态端口范围
重启!