求助,spring cloud多个注册中心,eureka.client.serviceUrl.defaultZone中第二个无法发现服务

一个胖子IT男 2019-08-10 09:24:04
版本:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<spring-cloud.version>Greenwich.SR2</spring-cloud.version>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

注册中心配置文件:
spring.application.name=server
server.port=7001
eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://localhost:7002/eureka/,http://localhost:7001/eureka/

spring.application.name=server
server.port=7002
eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://localhost:7002/eureka/,http://localhost:7001/eureka/

注册中心启动类:
@SpringBootApplication
@EnableEurekaServer
public class SpringEurekaApplication {

public static void main(String[] args) {
SpringApplication.run(SpringEurekaApplication.class, args);
}

}

服务配置文件:
server.port=9001
spring.application.name=product
eureka.client.serviceUrl.defaultZone=http://localhost:7001/eureka/,http://localhost:7002/eureka/

客户端启动类没有加eureka相关注解

此时访问http://localhost:7001,可以看到product,但是http://localhost:7002没有这个服务,两个注册中心可以互相发现,请教各位大牛,这种情况怎么处理? 我把7001端口项目停止后,7002端口是可以发现这个服务的,怎么能让7001和7002同时发现这个服务?
...全文
2838 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeBoy975 2020-12-15
  • 打赏
  • 举报
回复
检查下配置文件,比如: 注册中心A的配置文件 # 注册中心端口号 server.port=20000 eureka.instance.hostname=A eureka.client.service-url.defaultZone=http://B:20001/eureka 注册中心B的配置文件 server.port=20001 eureka.instance.hostname=B eureka.client.service-url.defaultZone=http://A:20001/eureka 并且注意: 不需要在后面添加自己服务的地址,比如注册中心A中你这样写就有问题: server.port=20000 eureka.instance.hostname=A eureka.client.service-url.defaultZone=http://A:20000/eureka,http://B:20001/eureka 请注意,A的地址放前面,这样的话,则最终是不会注册到B上去的。而且你注册中心A,不需要额外添加这个本地的地址注册。因为eureka会默认注册的。
javaifelse 2020-10-30
  • 打赏
  • 举报
回复
同遇到,客户端注册多个注册中心,只有第一个注册成功
二手木乃伊 2021-10-24
  • 举报
回复
@javaifelse 大佬解决了吗
半个标准生 2022-01-25
  • 举报
回复
@javaifelse 大佬解决了吗
半个标准生 2022-01-25
  • 举报
回复
@二手木乃伊 大佬解决了吗
  • 打赏
  • 举报
回复
解决了吗 我的哥,我也遇到了 头疼啊
二手木乃伊 2021-10-24
  • 举报
回复
@现在没有牛仔了 大佬解决了吗
半个标准生 2022-01-25
  • 举报
回复
@现在没有牛仔了 大佬解决了吗
weixin_40443613 2020-05-28
  • 打赏
  • 举报
回复
博主解决了吗?
二手木乃伊 2021-10-24
  • 举报
回复
@weixin_40443613 大佬解决了吗
月牙先生 2020-04-20
  • 打赏
  • 举报
回复 1
提供者的启动类加上@EnableDiscoveryClient这个注解
sh_c_1314 2019-08-16
  • 打赏
  • 举报
回复
通过日志可以看出,你的注册中心集群就没搭建好,首先你没有在你电脑的window/system32/drivers/etc/hosts文件配置主机名(域名)==>127.0.0.1空格localhost 回环地址因为你用他做集群注册所以要显性配置出来,当然还是建议你是用其他的如你的真实ip(命令ipconfig查出)如我192.168.0.103空格隔开register1.com换行192.168.0.103 register2..com 当然了这些都是要根据部署时实际情况具体配置。 application中hostname要改7001的为register1.com URL为register2.com或对应的ip,7002反过来hostname register2.com URL为register1.com或对应ip进行注册, 当然product URL要为注册中心地址的至少1地址如http://register1.com:7001/eureka(数据同步,最好都写上) 如果你要用localhost的话,要在hosts文件配置他,application各处也要进行如上相应配置hostname,URL用127.0.0.1,建议你用不同域名配置,因为eureka内部逻辑调用查询第一个非回环地址方法
一个胖子IT男 2019-08-11
  • 打赏
  • 举报
