今天在进行高可用的Eureka Server注册中心的配置时,遇到一个神坑。

拓扑图

废话不多说,直接上拓扑图:

Eureka Server配置

pom.xml:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

开启注解:

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerHaApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerHaApplication.class, args);}
}

配置文件application.yml:

---
server:port: 8771
spring:profiles: peer1application:name: eureka-ha
eureka:instance:hostname: peer1client:serviceUrl:defaultZone: http://peer2:8772/eureka/,http://peer3:8773/eureka/---
server:port: 8772
spring:profiles: peer2application:name: eureka-ha
eureka:instance:hostname: peer2client:serviceUrl:defaultZone: http://peer1:8771/eureka/,http://peer3:8773/eureka/---
server:port: 8773
spring:profiles: peer3application:name: eureka-ha
eureka:instance:hostname: peer3client:serviceUrl:defaultZone: http://peer1:8771/eureka/,http://peer2:8772/eureka/

在IDEA中,分别通过设置不同的Program arguments参数为--spring.profiles.active=peer1--spring.profiles.active=peer2--spring.profiles.active=peer3启动这三个注册中心服务。

访问http://peer1:8771/,Eureka Server配置成功,如下所示:

Eureka Client配置

pom.xml:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

开启注解:

@EnableEurekaClient
@RestController
@SpringBootApplication
public class EurekaHiHaApplication {public static void main(String[] args) {SpringApplication.run(EurekaHiHaApplication.class, args);}/** 获取端口号 */@Value("${server.port}")String port;/*** 定义一个简单接口*@param name*@return*/@GetMapping("/hi/{name}")public String home(@PathVariable String name){return "hi " + name + ",I am from port :" + port;}
}

配置文件application.yml:

server:port: 8783
spring:application:name: service-hi-ha
eureka:client:service-url:default-zone: http://peer1:8771/eureka/

启动报错:

2018-05-26 18:31:17.438  INFO 12972 --- [           main] com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
2018-05-26 18:31:19.525 ERROR 12972 --- [           main] c.n.d.s.t.d.RedirectingEurekaHttpClient  : Request execution errorcom.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connectat com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar:1.19.1]at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) ~[jersey-client-1.19.1.jar:1.19.1]...
Caused by: java.net.ConnectException: Connection refused: connectat java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_131]at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) ~[na:1.8.0_131]...... 69 common frames omitted2018-05-26 18:31:19.531  WARN 12972 --- [           main] c.n.d.s.t.d.RetryableEurekaHttpClient    : Request execution failed with message: java.net.ConnectException: Connection refused: connect
2018-05-26 18:31:19.533 ERROR 12972 --- [           main] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_SERVICE-HI-HA/DESKTOP-4J0FACQ:service-hi-ha:8783 - was unable to refresh its cache! status = Cannot execute request on any known servercom.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known serverat com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) ~[eureka-client-1.6.2.jar:1.6.2]...at pers.hanchao.springclouddemo.eurekahiha.EurekaHiHaApplication.main(EurekaHiHaApplication.java:17) [classes/:na]2018-05-26 18:31:19.543  WARN 12972 --- [           main] com.netflix.discovery.DiscoveryClient    : Using default backup registry implementation which does not do anything.
2018-05-26 18:31:19.543  INFO 12972 --- [           main] com.netflix.discovery.DiscoveryClient    : Starting heartbeat executor: renew interval is: 30
2018-05-26 18:31:19.543  INFO 12972 --- [           main] c.n.discovery.InstanceInfoReplicator     : InstanceInfoReplicator onDemand update allowed rate per min is 4
2018-05-26 18:31:19.543  INFO 12972 --- [           main] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1527330679543 with initial instances count: 0
2018-05-26 18:31:19.583  INFO 12972 --- [           main] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application service-hi-ha with eureka with status UP
2018-05-26 18:31:19.583  INFO 12972 --- [           main] com.netflix.discovery.DiscoveryClient    : Saw local status change event StatusChangeEvent [timestamp=1527330679583, current=UP, previous=STARTING]
2018-05-26 18:31:19.583  INFO 12972 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_SERVICE-HI-HA/DESKTOP-4J0FACQ:service-hi-ha:8783: registering service...
2018-05-26 18:31:19.683  INFO 12972 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8783 (http)
2018-05-26 18:31:19.683  INFO 12972 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8783
2018-05-26 18:31:19.693  INFO 12972 --- [           main] p.h.s.eurekahiha.EurekaHiHaApplication   : Started EurekaHiHaApplication in 6.824 seconds (JVM running for 7.581)
2018-05-26 18:31:21.624 ERROR 12972 --- [nfoReplicator-0] c.n.d.s.t.d.RedirectingEurekaHttpClient  : Request execution errorcom.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connectat com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar:1.19.1]...at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
Caused by: java.net.ConnectException: Connection refused: connectat java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_131]...... 30 common frames omitted2018-05-26 18:31:21.634  WARN 12972 --- [nfoReplicator-0] c.n.d.s.t.d.RetryableEurekaHttpClient    : Request execution failed with message: java.net.ConnectException: Connection refused: connect
2018-05-26 18:31:21.634  WARN 12972 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_SERVICE-HI-HA/DESKTOP-4J0FACQ:service-hi-ha:8783 - registration failed Cannot execute request on any known servercom.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known serverat com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) ~[eureka-client-1.6.2.jar:1.6.2]at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.6.2.jar:1.6.2]...at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]2018-05-26 18:31:21.634  WARN 12972 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator     : There was a problem with the instance info replicatorcom.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known serverat com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) ~[eureka-client-1.6.2.jar:1.6.2]at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.6.2.jar:1.6.2]...at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]

