Jboss 阻止部署到入口节点,仅部署到其他节点

Jboss 阻止部署到入口节点,仅部署到其他节点,jboss,openshift,wildfly-8,Jboss,Openshift,Wildfly 8,我有一个默认3档的免费OpenShift帐户。在此基础上,我使用OpenShift web控制台安装了WildFly 8.1映像。我将最小和最大缩放设置为3 现在,OpenShift将创建3个JBoss WildFly实例: 一个在入口节点上,该节点也在运行HAProxy 一个在辅助节点上 一个在另一个辅助节点上 奇怪的是,entry节点上的JBoss WildFly实例在负载平衡器配置haproxy.conf中默认被禁用。但是,每当我在相关的git repo中提交时,OpenShift仍在向它

我有一个默认3档的免费OpenShift帐户。在此基础上,我使用OpenShift web控制台安装了WildFly 8.1映像。我将最小和最大缩放设置为3

现在,OpenShift将创建3个JBoss WildFly实例:

一个在入口节点上,该节点也在运行HAProxy 一个在辅助节点上 一个在另一个辅助节点上 奇怪的是,entry节点上的JBoss WildFly实例在负载平衡器配置haproxy.conf中默认被禁用。但是,每当我在相关的git repo中提交时,OpenShift仍在向它部署war归档

这里的额外问题是,由于通过ulimit-u的max-user进程数量非常少,entry节点上的这个JBoss WildFly实例甚至无法启动。在启动过程中,JBoss WildFly将随机抛出“java.lang.OutOfMemoryError:无法创建新的本机线程”,不,内存正常,这是操作系统进程限制

因此,部署过程将挂起

因此,总结一下:

JBoss WildFly实例在entry节点上创建,但在负载平衡器中被禁用 JBoss WildFly在其默认配置下无法在入口节点上启动,即使是在一场微不足道的战争中也无法启动。 尽管在负载平衡器中禁用了JBoss-WildFly,但部署程序进程仍尝试在entry节点上部署到JBoss-WildFly 现在我的问题是:


如何修改deployer流程(包括gear start命令),使其不尝试部署到entry节点上的JBoss WildFly实例?

当应用程序从2档扩展到3档时,HAproxy会停止将流量路由到headgear上的应用程序,并将其路由到其他两档。这可以确保HAproxy获得尽可能多的CPU,因为HAproxy运行的头盔上的应用程序不再服务于请求


您看到的内存不足消息可能不是实际的内存不足问题,而是与ulimit相关的错误

谢谢你的回答,但我已经知道这不是一个实际的OOM,请看我问题中的这一部分:'不,内存很好,这是操作系统进程限制';一旦它这样做了,那就是禁止其他任何东西在那个档位上运行,以便HAproxy获得所有资源。-很明显,这种情况正在发生,但如果你直接到3档固定;最小3,最大3,为什么JBoss实例在那里?如果它被禁用,为什么要启动并部署到?不管怎样,它现在占用了资源,即使没有流量被路由到它:所以你是对的,它没有完全获得所有的资源。基本上,当一个应用程序从2档扩展到3档时,HAProxy将停止将流量路由到您的head gear上的应用程序,并开始将其路由到其他2档。这确保了head gear上的应用程序不会使用太多的CPU,而这正是HAProxy最需要的,HAProxy的内存使用量非常小。我将修改我的答案以反映这一点。感谢您的修改,但我仍然不理解保持应用程序运行的逻辑,但不理解将流量路由到应用程序的逻辑。这是更奇怪的当你-开始-与3档。那么HeadGear上的应用程序一开始就没有看到任何流量。