回复
引用 6 楼 sh_c 的回复:
[quote=引用 5 楼 一个胖子IT男的回复:][quote=引用 4 楼 sh_c 的回复:] 开启客户端,fetch-registry拉取服务列表,集群同步注册信息应该可以了
我如果只注册7001,然后启动product服务,然后注册7002,这个时候7001和7002都可以看到product,但是先启动7001和7002两个注册中心,然后再启动这个product服务,7002就看不到这个服务,7001可以看到,是一些配置决定的吗,没有搞明白[/quote] 可以看一下product和7002的后半段日志吗[/quote] 断开7001后,7002可以扫描到这个服务,但是replicas那一块不显示掉线的 这是product在7001断线后的日志: 2019-08-11 09:42:25.502 INFO 3736 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration 2019-08-11 09:43:30.036 ERROR 3736 --- [freshExecutor-0] c.n.d.s.t.d.RedirectingEurekaHttpClient : Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://localhost:7001/eureka/} com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect ...... Caused by: java.net.ConnectException: Connection refused: connect 2019-08-11 09:43:30.036 WARN 3736 --- [freshExecutor-0] c.n.d.s.t.d.RetryableEurekaHttpClient : Request execution failed with message: java.net.ConnectException: Connection refused: connect
一个胖子IT男 2019-08-11
  • 打赏
  • 举报
