我使用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
答案 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