问题标签 [netflix-zuul]

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 投票
1 回答
1521 浏览

reverse-proxy - Netflix Zuul 停止重定向/启用反向代理

我有以下 Zuul 配置。我也禁用了 Eureka,因为我有服务发现。

现在,当我点击localhost:7777/api/newpathZuul 时,会进行 302 重定向,而不是透明地进行反向代理。请告知如何停止此重定向并使 Zuul 透明地反向代理。

0 投票
1 回答
635 浏览

microservices - Zuul 自动发现问题

我们正在建立一个新的微服务架构,前端是 Zuul,后端是一堆支持 tomcat 的微服务。每个服务在启动时都会向 Eureka 注册,任何想要调用这些服务的客户端都将通过 Zuul 进行。我们已经把这一切都连接好,一切正常。

然而,我有几个问题,我们如何才能使这个架构更加动态。

  1. 我们假设 Ribbon/Eureka 开箱即用,但尚未找到解决方案的一件事是,当我们向后端添加更多服务时,不知何故(通过 Archiaus 并更新到 Zuul 的 eureka-client.properties 文件) Zuul 的 Ribbon 客户端会使用新的服务细节(例如 vipaddress、负载平衡算法等)更新自己。到目前为止,唯一可行的方法是更新属性文件并重新启动 Zuul (ughhh)。

例如,假设今天我们在后端有 2 个微服务,因此,Zuul 的 eureka/ribbon 客户端配置将包括以下内容:

ribbon.client.niws.clientlist=service1|service2 zuul.ribbon.namespace=zuul.client

service1.zuul.client.DeploymentContextBasedVipAddresses=myService1 service1.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList

service2.zuul.client.DeploymentContextBasedVipAddresses=myService2 service2.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList

现在明天,假设我们需要添加 service3。我们观察到的是,如果我们将这些细节添加到相同的配置中(见下文),它们只有在重新启动后才对 Zuul 可用。是否还有其他一些我们缺少的配置参数可以让我们动态引入新的服务细节,或者我们是否必须滚动我们自己的 Eureka/Ribbon 客户端才能做到这一点?

ribbon.client.niws.clientlist=service1|service2|service3 zuul.ribbon.namespace=zuul.client

service1.zuul.client.DeploymentContextBasedVipAddresses=myService1 service1.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList

service2.zuul.client.DeploymentContextBasedVipAddresses=myService2 service2.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList

service3.zuul.client.DeploymentContextBasedVipAddresses=myService3 service3.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList

  1. 我的另一个问题是相关的,那就是我们真的需要为 Zuul 可能路由到的每个服务添加客户端配置(在 eureka-client.properties 中)吗?在某些时候,我们可能有 100 多个服务正在运行,并且试图在 Zuul 中维护所有相关的客户端配置似乎有点笨拙。有没有办法全局配置 Zuul 以将所有服务从 Eureka(或基于 Eureka 中的某些服务元数据)加载到其客户端列表中,并在新服务向 Eureka 注册时动态更新此列表?

谢谢!

0 投票
1 回答
3410 浏览

spring - Spring Cloud - Zuul - 自定义过滤器

Spring cloud Netflix 文档没有关于现有 Zuul 过滤器的任何信息。是否有任何其他资源可以解释现有的 zuul 过滤器、创建新过滤器的指南?另外我需要知道我应该在我的自定义过滤器中设置什么优先级,以及我是否需要像在 servlet 过滤器中那样使用 ResponseWappers?

0 投票
1 回答
1302 浏览

aggregate - Spring Cloud - Zuul - 聚合响应

Zuul 如何用于聚合两个端点的结果?即假设正在发出/api/notes 请求。

  1. Zuul 应该调用 /notes/from/source/1 和 /notes/from/source/2 端点
  2. 从两个端点收到的汇总结果
  3. 将汇总结果发送给发起结果的客户

这可以用 Zuul 轻松完成吗?如果没有,除了提供过滤器链之外,我看不到 Zuul 提供的任何其他工具。

0 投票
1 回答
6743 浏览

spring-boot - Zuul url映射与spring boot,Eureka

我正在使用微服务架构构建 Rest api。我有多个我们已经制作成多个项目的用户 api。除了我无法将面向用户的 url 映射到 zuul 中的应用程序 url 之外,我已经准备好了其他所有东西。

面向用户的 url 是:user/v1/accountholders/{id}/cards,我的应用程序的实际 url 是 /user-cards/v1/accountholders/{id}/cards。

这里 id 是路径变量。下面是其他类似的 api url,所以如果有一种方法可以在 zuul 中通用地配置它们。此外,应用程序 url 的上下文根也是 Eureka 中的项目名称。

需要一些帮助才能在 zuul 的属性或 yml 文件中进行设置。我还没有能够在映射方面取得任何进展。任何输入都会有所帮助。

