【问题标题】:Turbine stream double port binding issue涡轮流双端口绑定问题
【发布时间】:2018-06-19 22:48:19
【问题描述】:

我正在使用 Spring Boot 1.5.4 和 Spring Cloud Dalston SR4 在 Cloud Foundry 上建立 Turbine 服务器并聚合我的应用程序 Hystrix 流。另外我想在 Turbine 服务器上添加 Spring Boot Actuator 监控和管理。我意识到有足够的文档说明如何在本地环境中执行此操作,并且我确实让它在本地工作。但是,在部署到无法在 Url 绑定中使用端口号的 Cloud Foundry 时,情况就不同了。

问题在于 Turbine 流是由一个端口上的 RxNetty 服务器提供的,而执行器端点是通过另一个端口上的 Tomcat 提供的。在 Cloud Foundry 中,我只能将我的 Url 绑定到 RxNetty 端点或 Tomcat 端点,而不是两者。

management.port 和turbine.stream.port 的组合不允许我从一个主机绑定访问涡轮流和执行器端点。以下是我期望能够做的一个例子:-

https://myapp.mydomain.com/info(报告执行器信息详细信息) https://myapp.mydomain.com/turbine.stream(流式传输涡轮机指标)

注意:这些网址中没有端口号。

【问题讨论】:

  • 不幸的是,在带有引导 1.5.x 和 Dalston 或 Edgware 的 CF 上是不可能的。它将与 boot 2.0 和 Finchley 一起使用。
  • 在 Boot 2.0 中我需要做些什么特别的事情,或者它是否可以开箱即用。
  • Netty 在 boot 2.0 中拥有一流的支持。它将侦听 server.port 并具有正常的执行器行为。
  • @specergibb 不是你需要它,但如果你想要它,你可以发布这些 cmets 作为答案,我会接受它。

标签: spring-boot spring-cloud spring-cloud-netflix cloud-foundry turbine


【解决方案1】:

现在回到这个话题。正如 spencergibb 所指出的,迁移到 springboot 2.0 和云 Finchley 是可行的。

【讨论】:

    【解决方案2】:

    对 Cloud Foundry 上您的应用程序的请求通过 Cloud Foundry Go 路由器,该路由器使用 http 主机标头将流量引导到运行您的应用程序的所有容器实例。基于 http 的 gorouter 期望应用程序只打开一个端口以将 http 流量转发到。但是,gorouter 也支持 tcp 路由,这应该允许您打开多个端口。请参阅docs,了解 Cloud Foundry 上的 tcp 与 http 路由的解释。

    如果您在 Pivotal Cloud Foundry 上运行,则可以使用 Spring Cloud Serviecs 为 PCF 提供的 Circuit Breaker Dashboard,那么您无需设置涡轮流。 Spring Cloud Services Dashboard 使用 RabbitMQ 而不是 SSE 事件,详情请参阅SCS docs

    【讨论】:

    • 我已经阅读了您建议的 TCP 路由。但是,我不清楚什么定义了 TCP 应用程序。您是说 2 个 HTTP 端点(Turbine/Actuator)中的任何一个都可以在 tcp 路由上运行,而不是在 HTTP 路由上运行?此外,我在 PCF 的托管本地实例上运行,因此 Spring Cloud Services 不适合我。
    • 没关系,我看到@spencergibb 已经回答说我正在尝试的事情还不可能。
    猜你喜欢
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2023-03-22
    • 2023-01-14
    • 2012-11-16
    相关资源
    最近更新 更多