Подтвердить что ты не робот

Драгоценные камни/Услуги по автомасштабированию Детекторы Heroku и рабочие

Я хочу знать, есть ли хорошие решения для автомасштабирующих динозавров и рабочих на Heroku в производственной среде (возможно, это другое решение для каждого из них, поскольку они довольно не связаны). Что вы/компании используете в отношении этого?

Я нашел много вариантов, но ни один из них не кажется действительно зрелым для производственной среды. Есть Heroscale, который, кажется, вводит некоторую задержку, поскольку он не запускается локально, и я также слышал о простоях. Существуют изменения delayed_jobs, которые не были обновлены в течение длительного времени, и есть некоторые проблемы с текущими связями. Существуют также некоторые альтернативы, связанные с требованиями, которые, похоже, не очень хорошо обрабатывают некоторые HTTP-исключения, что приводит к сбою приложения и другим, которые, как представляется, нуждаются в постоянном рабочем времени для планирования других работников и могут также страдать от некоторых исключений HTTP проблемы.

Ну. В конце. Что используется, в настоящее время, для автоматической очистки процессоров Heroku и рабочих в рабочей среде с Rails3?

Спасибо заранее.

4b9b3361

Ответ 1

Мы столкнулись с этим некоторое время назад, и я потратил немало времени на это с большим разочарованием. Я постараюсь придерживаться основной точки. Есть несколько решений по автокалибровке Heroku, которые кажутся достойными на первый взгляд.

Пример, который уже был предоставлен heroku-autoscaler, фактически предназначен для автомасштабирования динамиков и является в значительной степени единственным решением, которое претендует на выполнение это (и это, конечно, не очень хорошо). Большинство других претендует только на автопроизводителей для вас. Итак, позвольте сосредоточиться на этом в первую очередь. Автоскалеры, на которые вы будете смотреть на рабочих, зависят от того, что вы на самом деле используете для ваших фоновых работников, например. delayed_job, resque. Это самые распространенные библиотеки обработки фоновой информации, которые люди используют, поэтому автосканеры будут пытаться подключиться к одному из них. Вы можете использовать такие вещи, как:

Некоторые из этих работ в стеке Кедра могут потребоваться немного подстройки. Проблема со всеми из них заключается в том, что он как бы пытается вытащить себя из болота своими собственными волосами. Пусть возьмите напрокат напрокат в качестве примера (это, вероятно, лучший из них). Он изменяет delayed_job так, чтобы сами работники могли смотреть в очередь и увеличивать, при необходимости, больше работников, если в очереди больше нет заданий, рабочие все будут закрывать друг друга. Существует несколько проблем:

  • Если вы хотите поместить задание в очередь, которая будет выполнена в будущем, а не прямо сейчас, вам не повезло. Работник запускается, когда задание входит в очередь, но поскольку задание должно быть выполнено в будущем, рабочий отключится и не запустится, если другое задание не войдет в очередь (это единственное, что побуждает рабочих запускать)
  • вы теряете способность повторять неудачные задания, это возможно по умолчанию в delayed_job, но требуется некоторое время, прежде чем неудавшееся задание будет повторно проведено (и будет продолжаться дольше), если он будет терпеть неудачу несколько раз, но рабочие закроют вниз в течение этой задержки времени, и нет ничего, чтобы побудить их запускаться снова (по сути, это та же проблема, что и в первом сценарии).

То, что решает эту проблему, состоит в том, чтобы один рабочий постоянно работал, поэтому он может периодически контролировать очередь и может выполнять задания по мере необходимости или даже увеличивать число рабочих. Но если вы это сделаете, вы не будете экономить деньги (у вас есть рабочий, работающий 24 часа в сутки 7 дней и должен заплатить за это), и что все помещение за автоскалерами на героку. По сути, если у вас есть только временная обработка фонового рисунка, или у вас есть фоновые задания, которые могут потерпеть неудачу, но удастся повторить попытку или у вас есть фоновые задания, которые не нужно запускать мгновенно, нет библиотеки автомасштабирования, которую вы можете который будет работать для вас.

Вот один из вариантов. Парень, который написал Hirefire, позже связал его с webapp (Hirefire app), суть которого заключается в том, чтобы внешне контролировать ваших рабочих/динозавров Heroku для вас и, если необходимо, открутите/выключите рабочие динамики. Это было бесплатно в бета-версии, но теперь это стоит денег, меньше того, что вы заплатили за запуск рабочего 24/7, но все же не несущественный, если вам понадобится лишь несколько фоновых заданий время от времени. В любом случае это единственный эффективный способ убедиться в том, что ваша инфраструктура фоновой работы делает то, что вы хотите (хорошо, что и сворачивание собственного решения, что означает наличие машины как экземпляр EC2, где вы можете поместить некоторые скрипты, которые будут пинговать ваше приложение heroku и откручивать при необходимости - отключать или закрывать работников - нетривиальное количество усилий).

