如何使用Netflix / Eureka执行故障转移?

时间:2016-06-18 21:55:07

标签: java spring-boot spring-cloud failover netflix-eureka

我使用Eureka作为我的服务发现和负载均衡器,当它有两个服务实例“A”时工作正常,但是当我停止其中一个实例时,Eureka无法识别其中一个实例每次负载均衡器尝试使用死实例时,它都会停止显示错误页面。

我已将enableSelfPreservation放到false以防止这种情况,但是取出注册该服务需要3到5分钟,但是我希望我的服务具有高可用性并且我想执行在几秒钟内立即进行故障转移。这是否可能使用Eureka,如果不是,我怎样才能在其他人死亡时只使用活着的实例。

我正在使用spring boot,这是我对Eureka服务器的配置。

server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  server:
    enableSelfPreservation: false

1 个答案:

答案 0 :(得分:0)

您应该为您的application.yml添加功能区配置。还建议使用超时设置将hystrix隔离级别设置为THREAD。

注意:此配置应位于客户端端(这通常意味着您的网关服务器),因为功能区(通常是Spring Cloud)是客户端负载平衡的一种形式。

以下是我使用的示例:

hystrix:
  command:
    default:
      execution:
        isolation:
          strategy: THREAD
          thread:
            timeoutInMilliseconds: 40000 #Timeout after this time in milliseconds

ribbon:
  ConnectTimeout: 5000 #try to connect to the endpoint for 5 seconds.
  ReadTimeout: 5000 #try to get a response after successfull connection for 5 seconds
  # Max number of retries on the same server (excluding the first try)
  maxAutoRetries: 1
  # Max number of next servers to retry (excluding the first server)
  MaxAutoRetriesNextServer: 2