将多个应用程序发布到 1 个 Cloud Foundry 环境/实例

publishing multiple apps into 1 Cloud Foudry environment /instance

我正在使用 Java 7/Spring Boot 1.3.2(带有嵌入式 TC 8)和 Cloud Foundry。当我使用 manifest.yml 将 2 个应用程序发布到 1 个 CF 节点时,我注意到了一些奇怪的事情。 这是设置: 环境: 2 Spring 已嵌入 Tomcat 7 并公开 2 组独特的 REST 服务的 Spring 启动应用程序(使用 Gradle 中的 Spring 启动插件构建 2 个可执行 jar。我在 CF 仪表板中看到这两个应用程序已成功发布。

测试: 一旦应用程序 A 发布(应用程序 B 正在发布)运行 应用程序 A 的相应 REST 客户端。这是成功的

App B 发布后,运行appB 对应的 REST 客户端。这是成功的

运行 上面的 2 个测试,我注意到前面的 2 个应用程序的 Web 服务器现在在 appA 和 appB 之间进行负载平衡。因此,如果您在 appA 和 appB 客户端之间交替,这会导致所有其他客户端调用失败。

所以问题是如果我不想要负载平衡,我应该向清单添加 "no_route" 令牌吗?
当我在 CF 中有多个 appA 或 appB 实例时,这会有什么影响?

我的manifest.yml:

---
applications:
  - name: appA
    host: myCloud
    buildpack: java_buildpack_offline
    path: ./build/libs/appA-myCloud-1.0-SNAPSHOT.jar
    memory: 512M    
    instances: 1    
  - name:   appB
    host: bclCloud
    buildpack: java_buildpack_offline
    path: ./build/libs/appB-myCloud-1.0-SNAPSHOT.jar
    memory: 512M    
    instances: 1  

在您的 manifest.yml 文件中,您有 host: mycloudhost: bclCloud。如果您的默认 CF 域是 mycf.example.com,那么这些应用程序应该可以使用 URL mycloud.mycf.example.combclCloud.mycf.example.com。 CF 将这些视为到两个不同应用程序的唯一路由,并且不会在两者之间进行负载平衡。

您可以在推送这些应用程序后 运行 cf apps 并查看输出的 urls 列以确保每个应用程序都获得唯一的路由。

I noticed that the web server that's fronting the 2 apps

您指的是什么网络服务器? CF Router 是应用程序前面唯一的 CF 组件,它不会在两个独特的应用程序之间进行负载平衡。