You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成Consul启动失败:Connection Refused错误排查求助

解决Spring Boot集成Consul时的Connection Refused错误

看起来你的应用在尝试连接Consul服务的localhost:8090端口时被拒绝了,虽然你已经修改了Spring Boot应用的端口,且同端口的普通应用能正常运行,但问题应该出在Consul服务本身或者你的Consul配置上,我给你梳理几个排查方向:

  • 先确认Consul服务是否正常运行在8090端口
    首先得排除最基础的问题:Consul有没有启动?有没有在8090端口监听?

    • 你可以用命令检查端口占用:Windows下用netstat -ano | findstr :8090,Linux/macOS用lsof -i :8090或者ss -tulpn | grep :8090,看看是否有Consul的进程在使用这个端口。
    • 如果Consul没启动,先启动Consul;如果Consul启动了但不在8090端口,那要么修改Consul的启动参数(比如启动时加consul agent -dev -http-port 8090),要么调整Spring Boot的配置去连接Consul实际的端口。
  • 核对Spring Boot中Consul的配置是否正确
    注意区分应用自身的端口和Consul服务的端口,你修改的server.port是应用自己的端口,但Consul的连接配置是独立的:
    打开你的bootstrap.properties,确认是否有正确配置Consul的地址和端口:

    # 这是应用自身的端口,和Consul无关
    server.port=你的应用端口
    # 这才是连接Consul的配置,要和Consul实际运行的端口一致
    spring.cloud.consul.host=localhost
    spring.cloud.consul.port=8090
    

    别把这两个配置搞混了——如果只改了server.port,没配置spring.cloud.consul.port,应用会默认去连Consul的8500端口,这也会导致连接失败。

  • 排查防火墙或权限问题
    虽然同端口的普通应用能运行,但Consul可能被防火墙拦截了:

    • Windows下检查防火墙是否允许Consul的8090端口通信;Linux下看看iptables或ufw规则是否限制了该端口。
    • 另外,Consul启动时需要足够的权限绑定端口,如果是非root用户启动Consul,绑定1024以下的端口会失败,但8090是高位端口,这个可能性较低,但也可以留意Consul启动日志里的报错。
  • 查看Consul的启动日志
    启动Consul时仔细看日志,如果有类似Failed to listen on 0.0.0.0:8090的报错,说明端口被其他进程占用(但你说同端口的应用能跑,那可能是Consul启动时的冲突?)或者没有权限绑定,这时候需要排查端口占用情况。

先从这几个方向入手,应该能定位到问题所在。

内容的提问来源于stack exchange,提问作者Ayman Arif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:21:32