CloudFoundry应用程序打开两个端口

时间:2015-08-18 13:19:29

标签: cloudfoundry

我有一个打开两个端口的CF应用程序。 AFAIK CF只能为其中一个创建路由 - 位于String value = null; if(value != null) { //do your logic } else { System.out.println("Null Value"); } VCAP_APP_PORT的路由。如何创建到第二个端口的路由?我不介意将其他名称指向其他端口。

3 个答案:

答案 0 :(得分:3)

Cloud Foundry会将来自80/443的TCP / WebSocket流量路由到指定的一个端口。您的应用程序无法侦听任何其他端口。

https://docs.cloudfoundry.org/devguide/deploy-apps/prepare-to-deploy.html#ports

您可以创建多个url映射,也可以使用消息传递或数据库服务创建两个相互通信的应用程序。

答案 1 :(得分:2)

如其他注释中所述,现在可以在CF中为您的应用程序使用多个端口。 CF文档中有一个chapter,描述了如何执行此操作。 我遵循了说明,但仍然难以完全理解它,这就是为什么我在此处提供一些说明的逐步指南(将[]中的所有变量替换为实际值)的原因:

  1. 配置您的应用程序以侦听多个端口。在我的情况下,我配置了一个Spring Boot应用程序以在端口8080上侦听HTTPS请求,并在端口8081上侦听HTTP请求(用于对执行器端点(如here中所述的运行状况/方法)的调用)。这意味着我在CF中配置了一个TCP路由和一个HTTP路由,并将这些路由映射到CF应用程序。
  2. 获取应该在多个端口上可以访问的CF应用程序的[APP_GUID]: cf app [APP_NAME] --guid
  3. 将端口(例如8080、8081)添加到CF应用程序:cf curl /v2/apps/[APP_GUID] -X PUT -d '{"ports": [8080, 8081]}'
  4. 现在还必须调整指向CF应用程序的路由(例如,在本例中为HTTP路由),使其指向正确的CF应用程序端口。首先,您需要获取路线信息,可以使用 cf curl /v2/routes?q=host:[HOST_NAME]或使用cf curl /v2/apps/[APP_GUID]/routes并保存指向您的应用的路线的向导([ROUTE_GUID])。
  5. 对于此特定路线,您必须调整路线映射。每个CF路由可以具有多个路由映射。您可以使用以下命令显示路由的当前路由映射:cf curl /v2/routes/[ROUTE_GUID]/route_mappings。使用cf curl /v2/route_mappings -X POST -d '{"app_guid": "[APP_GUID]", "route_guid": "[ROUTE_GUID]", "app_port": 8081}',您可以向路由添加映射(例如,此处为8081)。
  6. 该路由现在具有两个映射,一个指向8080,另一个指向8081。如果要使该路由仅指向其中一个端口(例如8081),则必须删除不想要的端口的映射具有。运行cf curl /v2/routes/[ROUTE_GUID]/route_mappings以显示所有路由映射。然后提取应删除的路由映射的GUID(例如到端口8080的GUID)。最后,运行cf curl /v2/route_mappings/[GUID_ROUTE_MAPPING] -X DELETE删除不需要的路由映射。

现在,当使用新配置的路由时,CF应用程序应该可以在8080以外的其他端口上访问。

答案 2 :(得分:0)

复活一个旧问题,但是Cloud Foundry现在支持此问题。支持已于2019年4月左右添加。请检查您的版本以了解是否支持此功能。

一般过程是:

  • 使用cf cli更新您的应用以列出其监听的所有端口
  • 使用该路由应使用的特定端口将每个路由更新到应用程序。如果您有两个端口,则需要两条或更多条路由,每条路由一个端口。
  • 重新启动应用

现在,您必须使用cf curl来手动更新这些记录。可以在这里找到说明:https://docs.cloudfoundry.org/devguide/custom-ports.html。希望将来的cf cli版本可以使此操作更容易。

相关问题