项目场景:
使用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上,导致服务启动失败。文章来源:https://www.toymoban.com/news/detail-517446.html
解决方案:
1.声明服务实例为公网IP
spring:
cloud:
nacos:
discovery:
#你的服务器公网IP
ip: XXX.X.X.XXX
2.采用Host模式
在启动命令添加--net=host 使用宿主机的ip地址。文章来源地址https://www.toymoban.com/news/detail-517446.html
docker run --name XXXX --net=host
到了这里,关于微服务项目部署后无法连接上Nacos服务报错 Server check fail的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!