Eureka服务器缓存刷新

时间:2015-07-10 22:06:43

标签: spring-cloud netflix-eureka

有两个以下配置的eureka服务器(比如ES1和ES2)。

eureka:
  instance:
    metadataMap:
      instanceId: ${service.contextPath}:${spring.application.instance_id:${random.value}}
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

同步有效但在发布到生产期间,当一台eureka服务器(比如说ES2)被关闭时,另一台eureka服务器(ES1)仍然保留旧的缓存信息,当ES2启动时,它会注册eureka客户端但注销旧客户端没有发生,导致功能区负载均衡器使用陈旧信息。

使用以下配置注册eureka客户端。

{{1}}

为什么旧实例没有从eureka服务器取消注册?因此,我们必须完全关闭并重启我们的基础设施。

1 个答案:

答案 0 :(得分:0)

我猜你看到的是尤里卡自我保护功能的结果。简而言之,Eureka服务器在注意到它在最后一分钟收到的预期续订少于80%时会自动停止实例租约到期。当ES1发生故障时,ES2不再接收最初在ES1上注册的客户端的心跳 - 然后可能会激活自我保护模式。

为避免这种情况,您应该使用ES1 ES2配置客户端:如果ES1不可用,客户端将自动切换到ES2。为此,只需按如下方式列出两个地址:

eureka:
  client:
    serviceUrl:
      defaultZone: http://ES1:8761/eureka/,http://ES2:8761/eureka/

你也可以禁用自我保护功能 - 但这不是群集中的预期配置 - 所以期待奇怪的行为: - (