Теперь приложение Hirefire предлагает автомасштабирование ваших динозавров для вас, это делается на основе привязки к латентности вашей очереди запросов heroku. Однако я обнаружил, что это не сработало, возможно, если вы близки к центру данных Amazon, где действительно работает ваше приложение heroku (мы не были), у вас может быть другой опыт. Но для нас это излишне развернуло целую кучу динозавров и никогда не закручивало бы их, независимо от того, насколько я изменил настройки. Вы можете сказать, что это была бета-версия, которая, возможно, улучшилась с тех пор, но тот опыт, который у меня был.

Короче говоря, если вы хотите автомасштабировать своих работников, используйте приложение Hirefire, вы будете экономить намного меньше денег, чем считали, но это по-прежнему самый дешевый вариант. Если вы хотите автомасштабировать динозавры, вам в основном не повезло. Это лишь один из тех ограничений, с которыми вы живете, для удобства платформы, такой как Heroku.

Ответ 2

Heroku предлагает новое дополнение под названием AdeptScale, которое сейчас только что выходит из бета-версии.

Вот дополнительная страница AdeptScale

Вот более подробная документация для AdeptScale

Вот форма для подписки на бета-версию Heroku

Надеюсь, это будет надежное решение для автомасштабирования процессоров Heroku Dynos, так как я пока не доволен текущими параметрами.

Обновление (2/4/13): я подписался на программу Heroku Beta, чтобы попробовать это дополнение, и это сработало для меня очень хорошо. Время от времени увеличивающееся с трафиком, но в основном сидение на минимальном количестве динамиков, которые я установил из 2. Это значительно сократило мой счет и устранило беспокойство, что я могу быть медленным во время пикового использования.

Обновление (3/6/13): добавлена ​​ссылка на страницу Heroku для своей бета-версии.

Обновление (4/14/13): Похоже, автомасштабирование выходит из бета-версии. Это по-прежнему хорошо работает для меня.

Ответ 3

HireFire.io(Служба, а не проект с открытым исходным кодом) теперь позволяет использовать ваши новые показатели Relic для автоматического масштабирования ваших веб-динамиков. Новая реликвия - это инструмент контроля производительности, предоставляемый в качестве дополнения через Heroku. Они имеют свободный уровень и достаточно для использования с HireFire.

Вы можете автомасштабировать на основе:

  • Время отклика
    • Это время отклика, которое вы найдете на панели новой реликвии. Это комбинация различных факторов, включая очередь запросов, производительность базы данных, уровень приложений, маршрутизатор и т.д.
  • Оценка Apdex
    • Это позволяет масштабировать на основе вашего нового показателя Relic Apdex Score, позволяя масштабировать на основе пользовательского опыта/удовлетворенности, который определяется этим счетом.

Кроме того, мы стали агностиком языка/рамки. Для рабочих динамиков все, что вам нужно сделать, чтобы выполнить автоматическое масштабирование, - это настройка конечной точки JSON по определенному пути в вашем приложении, которая возвращает очень простую строку JSON, содержащую размер очереди (мы предоставляем удобные, но не требуемые макросы для языка Ruby и некоторой готовой поддержки Django-приложений, но, как я уже сказал, он работает для любого языка/структуры, вручную настраивая конечную точку JSON - это очень просто). Для веб-динамов вы можете использовать Metric Source HireFire с использованием любого языка/фреймворка и вышеупомянутого нового Relic Metric Source для языков/фреймворков, поддерживаемых New Relic (это обычные языки, такие как Ruby, Python, Java и т.д.).

Отказ от ответственности: я построил HireFire.

Ответ 4

Я также пытаюсь найти хороший способ автомасштабирования.

https://github.com/ddollar/heroku-autoscale делает это, но имеет отказ от своей незрелости.

Ответ 5

Недавно я написал систему автомасштабирования герою под названием Heroku Vector:

https://github.com/wpeterson/heroku-vector

Он позволяет масштабировать несколько типов динамиков на основе разных источников трафика. В настоящее время он поддерживает NewRelic во всем и количество загруженных потоков Sidekiq. По мере того, как трафик идет вверх или вниз, он масштабирует количество динамиков вверх или вниз. Это процесс демона, который можно запустить в своем собственном динамическом режиме на Heroku или в другом месте.