微服务连接云服务器上的naocs出错

springcloud项目,服务可以连接本地的nacos,但是连接远程的nacos会报错

这里是连接本地正常

img

连接远程报错

img

服务器上的nacos可以正常访问

img

报错信息

com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING
    at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:639) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:619) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.requestToServer(NamingGrpcClientProxy.java:304) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.doUnsubscribe(NamingGrpcClientProxy.java:285) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.unsubscribe(NamingGrpcClientProxy.java:266) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate.unsubscribe(NamingClientProxyDelegate.java:170) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.nacos.client.naming.NacosNamingService.unsubscribe(NacosNamingService.java:428) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.cloud.nacos.discovery.NacosWatch.stop(NacosWatch.java:174) [spring-cloud-starter-alibaba-nacos-discovery-2021.0.4.0.jar:2021.0.4.0]
    at com.alibaba.cloud.nacos.discovery.NacosWatch.destroy(NacosWatch.java:204) [spring-cloud-starter-alibaba-nacos-discovery-2021.0.4.0.jar:2021.0.4.0]
    at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:213) [spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) [spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) [spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) [spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) [spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) [spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1106) [spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:596) [spring-context-5.3.22.jar:5.3.22]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) [spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) [spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) [spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) [spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) [spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) [spring-boot-2.7.3.jar:2.7.3]
    at com.eshore.boc.barCafe.BarCafeApplication.main(BarCafeApplication.java:19) [classes/:na]

[boc-barCafe:132.122.236.56:18002] 2023-06-05 10:31:09.910 INFO 8004 [-] [main] o.a.coyote.http11.Http11NioProtocol      Pausing ProtocolHandler ["http-nio-18002"]
[boc-barCafe:132.122.236.56:18002] 2023-06-05 10:31:09.910 INFO 8004 [-] [main] o.apache.catalina.core.StandardService   Stopping service [Tomcat]
[boc-barCafe:132.122.236.56:18002] 2023-06-05 10:31:09.914 INFO 8004 [-] [main] o.a.coyote.http11.Http11NioProtocol      Stopping ProtocolHandler ["http-nio-18002"]
[boc-barCafe:132.122.236.56:18002] 2023-06-05 10:31:09.916 INFO 8004 [-] [main] o.a.coyote.http11.Http11NioProtocol      Destroying ProtocolHandler ["http-nio-18002"]
[boc-barCafe:132.122.236.56:18002] 2023-06-05 10:31:09.922 INFO 8004 [-] [main] ConditionEvaluationReportLoggingListener 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
[boc-barCafe:132.122.236.56:18002] 2023-06-05 10:31:09.947 ERROR 8004 [-] [main] o.s.boot.SpringApplication               Application run failed

org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'; nested exception is java.lang.reflect.UndeclaredThrowableException
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) ~[spring-context-5.3.22.jar:5.3.22]
    at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_241]
    at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) [spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) [spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) [spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) [spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) [spring-boot-2.7.3.jar:2.7.3]
    at com.eshore.boc.barCafe.BarCafeApplication.main(BarCafeApplication.java:19) [classes/:na]
Caused by: java.lang.reflect.UndeclaredThrowableException: null
    at org.springframework.util.ReflectionUtils.rethrowRuntimeException(ReflectionUtils.java:147) ~[spring-core-5.3.22.jar:5.3.22]
    at com.alibaba.cloud.nacos.registry.NacosServiceRegistry.register(NacosServiceRegistry.java:82) ~[spring-cloud-starter-alibaba-nacos-discovery-2021.0.4.0.jar:2021.0.4.0]
    at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.register(AbstractAutoServiceRegistration.java:232) ~[spring-cloud-commons-3.1.4.jar:3.1.4]
    at com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration.register(NacosAutoServiceRegistration.java:78) ~[spring-cloud-starter-alibaba-nacos-discovery-2021.0.4.0.jar:2021.0.4.0]
    at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.start(AbstractAutoServiceRegistration.java:133) ~[spring-cloud-commons-3.1.4.jar:3.1.4]
    at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.bind(AbstractAutoServiceRegistration.java:98) ~[spring-cloud-commons-3.1.4.jar:3.1.4]
    at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.onApplicationEvent(AbstractAutoServiceRegistration.java:86) ~[spring-cloud-commons-3.1.4.jar:3.1.4]
    at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.onApplicationEvent(AbstractAutoServiceRegistration.java:47) ~[spring-cloud-commons-3.1.4.jar:3.1.4]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.boot.web.servlet.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:46) ~[spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-5.3.22.jar:5.3.22]
    ... 14 common frames omitted
