【问题标题】:Load balancing between two discovery servers两个发现服务器之间的负载平衡
【发布时间】:2015-08-05 20:02:05
【问题描述】:

我在对等模式下运行发现,其中我有 2 个发现服务器,这两个服务器都在交换信息并代表当前发现的服务集。

在服务用于连接到 eureka 的 serviceUrls 中有一个 csv 列表,其中存在 discoveryserver1,discoveryserver2。

所以服务总是去discoveryserver1,除非出现故障然后他们去discoveryserver2。

我想做的是让发现客户端在发现服务器 1 和发现服务器 2 之间循环,以便服务上的负载均衡。而是一个发现服务器负载很重,而另一个不使用(很多)

除非我重写发现客户端,否则我看不到这样做的方法。

想法?

【问题讨论】:

    标签: spring-cloud netflix-eureka


    【解决方案1】:

    最简单的方法是使用边缘服务器作为 zuul(幸运的是在 spring cloud stack 中可用:))。因此,您的所有请求都通过 zuul 代理,该代理使用功能区作为中间层服务的负载均衡器。当然,拥有冗余的 zuul 服务器很重要,因此您必须在前面设置一些 LB 作为 BigIp 或其他任何方式。

    如果您在没有 zuul 的情况下使用 eureka,并且唯一的客户端是您拥有的代码,那么您可以:

    1. 用 LoadBalancerClient 注释它或
    2. 使用 RestTemplate 或
    3. 使用 FeignClient 或
    4. 其他选项我不知道; )

    +在类路径上添加功能区,一切顺利。

    【讨论】:

    • 我使用 zuul 作为网关服务器,它采用冗余配置将传入请求提供给各种微服务。我想我可以将 @EnableZuulProxy 添加到每个服务并为 eureka 端点设置一个规则,尽管由于 eureka 在这个意义上不是一个正常的服务,我不能;不能在正常的路由中完全使用它。我想是一条静态路线,但我将不得不探索。
    • 这主要与包含@EnableDiscoveryClient 时内置的底层spring 云发现客户端有关
    • 在使用 zuul.routes.xxx.uri 阅读 zuul 文档时,uri 公式未通过功能区进行负载平衡,因此无法正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    相关资源
    最近更新 更多