本地服务注册远程nacos遇到的坑,浏览器可以访问nacos控制页面,但本地服务无法注册

我是将nacos部署到服务器上,然后将本地服务往远程nacos上注册,本地服务配置如下:

spring:
  application:
    name: gateway1
  profiles:
    active: dev
  cloud:
    nacos:
      config:
        server-addr: 远程IP:8848
        file-extension: yml

启动本地服务的时候老是报错,但是我之前nacos服务中心在本地启动这样配置就没有问题:

2020-11-11 15:55:54.719 ERROR 6824 --- [           main] com.alibaba.nacos.client.naming          : [NA] failed to request

java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_101]
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) ~[na:1.8.0_101]
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_101]
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_101]
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_101]
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_101]
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_101]
	at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_101]
	at sun.net.NetworkClient.doConnect(NetworkClient.java:175) ~[na:1.8.0_101]
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:432) ~[na:1.8.0_101]
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:527) ~[na:1.8.0_101]
	at sun.net.www.http.HttpClient.<init>(HttpClient.java:211) ~[na:1.8.0_101]
	at sun.net.www.http.HttpClient.New(HttpClient.java:308) ~[na:1.8.0_101]
	at sun.net.www.http.HttpClient.New(HttpClient.java:326) ~[na:1.8.0_101]
	at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1169) ~[na:1.8.0_101]
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105) ~[na:1.8.0_101]
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999) ~[na:1.8.0_101]
	at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:933) ~[na:1.8.0_101]
	at com.alibaba.nacos.common.http.client.request.JdkHttpClientRequest.execute(JdkHttpClientRequest.java:109) ~[nacos-common-1.3.3.jar:na]
	at com.alibaba.nacos.common.http.client.NacosRestTemplate.execute(NacosRestTemplate.java:482) ~[nacos-common-1.3.3.jar:na]
	at com.alibaba.nacos.common.http.client.NacosRestTemplate.exchangeForm(NacosRestTemplate.java:427) ~[nacos-common-1.3.3.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.callServer(NamingProxy.java:599) [nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:524) [nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:491) [nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:486) [nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.queryList(NamingProxy.java:400) [nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.naming.core.HostReactor.updateService(HostReactor.java:339) [nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.naming.core.HostReactor.updateServiceNow(HostReactor.java:302) [nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.naming.core.HostReactor.getServiceInfo(HostReactor.java:277) [nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.naming.NacosNamingService.subscribe(NacosNamingService.java:446) [nacos-client-1.3.3.jar:na]
	at com.alibaba.cloud.nacos.discovery.NacosWatch.start(NacosWatch.java:124) [spring-cloud-starter-alibaba-nacos-discovery-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182) [spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53) [spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360) [spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158) [spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122) [spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:895) [spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:554) [spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:62) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at com.peas.gateway.GatewayApplication.main(GatewayApplication.java:12) [classes/:na]

网上查了N久无果,然后看到一篇文章写的是在application.properties中配置需要写成:
spring.cloud.nacos.discovery.server-addr=xxx.xxx.xxx.xxx:8848
而在bootstrap.properties中需要写成:
spring.cloud.nacos.config.server-addr=xxx.xxx.xxx.xxx:8848
但我看我的配置是这样写的没错啊,突然想着把discovery也配置上试试,没想到还真让我给蒙到了:

spring:
  application:
    name: gateway1
  profiles:
    active: dev
  cloud:
    nacos:
      config:
        server-addr: 远程IP:8848
        file-extension: yml
      discovery:
        server-addr: 远程IP:8848

启动,OK啦~~~
然后我想,如果把config下的server-addr注释掉应该也可以吧,so:

spring:
  application:
    name: gateway1
  profiles:
    active: dev
  cloud:
    nacos:
      config:
#        server-addr: 远程IP:8848
        file-extension: yml
      discovery:
        server-addr: 远程IP:8848

再启动,然鹅············

java.net.ConnectException: no available server
	at com.alibaba.nacos.client.config.http.ServerHttpAgent.httpGet(ServerHttpAgent.java:133) ~[nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.config.http.MetricsHttpAgent.httpGet(MetricsHttpAgent.java:51) ~[nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.config.impl.ClientWorker.getServerConfig(ClientWorker.java:298) ~[nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.config.NacosConfigService.getConfigInner(NacosConfigService.java:149) [nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.config.NacosConfigService.getConfig(NacosConfigService.java:97) [nacos-client-1.3.3.jar:na]
	at com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder.loadNacosData(NacosPropertySourceBuilder.java:85) [spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder.build(NacosPropertySourceBuilder.java:74) [spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadNacosPropertySource(NacosPropertySourceLocator.java:204) [spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadNacosDataIfPresent(NacosPropertySourceLocator.java:191) [spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadApplicationConfiguration(NacosPropertySourceLocator.java:142) [spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.locate(NacosPropertySourceLocator.java:103) [spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at org.springframework.cloud.bootstrap.config.PropertySourceLocator.locateCollection(PropertySourceLocator.java:52) [spring-cloud-context-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at org.springframework.cloud.bootstrap.config.PropertySourceLocator.locateCollection(PropertySourceLocator.java:47) [spring-cloud-context-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize(PropertySourceBootstrapConfiguration.java:98) [spring-cloud-context-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:626) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:370) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at com.peas.gateway.GatewayApplication.main(GatewayApplication.java:12) [classes/:na]

直接就报错了,找不到注册服务器,分析下两个单词的意思,就是一个是注册用的,一个是摘取配置信息用的,两个的默认值都是localhost:8848,如果nacos是部署在远程服务器上,本地只配置config就相当于只能拉取配置文件,不能注册,如果只配置discovery,那config就是默认值,服务就只能注册,不能拉取配置文件,如果配置文件中有启动服务必须的配置,那就没办法获取,也就没办法启动项目!

以下是原码中设置默认值:
在这里插入图片描述

  • 19
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值