本地IDEA启动nacos后,服务注册的时候报错怎么办?

有没有大佬本地IDEA启动nacos后,遇到过同样的问题,本地IDEA源码启动后,服务注册的时候报错
```2024-02-02 12:15:47.024 ERROR 9900 [] [main] com.alibaba.nacos.common.remote.client Connection is unregistered, switch server, connectionId = 1706847342345_xxxx_57162, request = SubscribeServiceRequest
2024-02-02 12:15:47.024 INFO 9900 [] [com.alibaba.nacos.client.remote.worker] com.alibaba.nacos.common.remote.client [f2199a1e-6949-4aa8-961f-a54e9e8b29eb] Try to reconnect to a new server, server is not appointed, will choose a random server.
2024-02-02 12:15:47.129 ERROR 9900 [] [com.alibaba.nacos.client.naming.updater.0] com.alibaba.nacos.common.remote.client Send request fail, request = ServiceQueryRequest{headers={accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcwNjg2NTM0Mn0.dWQQLfpJwfdd5JD-d8Dm14YtADuWOe8AE8AIGrurBdY, app=unknown}, requestId='null'}, retryTimes = 0, errorMessage = Client not connected, current status:UNHEALTHY
2024-02-02 12:15:47.129 ERROR 9900 [] [main] com.alibaba.nacos.common.remote.client Send request fail, request = SubscribeServiceRequest{headers={}, requestId='null'}, retryTimes = 0, errorMessage = Connection is unregistered.
2024-02-02 12:15:47.136 ERROR 9900 [] [main] com.alibaba.cloud.nacos.discovery.NacosWatch namingService subscribe failed, properties:NacosDiscoveryProperties{serverAddr='xxxx:8848', username='nacos', password='nacos', endpoint='', namespace='vecs-v2-dev-qjx', watchDelay=30000, logName='', service='xxxx', weight=1.0, clusterName='DEFAULT', group='DEFAULT_GROUP', namingLoadCacheAtStart='false', metadata={preserved.register.source=SPRING_CLOUD, management.endpoints.web.base-path=/monitor, management.context-path=/vecs-monitor}, registerEnabled=true, ip='10.2.76.101', networkInterface='', port=-1, secure=false, accessKey='', secretKey='', heartBeatInterval=null, heartBeatTimeout=null, ipDeleteTimeout=null, instanceEnabled=true, ephemeral=true, failureToleranceEnabled=false}, ipDeleteTimeout=null, failFast=true}

com.alibaba.nacos.api.exception.NacosException: Request nacos server failed:
at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.requestToServer(NamingGrpcClientProxy.java:290)
at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.doSubscribe(NamingGrpcClientProxy.java:230)
at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.subscribe(NamingGrpcClientProxy.java:215)
at com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate.subscribe(NamingClientProxyDelegate.java:147)
at com.alibaba.nacos.client.naming.NacosNamingService.subscribe(NacosNamingService.java:393)
at com.alibaba.cloud.nacos.discovery.NacosWatch.start(NacosWatch.java:132)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178)
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54)
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356)
at java.lang.Iterable.forEach(Iterable.java:75)
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155)
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:745)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:420)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
at cn.enn.vecs.resource.VecsResourceApplication.main(VecsResourceApplication.java:15)
Caused by: com.alibaba.nacos.api.exception.NacosException: Connection is unregistered.
at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:669)
at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:630)
at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.requestToServer(NamingGrpcClientProxy.java:280)
... 20 common frames omitted
```

4ad00eaa23a65c81c28352c1347e7ac1.png

展开
收起
你鞋带开了~ 2024-02-06 15:23:42 454 分享 版权
阿里云 AI 助理回答

根据您提供的错误日志和知识库中的相关资料,以下是针对问题的详细分析和解决方案:


问题分析

从错误日志中可以看出,Nacos客户端在尝试连接Nacos服务端时出现了以下问题: 1. 连接未注册Connection is unregisteredClient not connected, current status:UNHEALTHY 表明客户端与服务端之间的连接未能成功建立。 2. 服务订阅失败namingService subscribe failed 表明客户端在尝试订阅服务时失败。 3. 网络或配置问题:日志中提到 Try to reconnect to a new server,说明客户端可能无法正确连接到Nacos服务端。

