springcloud学习手册-Eureka常见问题总结

导读 | Eureka常见问题总结

一、配置方法问题汇总

1.1. Eureka Environment的配置:

eureka.environment: 字符串

配置环境名称,可以在appliaction.yml 中配置eureka.environment:指定一下名称,这样就可以了。这个名称是可配置的选项。

默认:test

参考文档:

https://github.com/Netflix/eureka/wiki/Configuring-Eureka

1.2. Eureka DataCenter的配置

eureka.datacenter: 字符串

配置环境名称,可以在appliaction.yml 中配置eureka.datacenter: 指定一下名称,这样就可以了。这个名称是可配置的选项。

默认:default

解释:

配置-Deureka.datacenter=cloud,这样eureka将会知道是在AWS云上

参考文档:

https://github.com/Netflix/eureka/wiki/Configuring-Eureka

1.3. Eureka开启自我保护的提示

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

产生原因:Eureka Server在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%,如果出现低于的情况(在单机调试的时候很容易满足,实际在生产环境上通常是由于网络不稳定导致),Eureka Server会将当前的实例注册信息保护起来,同时提示这个警告。保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。

解决方法:

设置enableSelfPreservation:false

配置心跳检测时长,下线leaseRenewalIntervalInSeconds: 2

参考文档:

https://github.com/Netflix/eureka/wiki/Understanding-Eureka-Peer-to-Peer-Communication

1.4. Eureka注册服务慢的问题如何解决?

eureka.instance.leaseRenewalIntervalInSeconds

参考文档:

http://cloud.spring.io/spring-cloud-static/Camden.SR1/#_why_is_it_so_slow_to_register_a_service

原文:

Why is it so Slow to Register a Service?

Being an instance also involves a periodic heartbeat to the registry (via the client’s serviceUrl) with default duration 30 seconds. A service is not available for discovery by clients until the instance, the server and the client all have the same metadata in their local cache (so it could take 3 heartbeats). You can change the period using eureka.instance.leaseRenewalIntervalInSeconds and this will speed up the process of getting clients connected to other services. In production it’s probably better to stick with the default because there are some computations internally in the server that make assumptions about the lease renewal period.

翻译:

作为实例还涉及到与注册中心的周期性心跳,默认持续时间为30秒(通过serviceUrl)。在实例、服务器、客户端都在本地缓存中具有相同的元数据之前,服务不可用于客户端发现(所以可能需要3次心跳)。你可以使用eureka.instance.leaseRenewalIntervalInSeconds 配置,这将加快客户端连接到其他服务的过程。在生产中,最好坚持使用默认值,因为在服务器内部有一些计算,他们对续约做出假设。

1.5. 如何解决Eureka Server不踢出已关停的节点的问题?

server端:

eureka.server.enable-self-preservation(设为false,关闭自我保护主要)
eureka.server.eviction-interval-timer-in-ms 清理间隔(单位毫秒,默认是60*1000)

client端:

eureka.client.healthcheck.enabled = true开启健康检查(需要spring-boot-starter-actuator依赖)
eureka.instance.lease-renewal-interval-in-seconds =10租期更新时间间隔(默认30秒)
eureka.instance.lease-expiration-duration-in-seconds =30  租期到期时间(默认90秒)

示例:

服务器端配置:

eureka:

server:

enableSelfPreservation: false

evictionIntervalTimerInMs: 4000

客户端配置:

eureka:

instance:

leaseRenewalIntervalInSeconds: 10

leaseExpirationDurationInSeconds: 30

注意:

更改Eureka更新频率将打破服务器的自我保护功能

https://github.com/spring-cloud/spring-cloud-netflix/issues/373

1.6. Eureka配置instanceId显示IP

eureka:

client:

serviceUrl:

defaultZone: http://localhost:8761/eureka/

instance:

preferIpAddress: true

instance-id: ${spring.cloud.client.ipAddress}:${server.port}

1.7. 依赖引入

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

1.8 注解

  • @SpringBootApplication 该注解表明这是个springboot工程。
  • @EnableEurekaServer: 该注解表明应用为eureka服务,有可以联合多个服务作为集群,对外提供服务注册以及发现功能
  • @EnableEurekaClient:该注解表明应用既作为eureka实例又为eureka client,可以发现注册的服务。
  • @Repository 实现DAO数据库交互

1.9. Eureka配置最佳实践总结

https://github.com/spring-cloud/spring-cloud-netflix/issues/203

声明:文章属于个人原创,转载请注明文章出处

原文发布于微信公众号 - 全华班(quanhuaban)

原文发表时间:2017-12-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

EVPN简介及实现

一、EVPN简介 EVPN全称是Ethernet VPN,它最开始由RFC7432定义,RFC的全称是:BGP MPLS-Based Ethernet VPN,...

3494
来自专栏杨建荣的学习笔记

sqlldr加载性能问题的排查 (r2第2天)

最近根据业务需要加载一批数据,在生产环境中不到半个小时就完了,可是到了测试环境,竟然跑了6个多小时,另外测试环境和生产环境的数据情况都基本差不多,主机配置也基本...

3075
来自专栏友弟技术工作室

云原生概念

3114
来自专栏北京马哥教育

一种经典的网游服务器架构

? 这个图是一个区的架构图,所有区的架构是一样的。上面虚线框的ServerGroup和旁边方框内的架构一样。图上的所有x N的服务器,都是多台一起的。红线,绿...

2614
来自专栏进击的程序猿

深入浅出Google File System

GFS,顾名思义就是谷歌文件系统,和Big Table,Map Reduce并称谷歌三驾马车。 大部分谷歌服务的基石(Search, Cloud Drive, ...

624
来自专栏杨建荣的学习笔记

服务器进程异常的原因分析(r6笔记第74天)

现在系统监控的工作处于过渡期,即对于Oracle的还是保留了gridcontrol的监控和报警,同时也保留了zabbix的报警,在发生问题的时候想看看哪个能监控...

3164
来自专栏大魏分享(微信公众号:david-share)

容器超融合的实现&持久存储的动态分配 : Openshift3.9学习系列第六终结篇

干货巨献:Openshift3.9的网络管理大全.加长篇---Openshift3.9学习系列第二篇

1083
来自专栏闵开慧

Hadoop功能性能

1 支持的语言 Java/SHELL/Python/ruby等各种支持标准输入输出的语言。 2 能够处理的文件大小 它支持比NFS大得多的文件大小。 3 支持的...

2688
来自专栏跟着阿笨一起玩NET

使用WCF实现SOA面向服务编程—— 架构设计

SOA本身就是一种面向企业级服务的系统架构,简单来说,SOA就是一种进行系统开发的新的体系架构,在基于SOA架构的系统中,具体应用程序的功 能是由 一些松耦合并...

361
来自专栏前端儿

Cookie 和 Session 的区别

做web开发的人基本上都会用session和cookie,但是仅仅只是会用,并不知道session和cookie的真正的工作原理,都只是凭着感觉来猜测。web开...

511

扫描关注云+社区