Caused by: com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING
    at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:639) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:619) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.requestToServer(NamingGrpcClientProxy.java:304) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.doRegisterService(NamingGrpcClientProxy.java:154) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.registerService(NamingGrpcClientProxy.java:117) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate.registerService(NamingClientProxyDelegate.java:96) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.nacos.client.naming.NacosNamingService.registerInstance(NacosNamingService.java:149) ~[nacos-client-2.1.2.jar:na]
    at com.alibaba.cloud.nacos.registry.NacosServiceRegistry.register(NacosServiceRegistry.java:74) ~[spring-cloud-starter-alibaba-nacos-discovery-2021.0.4.0.jar:2021.0.4.0]
    ... 27 common frames omitted

[boc-barCafe:132.122.236.56:18002] 2023-06-05 10:31:09.948 WARN 8004 [-] [Thread-23] c.a.n.common.http.HttpClientBeanHolder   [HttpClientBeanHolder] Start destroying common HttpClient
[boc-barCafe:132.122.236.56:18002] 2023-06-05 10:31:09.948 WARN 8004 [-] [Thread-20] c.a.nacos.common.notify.NotifyCenter     [NotifyCenter] Start destroying Publisher
[boc-barCafe:132.122.236.56:18002] 2023-06-05 10:31:09.948 WARN 8004 [-] [Thread-20] c.a.nacos.common.notify.NotifyCenter     [NotifyCenter] Destruction of the end
[boc-barCafe:132.122.236.56:18002] 2023-06-05 10:31:09.949 WARN 8004 [-] [Thread-23] c.a.n.common.http.HttpClientBeanHolder   [HttpClientBeanHolder] Destruction of the end
Disconnected from the target VM, address: '127.0.0.1:4290', transport: 'socket'

Process finished with exit code 1


云服务器上的nacos允许本地连接吗

Nacos2.0版本新增了gRPC的通信方式,需要再多开放俩个端口,一般是与主端口加1000,1001也就是 :
9948: 8848+1000
9949: 8848+1001
你看下你服务的防火墙规则是不是没有放开这俩端口

  • 看下这篇博客,也许你就懂了,链接:简易的Spring-Cloud使用Nacos进行服务注册及配置
  • 除此之外, 这篇博客: nacos服务端、客户端和springCloud版本说明中的 第三步 查找Nacos版本 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 查找nacos版本,是在同一个wiki页面上

    现在,我们就找到nacos的服务端版本了。是1.4.1。同事也是最新的稳定版本。

     

  • 以下回答由chatgpt基于相关博客总结生成:

    根据问题描述和参考资料,我们可以初步定位问题为连接nacos服务时出错,但是本地的nacos服务可以正常连接,而位于云服务器上的nacos服务无法连接。具体的解决方案需要进一步分析,以下是可能的解决方案:

    1. 确认云服务器上的nacos服务可以正常访问:可以通过ping命令或telnet命令测试一下云服务器的IP地址和端口是否可用。

    2. 确认nacos服务的命名空间是否设置正确:在使用nacos服务时,需要指定命名空间id。如果使用的是不同的命名空间,就会出现连接不上的问题,可以在配置文件中检查一下命名空间id是否正确。

    3. 检查网络设置:如果云服务器所在的网络环境设置了访问限制,需要在nacos服务上设置相应的访问策略,允许外部访问。同时,需要检查防火墙或路由设置,确保端口开放以供访问。

    4. 检查nacos服务的版本:不同版本的nacos服务可能存在兼容性问题,需要检查版本是否匹配,如果需要升级或降级nacos服务,需要按照升级和降级的规范进行操作。

    以下是参考代码,使用Spring Cloud的Nacos Config动态更新配置文件:

    import com.alibaba.cloud.nacos.NacosConfigProperties;
    import com.alibaba.cloud.nacos.NacosConfigManager;
    import com.alibaba.nacos.api.config.listener.Listener;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.ApplicationArguments;
    import org.springframework.boot.ApplicationRunner;
    
    import java.util.concurrent.Executor;
    
    public class NacosConfigUpdate implements ApplicationRunner {
        private static final Logger log = LoggerFactory.getLogger(NacosConfigUpdate.class);
    
        @Autowired
        private NacosConfigProperties nacosConfigProperties;
    
        @Override
        public void run(ApplicationArguments args) throws Exception {
            NacosConfigManager nacosConfigManager = new NacosConfigManager(this.nacosConfigProperties);
            nacosConfigManager.getConfigService().addListener("example", "DEFAULT_GROUP", new Listener() {
                @Override
                public void receiveConfigInfo(String configInfo) {
                    log.info("Config changed: {}", configInfo);
                }
                @Override
                public Executor getExecutor() {
                    return null;
                }
            });
        }
    }
    

    这段代码监听名为"example"的配置文件,如果这个文件被修改了,就会调用Listener中receiveConfigInfo方法,收到最新的配置信息。

图片打不开,太卡了,在 Nacos 的配置文件中,【nacos.inetutils.preferredNetworks】这个参数你有没有指定监听IP的范围,这个如果不指定一般都搞不定监听的,另外就是8848端口号防火墙什么的有没有加入白名单也需要check一下