微服务项目部署后无法连接上Nacos服务报错 Server check fail

在Docker中部署微服务时遇到无法连接Nacos的问题,原因是服务注册使用了内网IP而非公网IP。解决方案包括在配置中指定服务器公网IP或在启动命令中使用--net=host参数以利用宿主机IP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

使用docker部署一个微服务启动时,发现连接不上nacos,微服务无法读取到nacos报错导致启动失败。


问题描述

c.a.n.c.remote.client.grpc.GrpcClient    : Server check fail, please check server XXX.X.XXX.XXX ,port XXX is available , error ={}

java.util.concurrent.TimeoutException: Waited 3000 milliseconds (plus 259427 nanoseconds delay) for com.alibaba.nacos.shaded.io.grpc.stub.ClientCalls$GrpcFuture@442675e1[status=PENDING, info=[GrpcFuture{clientCall={delegate={delegate=ClientCallImpl{method=MethodDescriptor{fullMethodName=Request/request, type=UNARY, idempotent=false, safe=false, sampledToLocalTracing=true, requestMarshaller=com.alibaba.nacos.shaded.io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller@6166e06f, responseMarshaller=com.alibaba.nacos.shaded.io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller@49e202ad, schemaDescriptor=com.alibaba.nacos.api.grpc.auto.RequestGrpc$RequestMethodDescriptorSupplier@1c72da34}}}}}]]


原因分析:

微服务启动时会将服务信息注册到Nacos上,但由于Nacos服务注册的IP选择时,选择了注册为内网IP导致无法和宿主机暴露的公网IP端口通讯,无法连接和注册到nacos上,导致服务启动失败。


解决方案:

1.声明服务实例为公网IP

spring:
  cloud:
    nacos:
      discovery:
        #你的服务器公网IP
        ip: XXX.X.X.XXX 

2.采用Host模式

在启动命令添加--net=host 使用宿主机的ip地址。

docker run --name XXXX --net=host 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄鸭技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值