当前位置:   article > 正文

Spring Cloud Eureka配置详解

Spring Cloud Eureka配置详解

目录

1 instance:当前Eureka Instance实例信息配置

2 client:Eureka Client客户端特性配置

3 server:Eureka Server注册中心特性配置

4 dashboard:Eureka Server注册中心仪表盘配置

5 Spring Cloud Eureka常用配置清单

介绍

Eureka包含四个部分的配置

instance:当前Eureka Instance实例信息配置; client:Eureka Client客户端特性配置; server:Eureka Server注册中心特性配置; dashboard:Eureka Server注册中心仪表盘配置。

1 Eureka Instance实例信息配置

Bean类:org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean进行加载。包装成com.netflix.appinfo.InstanceInfo对象发送的Eureka服务端。

开头:eureka.instance

1.1 元数据

Eureka客户端在想服务注册中心发送注册请求时的自身服务信息描述对象。主要包含服务名称、实例名称、实例IP、实例端口等,以及一些负载均衡策略或者自定义其他特殊用途元素信息。

格式:eureka.instance.metadatamap.< key >=< value >

如:eureka.instance.metadatamap.zone = shanghai

1.2 实例名称配置

用于区分同一服务中不同实例的标识。(即服务名称相同,主机或者端口不同),避免启动时选择端口的麻烦。

如:eureka.instance.instanceId=${spring.application.name}:${random.int}

1.3 端点配置

在InstanceInfo中,可以看到一些URL的配置信息,比如homePageUrl、statusPageUrl、healthCheckUrl。它们分别代表了应用主页的URL、状态页的URL、健康检查的URL。其中,状态页和监控检查的URL在Spring Cloud Eureka中默认使用了spring-boot-actuator模块提供的/info端点和/health端点。为了服务的正常运作,必须确认Eureka客户端的/health端点在发送元数据的时候,是一个能够被注册中心访问的地址,否则服务注册中心不会根据应用的健康状态来更改状态(仅当开启了healthcheck功能时,以该端点信息作为健康检查标准)。而/info端点如果不正确的话,会导致在Eureka面板单击服务实例时,无法访问到服务实例提供的信息接口。

在一些特殊的情况下,比如,为应用设置了context-path,这时,所有spring-boot-actuator模块的监控端点都会增加一个前缀。所以,我们就需要做类似如下的配置,为/info和/health端点也加上类似的前缀:

  1. management.context-path=/hello
  2. eureka.instance.statusPageUrlPath=${management.context-path}/info
  3. eureka.instance.healthCheckUrlPath=${management.context-path}/health

另外,有时候为了安全考虑,也有可能会修改/info和/health端点的原始路径。这个时候,我们也需要做一些特殊配置,例如:

  1. endpoints.info.pah=/appinfo
  2. endpoints.health.path=/cheakHealth
  3. eureka.instance.statusPageUrlPath=/${endpoints.info.pah}
  4. eureka.instance.healthCheckUrlPath=/${endpoints.health.path}

上面实例使用的是相对路径。

由于Eureka的服务注册中心默认会以HTTP的方式来访问和暴露这些端点,因此当客户端应用以HTTPS的方式来暴露服务和监控端点时,相对路径的配置方式就无法满足要求了。所以,Spring Cloud Eureka还提供了绝对路径的配置参数,例如:

  1. eureka.instance.homePageUrl=https://${eureka.instance.homename}
  2. eureka.instance.statusPageUrlPath=https://${eureka.instance.homename}/info
  3. eureka.instance.healthCheckUrlPath=https://${eureka.instance.homename}/health

1.4 健康检测

默认情况下,Eureka中各个服务实例的健康检查并不是通过spring-boot-actuator模块的/health端点来实现的,而是依靠客户端心跳的方式保持服务实例的存活,在Eureka的服务续约与剔除机制下,客户端的监控状态从注册到注册中心开始都会处于UP状态,除非心跳终止一段时间之后,服务注册中心将其剔除。默认的心跳实现方式可以有效检查客户端进程是否正常运作,但却无法保证客户端应用能够正常提供服务。由于大多数的应用都会有一些其他的外部资源依赖,比如数据库。缓存、消息代理等,如果应用与这些外部资源无法联通的时候,实际上已经不能提供正常的对外服务了,但此时心跳依然正常,所以它还是会被服务消费者调用,而这样的调用实际上并不能获得预期的结果。

在Spring Cloud Eureka中,我们可以通过简单的配置,把Eureka客户端的监控检查交给spring-boot-actuator模块的/health端点,以实现更加全面的健康状态维护。

详细步骤如下:

  1. 1 在pom.xml中加入spring-boot-starter-actuator模块的依赖。
  2. 2 在application.properties中增加参数配置eureka.client.healthcheck.enabled=true
  3. 3如果客户端/health端点做了特殊处理,需要参照1.3中的端点配置。

