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

项目场景:

使用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 

猜你喜欢

转载自blog.csdn.net/weixin_40579395/article/details/127009240