Eureka深入理解

一、Eureka Environment配置和Eureka DataCenter的配置

二、Eureka开启自我保护的提示

三、Eureka注册服务慢的问题如何解决?

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

五、Eureka配置instanceId显示IP

 

一、Eureka Environment的配置

启动Eureka后,我们可以看到默认的环境和数据中心

我们配置一下eureka.environment和eureka.datacenter

security:
  basic:
    enabled: true
  user:
    name: user
    password: password123
server:
  port: 8761
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://user:password123@localhost:8761/eureka
  environment: local
  datacenter: cloud

二、Eureka开启自我保护的提示

Eureka server和client之间周期性心跳,每隔30秒会进行一次。
下图中我们看到Renews threshold和Renews (last min)
Renews threshold:server期望在每分钟中收到的心跳次数 
Renews (last min):上一分钟内收到的心跳次数

我关闭掉7900和7910后就出现了红色部分的提示

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进入了自我保护机制,默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳时,EurekaServer将会注销该实例(默认90s)。但是当网络发生故障时,微服务与EurekaServer之间无法通信,这样就会很危险了,因为微服务本身是很健康的,此时就不应该注销这个微服务,而Eureka通过自我保护机制来预防这种情况,当网络健康后,该EurekaServer节点就会自动退出自我保护模式。

四、如何解决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: 5 ---每隔5s心跳一次,证明本服务还活着
        leaseExpirationDurationInSeconds: 10 ---本服务10s内没有心跳,就将该服务从服务端剔除

 

THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.

在配置上,自我保护机制关闭了,但是一分钟内的续约数没有达到85% , 可能发生了网络分区,会有如下提示

 

五、Eureka配置instanceId显示IP:${spring.cloud.client.ipAddress}

eureka:

  instance:
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值