Eureka的自我保护模式、多网卡环境下的IP选择和健康检查

Eureka的自我保护模式

禁用自我保护模式:
eureka.server.enable-self-preservation = false

多网卡环境下的IP选择

对于多网卡的服务器,各个微服务注册到Eureka Server上的IP要如何指定呢?

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

1.忽略指定名称的网卡

例如:
spring:
cloud:
inetutils:
ignored-interfaces:
- docker0
- veth.*
eureka:
instance:
prefer-ip-address: true

这样就能忽略docker0网卡以及所有以veth开头的网卡。

2.使用正则表达式,指定使用的网络地址

示例:
spring:
cloud:
inetutils:
preferredNetworks:
- 192.168
- 10.0
eureka:
instance:
prefer-ip-address: true

3.只是用站点本地地址

示例:
spring:
cloud:
inetutils:
useOnlySiteLocalInterfaces: true
eureka:
instance:
prefer-ip-address: true

这样就可强制使用站点本地地址

4.手动指定IP地址

在某些极端场景下,可以手动指定注册到Eureka Serever的微服务IP。示例:

eureka:
instance:
prefer-ip-address:true
ip-address:127.0.0.1

Eureka的健康检查

Eureka Server与Eureka Client之间使用心跳机制来确定Eureka Client的状态,
默认情况下,服务器端与客户端的心跳保持正常,应用程序就会始终保持"UP"状态。
以上机制并不能完全反映应用程序的状态。举个例子,微服务与Eureka Server之间的
心跳正常,Eureka Server认为该微服务“UP”;然而,该微服务的数据数据源发生了问题
(例如网络抖动,连不上数据源),根本无法正常工作。

要实现这一点,只需启动Eureka的健康检查。这样,应用程序就会将自己的健康状态传播到
Eureka Server。开启的方法非常简单,只须为微服务配置一下内容,就可以开启健康检查。

eureka:
client:
healthcheck:
enabled:true

注意:

  1. eureka.client.healthcheck.enabled=true只能配置在application.yml中,如果配置在
    bootstrap.yml(后文有详解)中,可能会导致一些不良的副作用,例如应用注册到Eureka
    Server上的状态是 UNKNOWN。
  2. 当eureka.client.healthcheck.enabled=true 时,/pause端点(该端点由Spring Boot
    Actuator提供,用于暂停应用)无法正常工作。经笔者测试,发现当eureka.client.
    healthcheck.enabled=true 时,请求/pause端点无法将应用在Eureka Server上的状态标
    记为DOWN。(该bug还未修复)

本文大部分内容转载自周立的《Spring Cloud与Docker微服务架构实战》

猜你喜欢

转载自blog.csdn.net/weixin_43439494/article/details/83511912