2014-10-28 83 views
1

我有一個免費的OpenShift帳戶,默認3個齒輪。在此我使用OpenShift Web控制檯安裝了WildFly 8.1映像。我設置了最低和最高比例爲3防止部署到入口節點,只能部署到其他節點

會發生什麼現在是OpenShift將創建3個JBoss的WildFly實例:

  • 一個入口節點上(這也是運行HAProxy的)
  • 一對輔助節點
  • 彼此輔助節點

奇怪的是,所述入口節點上在JBoss WildFly實例是默認在負載平衡器配置禁用上(H aproxy.conf)。但是,只要我在關聯的git倉庫中提交,OpenShift仍然會將戰爭檔案部署到它。

這裏有什麼額外的問題是,由於最大用戶進程的數量非常少(250通過ulimit -u),入口節點上的這個JBoss WildFly實例甚至無法啓動。在啓動期間,JBoss WildFly將拋出隨機的'java.lang.OutOfMemoryError:無法創建新的本地線程'(,不,內存不錯,這是操作系統進程限制)。

因此,部署過程將掛起。

因此,要總結:

  • 一個JBoss WildFly實例在入口節點上創建的,但殘疾人在負載平衡器
  • 的JBoss WildFly在其默認配置的入口節點上不能啓動,甚至不能與一場微不足道的戰爭。
  • 的部署進程試圖部署到JBoss WildFly入口節點上,儘管它在負載均衡器被禁用

現在我的問題:

我如何修改部署過程(包括gear start命令)不嘗試部署到入口節點上的JBoss WildFly實例?

回答

0

當應用程序從2檔縮放到3時,HAproxy停止將流量路由到頭盔上的應用程序,並將其路由到另外兩個齒輪。這可以確保HAproxy儘可能獲得最多的CPU,因爲頭盔上的應用程序(HAproxy正在運行)不再提供請求。

您看到的內存不足消息可能不是實際內存不足的問題,而是與ulimit https://bugzilla.redhat.com/show_bug.cgi?id=1090092有關的錯誤。

+0

感謝您的回答,但我已經知道它不是一個真正的OOM,請參閱我的問題中的這一部分:'並且不,內存不錯,這是操作系統進程的限制。 ;) – 2014-11-07 15:43:34

+0

「一旦這樣做,就會禁用其他任何運行在該設備上的內容,以便HAproxy獲得所有資源。」 - 很明顯,這種情況正在發生,但是如果您直接使用3個齒輪(固定;最小3,最大3) ,爲什麼JBoss實例在那裏?如果它被禁用,它爲什麼會啓動並部署?它現在佔用資源,即使沒有流量被路由到它:( – 2014-11-07 15:45:59

+0

所以你是正確的,它不*完全*獲得所有的資源。基本上,當一個應用程序從2個齒輪擴展到3時,HAProxy將會停止將流量路由到頭部設備上的應用程序並開始將其路由到另一個2。這可以確保您的磁盤上的應用程序不會使用最多的HAProxy所需的CPU(HAproxy的內存使用量非常小)。我會修改我的答案來反映這一點。 – niharvey 2014-11-10 19:29:16