存档2019年11月30日

Eureka 使用及常用配置

  1. ### Eureka server 注册中心
增加依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
在主启动类使用注解
@EnableEurekaServer
配制--服务端同时也是客户端
# 应用名
spring:
  application:
    name: eurekaserver
#  freemarker:
#    prefer-file-system-access: false
# 服务端口
server:
  port: 8761
eureka:
  #  instance:
  #    以IP:端口方式定位
  #    prefer-ip-address: true
  #    eureka.instance.instance-id: 主机名:应用名:端口号
  #    eureka主机名
  #    hostname: 127.0.0.1
  # 关闭注册中心的自我保护模式,开发环境可以关闭
  server:
    enable-self-preservation: false
  client:
    #    是否从eureka获取注册信息
    fetch-registry: false
    #   是否注册到eureka(eureka本身是不需要再注册到自己的)(单机环境)
    register-with-eureka: false
    service-url:
      #      设置注册服务器地址,开发测试时注册一个,上线服务器多台服务器,两台相互注册,三台两两相互注册 /eureka/
      defaultZone: http://localhost:8761/eureka
  1. ### Eureka client 服务注册
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
主启动类开启eureka客户端
@EnableDiscoveryClient
配制
eureka:
  client:
    #    是否从eureka获取注册信息
    fetch-registry: true
    # 是否注册到eureka(eureka本身是不需要再注册到自己的)(单机环境)
    register-with-eureka: true
    service-url:
      # 设置注册服务器地址,开发测试时注册一个,上线服务器多台服务器
      defaultZone: http://client:8761/eureka/
 #  instance:
  #    以IP:端口方式定位
  #    prefer-ip-address: true
  #    eureka.instance.instance-id: 主机名:应用名:端口号
  #    eureka主机名
  #    hostname: 127.0.0.1

常用配置说明:

配置参数 默认值 说明
服务注册中心配置 Bean类:org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean
eureka.server.enable-self-preservation false 关闭注册中心的保护机制,Eureka 会统计15分钟之内心跳失败的比例低于85%将会触发保护机制,不剔除服务提供者,如果关闭服务注册中心将不可用的实例正确剔除
服务实例类配置 Bean类:org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean
eureka.instance.prefer-ip-address false 不使用主机名来定义注册中心的地址,而使用IP地址的形式,如果设置了

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

eureka.instance.ip-address IP地址
eureka.instance.hostname 设置当前实例的主机名称
eureka.instance.appname 服务名,默认取 spring.application.name 配置值,如果没有则为 unknown
eureka.instance.lease-renewal-interval-in-seconds 30 定义服务续约任务(心跳)的调用间隔,单位:秒
eureka.instance.lease-expiration-duration-in-seconds 90 定义服务失效的时间,单位:秒
eureka.instance.status-page-url-path /info 状态页面的URL,相对路径,默认使用 HTTP 访问,如果需要使用 HTTPS则需要使用绝对路径配置
eureka.instance.status-page-url 状态页面的URL,绝对路径
eureka.instance.health-check-url-path /health 健康检查页面的URL,相对路径,默认使用 HTTP 访问,如果需要使用 HTTPS则需要使用绝对路径配置
eureka.instance.health-check-url 健康检查页面的URL,绝对路径
服务注册类配置 Bean类:org.springframework.cloud.netflix.eureka.EurekaClientConfigBean
eureka.client.service-url. 指定服务注册中心地址,类型为 HashMap,并设置有一组默认值,默认的Key为 defaultZone;默认的Value为 http://localhost:8761/eureka ,如果服务注册中心为高可用集群时,多个注册中心地址以逗号分隔。

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

eureka.client.fetch-registery true 检索服务
eureka.client.registery-fetch-interval-seconds 30 从Eureka服务器端获取注册信息的间隔时间,单位:秒
eureka.client.register-with-eureka true 启动服务注册
eureka.client.eureka-server-connect-timeout-seconds 5 连接 Eureka Server 的超时时间,单位:秒
eureka.client.eureka-server-read-timeout-seconds 8 读取 Eureka Server 信息的超时时间,单位:秒
eureka.client.filter-only-up-instances true 获取实例时是否过滤,只保留UP状态的实例
eureka.client.eureka-connection-idle-timeout-seconds 30 Eureka 服务端连接空闲关闭时间,单位:秒
eureka.client.eureka-server-total-connections 200 从Eureka 客户端到所有Eureka服务端的连接总数
eureka.client.eureka-server-total-connections-per-host 50 从Eureka客户端到每个Eureka服务主机的连接总数

https://www.cnblogs.com/li3807/p/7282492.html

eureka-client无法启动com.netflix.discovery.DiscoveryClient : Shutting down DiscoveryClient

解决思路:

“Unregistering application unknown with eureka with status DOWN”,eureka无法注册未知应用程序,导致停止。感觉应该是缺少容器,spring-boot-starter-web中含有tomcat。

解决方法:
在pom.xml中加入或者父pom.xml中加入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>