已解决:- 从@Daniel 获得输入后(这是公认的答案)这是我在 zuul config 中使用的:-

0 投票
2 回答
1160 浏览

java - 带有 servlet-api 2.5 的 Spring Cloud Zuul

  1. @EnableZuulProxy 在 servlet 2.5 容器下不起作用。是否有任何解决方法可以让 spring-cloud zuul 在servet 2.5 容器下工作?

  2. 我也找不到@EnableZuulProxy 的注释处理器。请提供支持 @EnableZuulProxy 的类,以便我可以更好地理解这个注释的真正作用。

0 投票
0 回答
388 浏览

spring-boot - 带有涡轮问题的 Hystrix 仪表板

我有多个通过 zuul 映射的服务,因此我的涡轮机项目从 zuul 项目中查找 hystrix.stream。

我认为我已经正确设置了所有内容,因为我可以看到点击数得到正确更新。但是下面的线程池部分继续加载我在这里缺少什么以及它的用途,找不到任何可以帮助我理解它的实际用途的东西。这是我的仪表板的屏幕截图。 Hystrix 仪表板图像

让我知道是否需要更多信息。

0 投票
2 回答
2357 浏览

spring-cloud - spring cloud zuul 配置

我正在对Spring Cloud应用程序进行负载测试。当并发用户数达到某个点时,我开始出现转发错误

下面是来自zuul的日志。根本原因是“无法获取执行信号量”

我的问题是如何配置 zuul 以避免这种转发错误。非常感谢您的帮助。

0 投票
0 回答
1238 浏览

spring-security - Spring Netflix Zuul:验证和路由相同的请求

我有一堆服务位于 Zuul 边缘服务器后面。Zuul Edge Server 也执行身份验证。会话使用 Spring Session 与所有服务共享。我希望能够在同一流程中对请求进行身份验证并将请求路由到服务。我查看了Dave Syer 的教程,其中网关服务器可以验证和路由请求。

在该项目上,以下命令有效:

  • curl -u admin:admin http://localhost:8080/user
  • curl -c cookie.txt -u admin:admin http://localhost:8080/user && curl -b cookie.txt http://localhost:8080/admin/user

我希望这也能正常工作,但事实并非如此:

  • curl -u admin:admin http://localhost:8080/admin/user

我期待网关服务器进行身份验证,创建一个 redis 会话,将请求路由到管理服务,该服务将从 redis 会话中选择身份验证。请求被路由到管理服务,但它也尝试基本身份验证并失败。

这是我在管理服务的日志中看到的:

我收到 HTTP 401 Unauthorized 响应。

我还尝试在管理服务中禁用 HTTP 基本身份验证,但随后我收到 HTTP 403 Forbidden 响应。

有没有办法做到这一点?

更新

我认为这是行不通的,因为 Spring Session 的实现方式是保存会话。我正在等待对我在 github 上的问题的答复。

0 投票
1 回答
3226 浏览

spring-mvc - Spring Cloud Netflix:通过 RequestInterceptor 将主机请求参数传递给 FeignClient

我正在使用 Eureka、Zuul 和 FeignClient 构建一个 Spring Cloud 项目(带有 Spring Boot 1.3.1 的 Brixton.M4),我正在尝试添加多租户支持(租户由子域标识:tenant1.myservice.com)。为此,我想以某种方式将原始子域与通过 Feign 从服务转发到另一个服务的请求一起传递,但我似乎无法找到正确的方法来做到这一点。

我所拥有的是一个客户端,它公开了一个@RestController,它调用一个@FeignClient 来与我的后端通信,该后端通过它自己的@RestController 向客户端公开服务器操作。

@FeignClient 在服务器上使用与我的@RestController 相同的接口:

我目前正在尝试做的是在 RequestInterceptor 中设置一个标头:

我的提供者类是一个简单的组件,我试图在其中注入请求/会话范围 bean:

bean(我尝试了会话和请求范围):

在服务器上,我使用 Hibernate 多租户提供程序,它应该捕获标头值并使用它来定义要连接到哪个数据库:

似乎对服务器的 Feign 调用是在另一个线程中完成的,并且超出了传入的请求范围,所以我不确定如何传递该值。

当我在 RequestInterceptor 中对租户值进行硬编码时,一切正常,所以我知道其余部分工作正常。

我还查看了许多其他关于 Zuul “X-Forwaded-For” 标头的帖子,但在服务器上收到的请求中找不到它。我也尝试添加一个 ZuulFilter 以将主机名传递给下一个请求,但我看到的是 ZuulFilter 接收了对客户端的原始请求,我可以添加但当 Feign 请求发送到后端服务时不能添加,即使我在zuul中映射它(我想这是有意的?)。

我不太确定下一步是什么,希望能得到一些建议。