问题标签 [netflix-ribbon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1043 浏览

java - spring-cloud 和ribbon 可以进行基于DNS的负载均衡吗?

Cloudfoundry 计划添加对映射到多个 IP(每个应用容器实例一个)的 DNS A 记录的支持,请参阅docs-proposal。想知道spring-cloud discovery配合ribbon能不能支持基于DNS的客户端负载均衡。

spring-cloud DiscoveryClient 似乎不做 DNS 解析,它管理主机名

功能区负载平衡库通过ListOfServers属性支持 FQDN 列表。

但是我找不到与指定服务器的 DNS 查找相关的文档:即如果 DNS A/AAA 记录(从 ListOfServers 获取)返回多个 IP 地址,功能区是否会在 IP 地址之间进行负载平衡?

我需要在哪里配置 DNS 缓存指令?这在 java.security 支持中是 JVM 范围的,还是我可以将其作为客户端幻灯片负载平衡选项(来自功能区)进行管理?

0 投票
1 回答
1255 浏览

spring-cloud-netflix - 没有 Eureka 的功能区:功能区不记得服务器通过 PingURL 关闭

我正在使用没有 Eureka 的功能区。我正在使用 ConfigurationBasedServerList 来提供这样的服务器实例列表..

我已经使用 /health 端点配置了 PingURL。我还配置了可用性过滤规则,它需要过滤不可用的服务器实例。像这样。。

这大多运作良好。它在一种情况下效果不佳。当在端口 9008 上运行的服务器实例关闭时就是这种情况。

让我用一些 DEBUG 消息来解释一下。

查看调试消息。所遵循的过程如下所示: 1) 清除服务器列表并再次从配置中添加服务器。2) ping 他们的状态。3) 根据 ping 结果更新可用服务器列表。

似乎每 30 秒就会发生一次上述过程,即维护 DynamicServerList。

现在,问题是 - 从第一个日志语句到倒数第二个日志语句,ribbon 认为两个服务器实例都可用。因此,如果在该时间内有负载平衡请求,则有可能将其发送到服务器 localhost:9008,该服务器处于 DOWN 状态。

据我了解,功能区库不保留 PingStatistics。我认为该库依赖于像 Eureka 这样的服务发现工具来提供动态服务器列表,这些工具取决于一些健康检查。

现在,为了解决这个问题,我可以开始使用 Eureka,这个问题可能会消失。我不想使用 Eureka,因为我的环境不会经常增长/缩小……它几乎是静态的。

我在这里缺少配置吗?我们如何解决这个问题?

我正在使用“spring-cloud-starter-ribbon”版本 1.2.6.RELEASE。

0 投票
0 回答
73 浏览

spring-boot - 如何在不同的 Spring Boot 微服务实例之间分配负载

比如说,我们可以限制一个实例处理的请求数应该是 50 个,其余的必须由另一个实例处理。我们是否需要与功能区相关的任何配置更改。

0 投票
2 回答
5720 浏览

java - Ribbon 和 Eureka - 没有可用的实例

我用 Ribbon 和 Netflix Eureka 创建了一个简单的项目。尤里卡工作正常,我可以看到所有注册的服务。但是,功能区负载均衡器看不到这些服务。实际上,在日志中它打印出它在“当前服务器列表”中看到了服务器,但是我得到了没有找到实例的异常。我将非常感谢一些提示,我花了很多时间(和几天)来弄清楚。

日志(我用 替换了我的 ip <MY_IP>):

代码:

应用程序.yml

Eureka 服务器位于默认端口上。我错过了什么?

编辑:尤里卡看到这项服务:

屏幕

0 投票
1 回答
364 浏览

spring-boot - Hystrix 为有问题的服务实例开路?

假设以下场景:

  1. 我在启用 Hystrix 的情况下让 ServiceA 调用 ServiceB
  2. 有 2 个 ServiceB 实例
  3. 其中一个实例面临一些非常严重的问题,其端点一直在抛出错误,但另一个实例运行良好
  4. errorThresholdPercentage设置为 80%
  5. 鉴于我们有一个运行良好的服务实例,它不可能errorThresholdPercentage超过 80%(最多只能达到 50%)
  6. 这意味着只要有问题的实例正在运行,我们仍然会调用它并得到错误