结合知识库中的信息,可能的原因包括: - 网络连通性问题:客户端与Nacos服务端之间的网络不通。 - Nacos服务端状态异常:服务端可能正在重启或存在非正常节点。 - 配置错误:客户端配置的Nacos服务端地址、命名空间(namespace)、用户名或密码等信息不正确。


解决方案

步骤 1:检查网络连通性

  1. 确保本地IDEA启动的Nacos服务端能够被客户端访问。

    • 使用 TelnetPing 工具测试客户端与Nacos服务端之间的网络连通性。例如:
      telnet <Nacos服务端IP> 8848
      
    • 如果无法连接,请检查防火墙规则或网络配置。
  2. 如果使用的是公网连接,请确保公网IP和端口已正确开放;如果是内网连接,请确认客户端和服务端处于同一个VPC内。


步骤 2:验证Nacos服务端状态

  1. 登录Nacos控制台,检查服务端是否正常运行。

    • 默认登录地址为:http://127.0.0.1:8848/nacos,默认用户名和密码均为 nacos
    • 在左侧导航栏选择 服务管理 > 服务列表,确认目标服务是否已注册。
  2. 检查Nacos服务端节点状态:

    • 登录MSE注册中心控制台(如果适用)。
    • 在左侧导航栏选择 注册配置中心 > 实例列表,单击目标实例名称。
    • 基础信息 > 实例节点 区域查看各节点状态是否为 运行中
  3. 如果发现有非正常节点,请等待2~3分钟观察是否恢复。如果长时间未恢复,请提工单处理。


步骤 3:检查客户端配置

  1. Nacos服务端地址

    • 确认 application.properties 文件中配置的 spring.cloud.nacos.discovery.server-addr 是否正确。例如:
      spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
      
    • 如果Nacos服务端部署在其他机器上,请替换为对应的IP地址。
  2. 命名空间(Namespace)

    • 确认 namespace 配置是否正确。例如:
      spring.cloud.nacos.discovery.namespace=vecs-v2-dev-qjx
      
    • 如果未指定命名空间,默认会使用公共命名空间。
  3. 用户名和密码

    • 如果Nacos服务端启用了鉴权功能,请确保配置了正确的用户名和密码。例如:
      spring.cloud.nacos.discovery.username=nacos
      spring.cloud.nacos.discovery.password=nacos
      
  4. 其他配置项

    • 确认 groupclusterName 等配置是否符合预期。例如:
      spring.cloud.nacos.discovery.group=DEFAULT_GROUP
      spring.cloud.nacos.discovery.cluster-name=DEFAULT
      

步骤 4:检查日志文件

  1. 查看Nacos客户端日志文件 ${user_home}/logs/nacos/config.log,判断是否存在网络问题或其他异常。
  2. 如果日志中显示连接超时或拒绝连接,请重新检查网络配置。

步骤 5:验证服务注册

  1. 启动 nacos-service-provider 应用程序,确保服务能够成功注册到Nacos。

    • 登录Nacos控制台,检查 服务管理 > 服务列表 中是否显示目标服务。
  2. 启动 nacos-service-consumer 应用程序,验证服务调用是否成功。

    • 在浏览器中访问以下地址,确认返回结果是否符合预期:
      http://127.0.0.1:18082/echo-feign/helloworld
      

重要提醒

  • 启动参数配置:如果使用自建Nacos服务注册中心,请确保在应用启动时添加以下参数:

    -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false
    

    注意:这些参数必须放在 -jar 命令之前,否则可能导致无法使用非SAE自带的注册中心。

  • 端口占用问题:如果使用Cloud Toolkit启动本地注册中心,请确保8080、8848和9600端口未被占用。


总结

通过以上步骤,您可以逐步排查并解决Nacos客户端连接失败的问题。如果问题仍未解决,请提供更详细的日志信息以便进一步分析。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:

为微服务建设降本增效,为微服务落地保驾护航。

还有其他疑问?
咨询AI助理