2014-10-28 2 views
1

У меня есть бесплатная учетная запись OpenShift с 3 передачами по умолчанию. На этом я установил образ WildFly 8.1 с помощью веб-консоли OpenShift. Я установил минимальное и максимальное масштабирование до 3.Предотвращение развертывания на входном узле, только развертывание на другие узлы

Что происходит сейчас, что OpenShift создаст 3 JBoss WildFly экземпляры:

  • Один на узел ввода (который также работает HAProxy)
  • Один на вспомогательный узел
  • один на другой вспомогательный узел

странная вещь, что экземпляр JBoss WildFly на узле ввода по умолчанию отключена в конфигурации балансировки нагрузки (ч aproxy.conf). НО, OpenShift по-прежнему развертывает военный архив для него всякий раз, когда я фиксирую в связанном git-репо.

Что является дополнительной проблемой, так это то, что из-за невероятно низкого количества максимальных пользовательских процессов (250 через ulimit -u) этот экземпляр JBoss WildFly на входном узле не может даже запускаться. Во время запуска JBoss WildFly будет бросать случайный «java.lang.OutOfMemoryError: неспособный создать новый собственный поток» (и нет, память в порядке, это ограничение процесса ОС).

В результате процесс развертывания будет висеть.

Итак, подведем итог:

    экземпляр
  • JBoss WildFly создается на узле ввода, но отключен в балансировки нагрузки
  • JBoss WildFly в конфигурации по умолчанию не может запуска на узле ввода, даже с тривиальная война.
  • Процесс Установщик пытается развернуть в JBoss WildFly на узле ввода, несмотря на его отключить в балансировки нагрузки

Теперь мой вопрос:

Как я могу изменить Deployer процесс (в том числе gear start команда), чтобы не пытаться развернуть экземпляр JBoss WildFly на узле входа?

ответ

0

Когда приложение масштабируется с 2 передач до 3, HAproxy останавливает маршрутизацию трафика на ваше приложение на головном уборе и направляет его на две другие передачи. Это гарантирует, что HAproxy получает максимально возможное количество CPU, поскольку приложение на вашем головном уборе (где работает HAproxy) больше не обслуживает запросы.

Извлеченное из памяти сообщение, которое вы видите, может быть не актуальным из памяти, но ошибка, связанная с ulimit https://bugzilla.redhat.com/show_bug.cgi?id=1090092.

+0

Спасибо за ваш ответ, но я уже знал, что это не настоящий OOM, см. Эту часть в моем вопросе: «И нет, память в порядке, это ограничение процесса ОС». ;) –

+0

«Как только это произойдет, это отключит что-нибудь еще от работы на этом оборудовании, чтобы HAproxy получил все ресурсы». - Это ясно, что это происходит, но если вы перейдете прямо к 3-х передачам (фиксированный, мин 3, максимум 3) , почему здесь есть экземпляр JBoss? И почему он запускается и развертывается, если он отключен? В любом случае, он все равно захватывает ресурсы, хотя на него не направляется трафик :( –

+0

Итак, вы правы, что он не * полностью * получает все ресурсы. В основном, когда приложение масштабируется с 2 передач до 3, HAProxy будет прекратите маршрутизацию трафика на приложение на головной передаче и начните маршрутизацию его на другую 2.Это гарантирует, что приложение на вашем головном устройстве не использует столько CPU, сколько требуется HAProxy (использование HAproxy в памяти довольно минимальное). Я пересмотрю свой ответ, чтобы отразить это. – niharvey

 Смежные вопросы

  • Нет связанных вопросов^_^