【问题标题】:Zuul proxy that discovers routes dynamically动态发现路由的 Zuul 代理
【发布时间】:2017-09-30 12:18:14
【问题描述】:

我有一个简单的 Zuul 应用程序,它在 application.yml 中有一个路由来路由到我的微服务。它正在工作。

但是,我正在寻找的是一个更动态的解决方案,我可以通过代码或在构建期间发布到某些 Zuul 端点来动态连接路由(可能通过使用 springfox 和来自微服务的 swagger 定义) .我找不到 Zuul 的 API。

我有点了解 Eureka,这似乎是一种通过发现来抽象路由的解决方案。但是,我很好奇是否有不引入 Eureka 的解决方案。如果有办法在构建期间在 Zuul 中连接这些路由,而不是每次都必须编辑 application.yml。

提前致谢。

【问题讨论】:

    标签: spring spring-boot swagger netflix-zuul


    【解决方案1】:

    如果你选择 Eureka,这实际上可以 ootb 工作。打包在 spring cloud 中的 Zuul 将使用其名称自动公开每个服务。所以如果你在 Eureka 中注册了一个名为 users 的服务,Zuul 会默认自动创建一个路由 /users 转发到实例。那将只允许简单的 url 结构,但应该可以解决您的问题。

    详情请见official documentation

    按照惯例,ID 为“users”的服务将接收来自位于 /users 的代理的请求(去掉前缀)。代理使用 Ribbon 来定位要通过发现转发到的实例,所有请求都在 hystrix 命令中执行,...

    【讨论】:

    • 感谢您的回复。我发现这篇文章介绍了 Eureka 的基础知识并注册了一些客户端:dzone.com/articles/… 要让 Gateway 应用程序 (Zuul) 注册,我想我错过了让 Zuul 应用程序“意识到”Eureka 的部分。 Zuul 应用程序的 application.yml 文件中的条目是否只是一个问题?我会继续自己研究。谢谢。
    • @Mike 通过指向 Spring Cloud 文档的链接更新了我的答案。
    【解决方案2】:

    我实际上正在编辑一篇关于这个确切主题的博客文章(使用 Spring Cloud Zuul 服务器进行路由和过滤),但源代码已经可用并且已经工作了一段时间。随意将其用作参考:

    查看可刷新的Spring 配置文件设置。此 Zuul 设置适用于硬编码路由 url 或使用 Eureka 发现的。

    它还充当 Spring Cloud Config 客户端,以便可以通过 Git 动态更新路由,这也在另一篇博文中介绍:Refreshable Configuration using Spring Cloud Config Server, Spring Cloud Bus, RabbitMQ and Git

    【讨论】:

    • 谢谢。我一定会看看的。我目前正在努力解决的一件事是,我在 zuul 代理上启用了 oauth:oauth2: resource: userInfoUri: https:/...../userinfo 这工作的原因是它需要一个有效的 oauth 令牌,用于通过 Zuul 代理的任何下游服务。但是,zuul 服务器本身的 /health 端点是安全的,所以我认为我的 Eureka 无法 ping 它进行注册。客户端将使用令牌调用 Zuul。那么,当proxy需要token进行调用时,如何让Zuul注册到Eureka呢?
    • 您是否考虑不向 Eureka 注册 Zuul 并将其作为入口点/负载均衡器/代理暴露给服务?
    • 是的。我正在尝试使用 Zuul 作为代理,并且在那里启用了 Oauth 检查(并且它正在工作)。但是,我想要的是让 Zuul 动态定位在 Eureka 注册的所有服务(即没有在 Zuul 应用程序的 application.yml 中指定每个“路由”)。为此,据我了解,我还需要将 Zuul 注册为 Eureka 的 DiscoveryClient。当我这样做时,/health 检查在击中 Zuul 时会失败,因为它需要一个令牌。可能最简单的解决方案是让 Zuul 应用程序允许 /health、/info 端点在没有令牌的情况下被击中——如果有办法配置它的话。谢谢。
    • 啊,有趣,我想你会 Zuul 发现每个服务并按照 tle 的约定优于配置设置路由。
    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2019-02-01
    • 2016-06-28
    • 1970-01-01
    • 2016-12-12
    • 2021-01-30
    • 2018-04-05
    相关资源
    最近更新 更多