Mongrel

Mongrel — open-source HTTP-библиотека и веб-сервер, основанные на Ruby и написанные Зедом Шоу (Zed Shaw)[2]. Используется для запуска Ruby веб-приложений и предоставления стандартного HTTP-интерфейса. Это делает возможным использование отдельных слоёв, таких как web proxy, балансировщика нагрузки или комбинацию обоих подходов, вместо необходимости использовать более традиционные методы, используемые для запуска сценариев, такие как FastCGI или SCGI. Это стало возможным за счёт интеграции анализатора пользовательских высокопроизводительных HTTP запросов — Ragel.

С 2010 года проект больше не развивается, код Mongrel больше не поддерживается Ruby начиная с версии 1.9.2. Ему на замену пришёл Mongrel2, который уже не привязан к конкретному языку или фреймворку[3] и не имеет ничего общего с реализацией Mongrel за исключением парсера HTTP-запросов.

Что важно знать

Развёртывание

Одна из самых популярных конфигураций — это Apache 2.2 как балансировщик нагрузки, используя mod_proxy_balancer в связке с несколькими копиями Mongrel, каждая из которых запущена на отдельном порту. Оно так же может быть очень легко настроено с помощью утилиты mongrel_cluster_management. Apache может распределять входящие запросы между существующими процессами Mongrel и, в соответствии с настройками, может сам обрабатывать статическое содержимое без обращения к Mongrel. До недавнего времени Twitter был ярким тому примером.[4]

Для тех, кто не желает пользоваться Apache, существует возможность развёртывать кластер Mongrel на альтернативных веб-серверах, таких как nginx или lighttpd и загружать балансировщики различными способами, такими как Pound или решениями на основе аппаратного обеспечения.

Mongrel способен самостоятельно обслуживать приложения Ruby on Rails, без использования сторонних веб-серверов, однако однопоточные приложения, соответствующие этой конфигурации, не пригодны к большим нагрузкам.

Примечания