springCloud:Eureka的自我保护模式多网卡下的IP选择Eureka的健康检查

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springCloud:Eureka的自我保护模式多网卡下的IP选择Eureka的健康检查相关的知识,希望对你有一定的参考价值。

一、Eureka的自我保护模式

进入自我保护模式最直观的体现就是Eureka Server首页的警告,如下图:

 技术分享

 默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,这就可能变得非常危险了----因为微服务本身是健康的,此时本不应该注销这个微服务。

  Eureka Server通过“自我保护模式”来解决这个问题----当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。


  自我保护模式是一种对网络异常的安全保护措施。使用自我保护模式,而已让Eureka集群更加的健壮、稳定。


在Spring Cloud中,可以使用eureka.server.enable-self-preservation=false来禁用自我保护模式,当然也可以使用显示指定IP地址来解决:

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

二、多网卡环境下的IP选择

2.1、简介

指定IP在某些场景下很有用,如某台服务器有eth0、eth1和eth2三块网卡,但是eth1可以被其它的服务器访问;如果Eureka Client将eth0或者eth2注册到Eureka Server上,其它微服务就无法通过这个IP调用该微服务的接口。


Spring Cloud提供了按需选择IP的能力,从而避免以上的问题。

2.2、操作

方案1、忽略指定名称的网卡

#忽略eth0,支持正则表达式
spring.cloud.inetutils.ignored-interfaces[0]=eth0
#注册时使用ip而不是主机名
eureka.instance.prefer-ip-address=true

方案2、只使用站点本地地址

#只使用站点本地地址
spring.cloud.inetutils.use-only-site-local-interfaces=true
#注册时使用ip而不是主机名
eureka.instance.prefer-ip-address=true

方案3、手动指定IP地址

#手动指定IP地址
spring.cloud.inetutils.default-ip-address=127.0.0.1
#注册时使用ip而不是主机名
eureka.instance.prefer-ip-address=true

三、Eureka的健康检查

先看下图:

 技术分享

说明:在Status栏显示着UP,表示应用程序状态正常。其它取值DOWN、OUT_OF_SERVICE、UNKNOWN等,只有UP的微服务会被请求。


由于Eureka Server与Eureka Client之间使用心跳机制来确定Eureka Client的状态,默认情况下,服务器端与客户端的心跳保持正常,应用程序就会始终保持“UP”状态,所以微服务的UP并不能完全反应应用程序的状态。


Spring Boot Actuator提供了/health端点,该端点可展示应用程序的健康信息,只有将该端点中的健康状态传播到Eureka Server就可以了,实现这点很简单,只需为微服务配置如下内容:

#开启健康检查(需要spring-boot-starter-actuator依赖)
eureka.client.healthcheck.enabled = true

如果需要更细粒度健康检查,可实现com.netflix.appinfo.HealthCheckHandler接口

 

本文出自 “我爱大金子” 博客,请务必保留此出处http://1754966750.blog.51cto.com/7455444/1941655

以上是关于springCloud:Eureka的自我保护模式多网卡下的IP选择Eureka的健康检查的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud系列教程第九篇-Eureka自我保护机制

F版本SpringCloud 5—Eureka集群和自我保护机制

springcloud Eureka自我保护机制

springcloud--eureka服务治理深入浅出

SpringCloud02_Eureka概述单机案例集群案例微服务服务完善服务发现Discovery自我保护机制

Eureka的自我保护机制