回复
引用 6 楼 sh_c 的回复:
[quote=引用 5 楼 一个胖子IT男的回复:][quote=引用 4 楼 sh_c 的回复:] 开启客户端,fetch-registry拉取服务列表,集群同步注册信息应该可以了
我如果只注册7001,然后启动product服务,然后注册7002,这个时候7001和7002都可以看到product,但是先启动7001和7002两个注册中心,然后再启动这个product服务,7002就看不到这个服务,7001可以看到,是一些配置决定的吗,没有搞明白[/quote] 可以看一下product和7002的后半段日志吗[/quote] 7002后半段日志: 2019-08-11 09:36:18.216 INFO 4556 --- [ main] com.liang.EurekaServer2Application : Started EurekaServer2Application in 8.067 seconds (JVM running for 9.536) 2019-08-11 09:36:18.284 INFO 4556 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_SERVER/DESKTOP-OH4590T:server:7002 - registration status: 204 2019-08-11 09:36:18.284 INFO 4556 --- [nio-7002-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2019-08-11 09:36:18.284 INFO 4556 --- [nio-7002-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2019-08-11 09:36:18.294 INFO 4556 --- [nio-7002-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 10 ms 2019-08-11 09:36:18.352 INFO 4556 --- [nio-7002-exec-2] c.n.e.registry.AbstractInstanceRegistry : Registered instance SERVER/DESKTOP-OH4590T:server:7001 with status UP (replication=false) 2019-08-11 09:36:47.949 INFO 4556 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient : Disable delta property : false 2019-08-11 09:36:47.949 INFO 4556 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient : Single vip registry refresh property : null 2019-08-11 09:36:47.949 INFO 4556 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient : Force full registry fetch : false 2019-08-11 09:36:47.949 INFO 4556 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient : Application is null : false 2019-08-11 09:36:47.951 INFO 4556 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient : Registered Applications size is zero : true 2019-08-11 09:36:47.951 INFO 4556 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient : Application version is -1: false 2019-08-11 09:36:47.951 INFO 4556 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient : Getting all instance registry info from the eureka server 2019-08-11 09:36:47.984 INFO 4556 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient : The response status is 200 2019-08-11 09:36:48.172 INFO 4556 --- [ Thread-12] c.n.e.registry.AbstractInstanceRegistry : Registered instance SERVER/DESKTOP-OH4590T:server:7002 with status UP (replication=true) 2019-08-11 09:36:48.172 INFO 4556 --- [ Thread-12] c.n.e.r.PeerAwareInstanceRegistryImpl : Got 1 instances from neighboring DS node 2019-08-11 09:36:48.172 INFO 4556 --- [ Thread-12] c.n.e.r.PeerAwareInstanceRegistryImpl : Renew threshold is: 1 2019-08-11 09:36:48.172 INFO 4556 --- [ Thread-12] c.n.e.r.PeerAwareInstanceRegistryImpl : Changing status to UP 2019-08-11 09:36:48.172 INFO 4556 --- [ Thread-12] e.s.EurekaServerInitializerConfiguration : Started Eureka Server 2019-08-11 09:37:48.179 INFO 4556 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry : Running the evict task with compensationTime 0ms 2019-08-11 09:38:48.180 INFO 4556 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry : Running the evict task with compensationTime 0ms 2019-08-11 09:38:48.180 INFO 4556 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry : Evicting 1 items (expired=1, evictionLimit=1) 2019-08-11 09:38:48.180 WARN 4556 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry : DS: Registry: expired lease for SERVER/DESKTOP-OH4590T:server:7002 2019-08-11 09:38:48.181 INFO 4556 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry : Cancelled instance SERVER/DESKTOP-OH4590T:server:7002 (replication=false) 2019-08-11 09:39:48.181 INFO 4556 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry : Running the evict task with compensationTime 0ms 这个可能是自我保护机制断开本身的连接了? 在断开之前,也是一直扫描不到product服务
一个胖子IT男 2019-08-11
  • 打赏
  • 举报
回复
引用 6 楼 sh_c 的回复:
[quote=引用 5 楼 一个胖子IT男的回复:][quote=引用 4 楼 sh_c 的回复:] 开启客户端,fetch-registry拉取服务列表,集群同步注册信息应该可以了
我如果只注册7001,然后启动product服务,然后注册7002,这个时候7001和7002都可以看到product,但是先启动7001和7002两个注册中心,然后再启动这个product服务,7002就看不到这个服务,7001可以看到,是一些配置决定的吗,没有搞明白[/quote] 可以看一下product和7002的后半段日志吗[/quote] product日志: 2019-08-11 09:37:21.944 INFO 3736 --- [ main] com.liang.EurekaProduct1Application : No active profile set, falling back to default profiles: default 2019-08-11 09:37:22.381 INFO 3736 --- [ main] o.s.cloud.context.scope.GenericScope : BeanFactory id=9574fb49-23d4-3b9b-afa9-3f99770a0f1c 2019-08-11 09:37:22.445 INFO 3736 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$d748c9c4] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2019-08-11 09:37:22.632 INFO 3736 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 9001 (http) 2019-08-11 09:37:22.648 INFO 3736 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2019-08-11 09:37:22.648 INFO 3736 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.22] 2019-08-11 09:37:22.773 INFO 3736 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2019-08-11 09:37:22.773 INFO 3736 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 829 ms 2019-08-11 09:37:22.820 WARN 3736 --- [ main] c.n.c.sources.URLConfigurationSource : No URLs will be polled as dynamic configuration sources. 2019-08-11 09:37:22.820 INFO 3736 --- [ main] c.n.c.sources.URLConfigurationSource : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath. 2019-08-11 09:37:22.820 WARN 3736 --- [ main] c.n.c.sources.URLConfigurationSource : No URLs will be polled as dynamic configuration sources. 2019-08-11 09:37:22.820 INFO 3736 --- [ main] c.n.c.sources.URLConfigurationSource : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath. 2019-08-11 09:37:22.960 INFO 3736 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2019-08-11 09:37:24.320 INFO 3736 --- [ main] o.s.c.n.eureka.InstanceInfoFactory : Setting initial instance status as: STARTING 2019-08-11 09:37:24.349 INFO 3736 --- [ main] com.netflix.discovery.DiscoveryClient : Initializing Eureka in region us-east-1 2019-08-11 09:37:24.849 INFO 3736 --- [ main] c.n.d.provider.DiscoveryJerseyProvider : Using JSON encoding codec LegacyJacksonJson 2019-08-11 09:37:24.849 INFO 3736 --- [ main] c.n.d.provider.DiscoveryJerseyProvider : Using JSON decoding codec LegacyJacksonJson 2019-08-11 09:37:24.943 INFO 3736 --- [ main] c.n.d.provider.DiscoveryJerseyProvider : Using XML encoding codec XStreamXml 2019-08-11 09:37:24.943 INFO 3736 --- [ main] c.n.d.provider.DiscoveryJerseyProvider : Using XML decoding codec XStreamXml 2019-08-11 09:37:25.099 INFO 3736 --- [ main] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration 2019-08-11 09:37:25.474 INFO 3736 --- [ main] com.netflix.discovery.DiscoveryClient : Disable delta property : false 2019-08-11 09:37:25.488 INFO 3736 --- [ main] com.netflix.discovery.DiscoveryClient : Single vip registry refresh property : null 2019-08-11 09:37:25.488 INFO 3736 --- [ main] com.netflix.discovery.DiscoveryClient : Force full registry fetch : false 2019-08-11 09:37:25.488 INFO 3736 --- [ main] com.netflix.discovery.DiscoveryClient : Application is null : false 2019-08-11 09:37:25.488 INFO 3736 --- [ main] com.netflix.discovery.DiscoveryClient : Registered Applications size is zero : true 2019-08-11 09:37:25.488 INFO 3736 --- [ main] com.netflix.discovery.DiscoveryClient : Application version is -1: true 2019-08-11 09:37:25.488 INFO 3736 --- [ main] com.netflix.discovery.DiscoveryClient : Getting all instance registry info from the eureka server 2019-08-11 09:37:25.631 INFO 3736 --- [ main] com.netflix.discovery.DiscoveryClient : The response status is 200 2019-08-11 09:37:25.646 INFO 3736 --- [ main] com.netflix.discovery.DiscoveryClient : Starting heartbeat executor: renew interval is: 30 2019-08-11 09:37:25.646 INFO 3736 --- [ main] c.n.discovery.InstanceInfoReplicator : InstanceInfoReplicator onDemand update allowed rate per min is 4 2019-08-11 09:37:25.646 INFO 3736 --- [ main] com.netflix.discovery.DiscoveryClient : Discovery Client initialized at timestamp 1565487445646 with initial instances count: 2 2019-08-11 09:37:25.646 INFO 3736 --- [ main] o.s.c.n.e.s.EurekaServiceRegistry : Registering application PRODUCT with eureka with status UP 2019-08-11 09:37:25.646 INFO 3736 --- [ main] com.netflix.discovery.DiscoveryClient : Saw local status change event StatusChangeEvent [timestamp=1565487445646, current=UP, previous=STARTING] 2019-08-11 09:37:25.646 INFO 3736 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_PRODUCT/DESKTOP-OH4590T:product:9001: registering service... 2019-08-11 09:37:25.693 INFO 3736 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9001 (http) with context path '' 2019-08-11 09:37:25.693 INFO 3736 --- [ main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 9001 2019-08-11 09:37:25.693 INFO 3736 --- [ main] com.liang.EurekaProduct1Application : Started EurekaProduct1Application in 5.584 seconds (JVM running for 6.657) 2019-08-11 09:37:25.708 INFO 3736 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_PRODUCT/DESKTOP-OH4590T:product:9001 - registration status: 204
sh_c_1314 2019-08-11
  • 打赏
  • 举报
回复
引用 5 楼 一个胖子IT男的回复:
[quote=引用 4 楼 sh_c 的回复:] 开启客户端,fetch-registry拉取服务列表,集群同步注册信息应该可以了
我如果只注册7001,然后启动product服务,然后注册7002,这个时候7001和7002都可以看到product,但是先启动7001和7002两个注册中心,然后再启动这个product服务,7002就看不到这个服务,7001可以看到,是一些配置决定的吗,没有搞明白[/quote] 可以看一下product和7002的后半段日志吗
一个胖子IT男 2019-08-11
  • 打赏
  • 举报
回复
引用 4 楼 sh_c 的回复:
开启客户端,fetch-registry拉取服务列表,集群同步注册信息应该可以了
我如果只注册7001,然后启动product服务,然后注册7002,这个时候7001和7002都可以看到product,但是先启动7001和7002两个注册中心,然后再启动这个product服务,7002就看不到这个服务,7001可以看到,是一些配置决定的吗,没有搞明白
sh_c_1314 2019-08-10
  • 打赏
  • 举报
回复
开启客户端,fetch-registry拉取服务列表,集群同步注册信息应该可以了
sh_c_1314 2019-08-10
  • 打赏
  • 举报
回复
客户端启动类加@EnableDiscoveryClient开启客户端试试
一个胖子IT男 2019-08-10
  • 打赏
  • 举报
回复
引用 1 楼 sh_c 的回复:
把application.properties文件改一下,端口7001的eureka的defaultZone=http://localhost:7002/eureka/,端口7002的defaultZone=http://localhost:7001/eureka/互相注册到对方eureka服务器,eureka都默认注册自己了
试过了,还是不行
sh_c_1314 2019-08-10
  • 打赏
  • 举报
回复
把application.properties文件改一下,端口7001的eureka的defaultZone=http://localhost:7002/eureka/,端口7002的defaultZone=http://localhost:7001/eureka/互相注册到对方eureka服务器,eureka都默认注册自己了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