【问题标题】:Port Binding - 12 Factor App端口绑定 - 12 因素应用程序
【发布时间】:2017-09-27 02:34:25
【问题描述】:

每当我部署一个 spring boot 应用程序时,它都会嵌入 tomcat 容器。它依赖于容器可用。这是否意味着这些应用程序不符合 12 因素应用程序,因为取决于网络服务器的运行时注入?

TCP 路由对非 http 服务意味着什么?

端口绑定

通过端口绑定导出服务。 12 因素应用程序是 完全独立,不依赖于运行时注入 Web 服务器进入执行环境以创建面向 Web 的 服务。

对于 Pivotal Cloud Foundry,非 HTTP 服务需要 TCP 路由 为了重新平台化。

【问题讨论】:

    标签: java spring-boot cloud-foundry 12factor


    【解决方案1】:

    当您在本地运行时,Spring Boot 应用程序会使用 default 配置文件运行。因此,Spring 将在运行时利用您的端口和其他设置。

    当您推送到云端时,Spring Boot 应用会使用 cloud 配置文件运行。在cloud 配置文件中,端口设置由云决定,您提供的设置将被忽略。

    在 PCF 中,Diego 单元托管所有应用实例。 Diego 单元有自己的 CIDR 块,用于托管应用程序。因此,您的应用实例将从该范围内获得 IP。而且您无法通过其 ip 访问该应用。

    不过,Diego 单元 vm 运行网络的 CIDR 范围内的 IP。 Diego cell 还使用 NAT-ing 将您的应用 ip 映射到 Diego cell vm 上的端口。这就是将流量路由到您的应用程序的方式。

    如您所见,PCF 中的 Diego 单元不能依赖您提供的端口。相反,它将在可能的地方运行应用程序,并 NAT 到可用端口。

    看看Diego Reference Architecture

    关于您的第二个问题,Cloud Foundry 中的 Go-Routers 将请求路由到应用实例。默认情况下,Go-Router 上仅启用 http/https 流量。您可以在 Go-Routers 上启用 TCP 路由。我相信这是在 PCF 1.9 中添加的。 这是documentation

    【讨论】:

      猜你喜欢
      • 2023-02-05
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多