错误解决

通过报错信息,可知,Eureka Client找不到Eureka Server的配置,但是我检查各项配置没有问题。

最终,我将 横线命名 修改为 驼峰命名 ,问题解决:

修改Eureka Client的配置文件application.yml:

server:port: 8783
spring:application:name: service-hi-ha
eureka:client:serviceUrl:defaultZone: http://peer1:8771/eureka/

重新启动,进入Eureka Server后台,发现服务注册成功:

在浏览器访问http://localhost:8783/hi/david,服务正常:

配置高可用Eureka Server遇到的神坑:无法注册服务相关推荐

  1. 3、Spring Cloud - Eureka(高可用Eureka Server集群)

    在实际的项目中,可能有几十个或者几百个的微服务实例,这时 Eureka Server 承担了非 常高的负载.由于 Eureka Server 在微服务架构中有着举足重轻的作用,所以需要对 Eureka ...

  2. 高可用Eureka注册中心配置说明(双机部署)

    目  录 1. 高可用EureKa注册中心示意图 2. Eureka实例相互注册配置 3. 微服务注册到Eureka配置 4. 启动步骤及配置成功检查 5. 说明事项 1. 高可用EureKa注册中心 ...

  3. 构建高性能.NET应用之配置高可用IIS服务器-第五篇 IIS常见问题之:工作进程回收机制(中)...

    我们在本篇中接着讲述"工作进程回收机制". 本篇文章的议题如下:                工作进程回收机制讲解 基于时间的回收机制                基于请求数的 ...

  4. 18.1 集群介绍 18.2 keepalived介绍 18.3/18.4/18.5 用keepalived配置高可用集群

    2019独角兽企业重金招聘Python工程师标准>>> 第十八章 Linux集群 18.1 集群介绍 Linux集群根据功能划分为两大类:高可用和负载均衡. 高可用集群 高可用集群通 ...

  5. 配置高可用(名称节点高可用)

    本文详细配置名称节点的高可用,什么是高可用可参考官方文档 说在前面 工作环境:VMware® Workstation 12 Pro 12.5.6 build-5528349 linux版本:CentO ...

  6. Keepalived+LVS-DR模式配置高可用负载均衡集群

    环境: 虚拟机:VMware Workstation 操作系统:CentOS 5.5 一.keepalived+lvs-DR模式配置高可用负载均衡 拓扑如下: 二.服务器ip配置信息 1. ip_lb ...

  7. 服务器集群之keepalived配置高可用(资料)

    2019独角兽企业重金招聘Python工程师标准>>> Linux集群概述 • 根据功能划分为两大类:高可用和负载均衡 • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当 ...

  8. 使用rancher rke2配置高可用k8s集群

    使用rancher rke2配置高可用k8s集群 1. 前言 1.1 官方介绍 1.2 说明 2. 主机环境准备 2.1 主机初始化 2.3 系统参数设置 2.4 NetworkManager设置 2 ...

  9. 配置高可用的循环复用DNS负载均衡

    配置高可用的循环复用DNS负载均衡 提供:ZStack社区 前言 如何利用云主机提供商的全球部署来最合理的分布你的应用?这个话题在技术圈充满争议,不过DNS(即,IP转发列表)应该算是一个好方案.特别 ...

最新文章

  1. 深度神经网络中Inception-ResNet模块介绍
  2. K-最近邻法(KNN)简介
  3. FC SAN与IP SAN的比较
  4. Envy-便当的显卡驱动布置剧本
  5. 灰度图像--图像增强 锐化基础
  6. 排序 (2)快速排序
  7. c语言可移植性较差吗,c陷阱与缺陷--可移植性缺陷
  8. Python爬虫西安七天天气预报
  9. B2B多商铺初期权限数据库设计
  10. STM32:定时器中断与优先级
  11. 2021最新!某盘加速下载工具复活了,无需登录,打开即可高速下载(附下载)!
  12. m3u8格式转换器android,m3u8转mp4转换器下载_m3u8转mp4转换器官方下载-太平洋下载中心...
  13. 浅谈月薪3万 iOS程序员 的职业规划与成长!(进阶篇)
  14. AURIX TC397 Multicore 多核
  15. Windows10 Windows Store安装 应用商店重新安装
  16. 使用UsbAsp给UNO烧写bootloader ATMEGA16U2、ATMEGA328P固件烧写教程
  17. 金蝶EAS BOS开发固定报表流程
  18. 结合深度学习检测心脏 智能戒指体积小又准确
  19. python找出只出现一次的字符_在一个字符串中找到第一个只出现一次的字符。
  20. 解决小程序api为http和豆瓣限制小程序使用api问题

热门文章

  1. 解决windows10桌面输入法不见问题
  2. 【2021年蓝桥杯Java-B组国赛题解】
  3. Python操作表格
  4. iTop4412 Booting Sequence
  5. uni-app实现app内嵌微信文章
  6. 笔记:蛋白质结构预测在线工具
  7. 雷电模拟器重置开机密码
  8. anaconda利用pip安装module
  9. 2019年3月菜鸟实习生电话面试题
  10. Android性能优化系列之布局优化,Android程序员校招蚂蚁金服