有什么方法可以配置 Hystrix 将电路翻转到实例级别?

0 投票
1 回答
1693 浏览

java - 如何让功能区和尤里卡知道服务器不再启动

我正在一个微服务架构中工作,其工作方式如下

在此处输入图像描述

我有两个服务 Web 应用程序(REST 服务)在 eureka 服务器中正确注册自己,然后我有一个客户端应用程序获取 eureka 注册表并使用功能区作为客户端负载均衡器,确定​​哪个服务应用程序去(目前,正在使用一个简单的循环)。

我的问题是,当我停止其中一个服务应用程序(它们当前在 docker 容器中运行)时,eureka 不会将它们从注册表中删除(似乎需要几分钟),所以功能区仍然认为有 2 个可用服务,使得大约 50% 的呼叫失败。

不幸的是,我没有使用 Spring Cloud(我无法控制的原因)。所以我对尤里卡的配置如下。

对于服务应用程序:

对于客户端应用程序(eureka + 功能区)

0 投票
1 回答
11554 浏览

rest - SSLPeerUnverifiedException - <> 的证书与证书主题的通用名称不匹配

当我们尝试从 zuul 访问安全的 https REST 点时,出现以下异常。

服务通过 POST 请求向 eureka 注册。请找到以下示例 POST 请求。

服务通过 POST 请求向 eureka 注册。请找到以下示例 POST 请求。

如果我在上面的zuul配置中将serviceId替换为相应的url,它就可以正常工作。

keystore.jks 一直在 src/main/resources 下。此外,将密钥库条目导入到 $JDK_HOME/jre/lib/security/cacerts 下的证书中。我们是否缺少任何其他配置?

注意: REST 端点是一个 OSGI 服务。spring boot 版本:v1.5.7.RELEASE 我们使用嵌入式tomcat。

0 投票
1 回答
3644 浏览

spring - 如何在没有 Eureka 的情况下配置 zuul 和 Ribbon 以实现负载平衡和故障转移

Spring Boot 版本:1.5.7.Release Spring Cloud 版本:Dalston.SR4

我正在使用功能区测试 zuul 服务器,但我不想 Eureka

我在zuul服务器中添加了以下配置。

问题

通常 zuul 服务器运行良好,但其中一个服务器正在关闭,然后响应返回如下消息。这种情况下的调试点是什么?

0 投票
1 回答
947 浏览

spring - 使用 Netflix 功能区的 Cloud Rest 客户端上的 org.springframework.beans.factory.UnsatisfiedDependencyException

org.springframework.beans.factory.UnsatisfiedDependencyException正在SpringClientSideRibbonApplication.java上课。我认为没有错误,但我不知道为什么会出现此异常。请帮我。我正在使用 STS IDE。

我的配置.java

SpringClientSideRibbonApplication.java

WebController.java

错误信息

应用程序.yml

依赖

0 投票
0 回答
508 浏览

java - 如何跟踪 Spring Cloud Netflix Ribbon 选择了哪个服务器(在 Zuul 中)

我正在使用 Spring Netflix Eureka、Zuul 和 Ribbon 开发一个专门的、动态的 Web 应用程序路由器。我需要知道功能区负载平衡器从在 Eureka 中使用给定服务 ID 注册的服务器池中选择了哪个服务器来路由请求。

Zuul 似乎没有在 RequestContext 中跟踪 Ribbon 选择的服务器。

上下文:这不是传统的无状态 REST 服务路由。此路由器正在管理使用不可共享(目前)会话的遗留 Java Web 应用程序池。这些遗留服务器正在被改造为 Spring Boot Eureka 感知应用程序。他们将在给定的服务器 ID 下向 Eureka 注册。他们还将注册一个 GUID 作为 Eureka 元数据,该元数据唯一地定义了应用程序的执行实例。

我正在实现一个粘性会话方案,它将 Java 会话 ID 与生成会话的服务器的唯一服务器 ID(GUID)相关联。

因此,当收到带有会话 cookie 的请求时,我将使用我已经编写的功能区规则和谓词过滤器(出于其他原因)将服务器列表过滤为仅与会话关联的 GUID 的服务器列表。

可能还有其他方法可以做到这一点,但就我而言,除了知道实际执行请求的服务器的知识之外,我拥有我需要的所有材料。