1.5 其他配置

其他配置附于后面的表清单中。

2 Eureka Client客户端特性配置

Eureka Client客户端特性配置是对作为Eureka客户端的特性配置,包括Eureka注册中心,本身也是一个Eureka Client。

Eureka Client特性配置全部在org.springframework.cloud.netflix.eureka.EurekaClientConfigBean中,实际上它是com.netflix.discovery.EurekaClientConfig的实现类,替代了netxflix的默认实现。

开头:eureka.client

3 server:Eureka Server注册中心特性配置

Eureka Server注册中心端的配置是对注册中心的特性配置。Eureka Server的配置全部在org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean里,实际上它是com.netflix.eureka.EurekaServerConfig的实现类,替代了netflix的默认实现。

Eureka Server的配置全部以eureka.server.xxx的格式进行配置。

4 Eureka Server注册中心仪表盘配置

注册中心仪表盘的配置主要是控制注册中心的可视化展示。以eureka.dashboard.xxx的格式配置。

5 Spring Cloud Eureka常用配置清单

清单来源:https://www.cnblogs.com/li3807/p/7282492.html(致谢)

配置名称 

默认值 

默认值

说明 

说明

服务注册中心配置

  

Bean类:org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean

eureka.server.enableSelfPreservation

false

关闭注册中心的保护机制,Eureka 会统计15分钟之内心跳失败的比例低于85%将会触发保护机制,不剔除服务提供者,如果关闭服务注册中心将不可用的实例正确剔除

服务实例类配置

  

Bean类:org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean

eureka.instance.preferIpAddress

false

不使用主机名来定义注册中心的地址,而使用IP地址的形式,如果设置了

eureka.instance.ip-address 属性,则使用该属性配置的IP,否则自动获取除环路IP外的第一个IP地址

eureka.instance.ipAddress

  

IP地址

eureka.instance.hostname

  

设置当前实例的主机名称

eureka.instance.appname

  

服务名,默认取 spring.application.name 配置值,如果没有则为 unknown

eureka.instance.leaseRenewalIntervalInSeconds

30

定义服务续约任务(心跳)的调用间隔,单位:秒

eureka.instance.leaseExpirationDurationInSeconds

90

定义服务失效的时间,单位:秒

eureka.instance.statusPageUrlPath

/info

状态页面的URL,相对路径,默认使用 HTTP 访问,如果需要使用 HTTPS则需要使用绝对路径配置

eureka.instance.statusPageUrl

  

状态页面的URL,绝对路径

eureka.instance.healthCheckUrlPath

/health

健康检查页面的URL,相对路径,默认使用 HTTP 访问,如果需要使用 HTTPS则需要使用绝对路径配置

eureka.instance.healthCheckUrl

  

健康检查页面的URL,绝对路径

服务注册类配置

  

Bean类:org.springframework.cloud.netflix.eureka.EurekaClientConfigBean

eureka.client.serviceUrl.

  

指定服务注册中心地址,类型为 HashMap,并设置有一组默认值,默认的Key为 defaultZone;默认的Value为 http://localhost:8761/eureka ,如果服务注册中心为高可用集群时,多个注册中心地址以逗号分隔。

如果服务注册中心加入了安全验证,这里配置的地址格式为:http://<username>:<password>@localhost:8761/eureka 其中 <username> 为安全校验的用户名;<password> 为该用户的密码

eureka.client.fetchRegistery

true

检索服务

eureka.client.registeryFetchIntervalSeconds

30

从Eureka服务器端获取注册信息的间隔时间,单位:秒

eureka.client.registerWithEureka

true

启动服务注册

eureka.client.eurekaServerConnectTimeoutSeconds

5

连接 Eureka Server 的超时时间,单位:秒

eureka.client.eurekaServerReadTimeoutSeconds

8

读取 Eureka Server 信息的超时时间,单位:秒

eureka.client.filterOnlyUpInstances

true

获取实例时是否过滤,只保留UP状态的实例

eureka.client.eurekaConnectionIdleTimeoutSeconds

30

Eureka 服务端连接空闲关闭时间,单位:秒

eureka.client.eurekaServerTotalConnections

200

从Eureka 客户端到所有Eureka服务端的连接总数

eureka.client.eurekaServerTotalConnectionsPerHost

50

从Eureka客户端到每个Eureka服务主机的连接总数

注册中心仪表盘配置

  

Bean类:org.springframework.cloud.netflix.eureka.server.EurekaDashboardProperties

eureka.dashboard.path

 

仪表盘访问路径

eureka.dashboard.enabled

true

是否启用仪表盘

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/564791
推荐阅读
相关标签
  

闽ICP备14008679号