【发布时间】:2017-10-25 08:59:58
【问题描述】:
总而言之,我添加了spring-boot-starter-actuator 以便添加/health 端点。
在 Zuul/Ribbon 配置中我添加了:
zuul:
ignoredServices: "*"
routes:
home-service:
path: /service/**
serviceId: home-service
retryable: true
home-service:
ribbon:
listOfServers: localhost:8080,localhost:8081
eureka.enabled: false
ServerListRefreshInterval: 1
因此,每次客户端调用GET http://localhost:7070/service/home时,负载均衡器将选择运行在 8080 或 8081 端口上的两个 HomeService 之一,并调用其端点 /home。
但是,当 HomeService 之一关闭时,负载均衡器似乎不知道(尽管有 ServerListRefreshInterval 配置),如果它尝试调用关闭实例,则会失败并显示 error=500。
我该如何解决?
【问题讨论】:
-
我在 spring-cloud-netflix github 存储库中发布了相同的问题(作为问题):github.com/spring-cloud/spring-cloud-netflix/issues/1984
-
你有静态主机,所以我怀疑这会起作用。 AFAIK 仅在您使用服务发现时才有效,但由于您的路由是静态的,它将始终在相同的 2 个实例上运行(无论服务的状态如何)。 Zuul 用于代理而不是服务发现。
-
同意。目标不是将 zuul 用作发现服务,而是在与 zuul 相同的网关中使用功能区进行负载平衡。一个,不使用任何发现服务(如 consul 或 eureka)
标签: spring load-balancing netflix-zuul netflix-ribbon