Mod qos
Mod qos — модуль качества обслуживания (QoS) для Apache HTTP Server, реализующий механизмы управления, которые позволяют задавать различный приоритет для разных запросов.
Общие сведения
| mod_qos | |
|---|---|
| Тип | модуль для Apache HTTP Server |
| Разработчик | Apache Software Foundation |
| Написана на | C |
| Операционная система | кроссплатформенное |
| Языки интерфейса | английский |
| Последняя версия | 11 |
| Репозиторий | svn.code.sf.net/p/mod-qo… |
| Лицензия | Лицензия Apache |
| Сайт | mod-qos.sourceforge.net |
Описание
Веб-сервер способен одновременно обрабатывать только ограниченное количество запросов. QoS используется для того, чтобы важные ресурсы оставались доступными даже при высокой нагрузке сервера. mod_qos используется для отклонения запросов к неважным ресурсам, одновременно предоставляя доступ к более важным приложениям. Также возможно отключить ограничения на доступ, например, для очень важных ресурсов или пользователей.
Механизмы управления реализованы на следующих уровнях:
- Управление на уровне запросов: mod_qos управляет числом одновременных запросов к namespace (URL). Это позволяет расставлять разные приоритеты для различных страниц или приложений на одном сервере.
- Управление на уровне соединений: mod_qos управляет числом TCP-соединений с веб-сервером. Это позволяет ограничивать число соединений от одного клиента или из неизвестных сетей, ограничивать максимальное количество одновременных соединений к виртуальному серверу или реализовывать динамические настройки HTTP keep-alive.
- Управление пропускной способностью: ограничение скорости запросов/ответов для определённых URL.
- Фильтрация строк запроса и заголовков: удаление подозрительных запросов или HTTP-заголовков.
Модуль полезен при использовании в качестве обратного прокси, чтобы распределять ресурсы между разными веб-серверами.
Примеры использования
Первый пример демонстрирует, как mod_qos помогает избежать отказа в обслуживании веб-сервера из-за медленной работы какого-либо приложения. Если приложение (например, /ccc) работает очень медленно, запросы ожидают завершения до наступления тайм-аута. Из-за большого количества ожидающих запросов у веб-сервера заканчиваются свободные TCP-соединения, и он не может обслуживать другие запросы — например, к приложениям /aaa или /bbb. mod_qos ограничивает количество одновременных запросов к приложению, обеспечивая доступность других ресурсов.
Расширение keep-alive в HTTP/1.1 позволяет использовать постоянные TCP-соединения для нескольких запросов/ответов. Это ускоряет доступ к серверу за счёт снижения и оптимизации сетевого трафика. Недостаток этой функции — блокировка ресурсов сервера, даже если между клиентом и сервером данные не обмениваются. mod_qos позволяет серверу поддерживать keep-alive только при наличии достаточного числа свободных соединений, прекращая его поддержку при достижении заданного порога соединений.
Один клиент может попытаться открыть множество параллельных TCP-соединений для загрузки разных данных с веб-сервера. В то время как один клиент занимает все соединения, другие пользователи могут утратить доступ к серверу из-за отсутствия свободных соединений. mod_qos позволяет ограничить количество одновременных соединений от одного IP-адреса.
Если необходимо ограничить число запросов к определённому URL, mod_qos позволяет это сделать. Модуль ограничивает максимальное количество запросов в секунду к данному URL. Кроме того, возможно управление пропускной способностью. Достаточно указать максимальную допустимую пропускную способность, и mod_qos будет её регулировать по необходимости.
mod_qos может помочь обезопасить сервер Apache от DoS-атак с низкой пропускной способностью, обеспечивая минимальные требования к скорости загрузки/выгрузки для каждого клиента[1].
История
Первый выпуск mod_qos был создан в мае 2007 года и опубликован на SourceForge.net[2] как проект с открытым исходным кодом. Первая версия позволяла ограничивать количество одновременных HTTP-запросов к определённым ресурсам (частям пути URL) на веб-сервере.
Позднее были добавлены новые функции, некоторые из которых оказались полезны для защиты Apache-серверов от DoS-атак[3].[4]
В 2012 году модуль mod_qos был включён в дистрибутив Ubuntu Linux[5].
Основные выпуски:[6]
- Май 2007, версия 1: Ограничение одновременных запросов для каждого пути URL.
- Июль 2007, версия 2.2: Появление утилит поддержки.
- Август 2007, версия 3: Введён контроль соединений и просмотрщик статуса.
- Сентябрь 2007, версия 4: Ограничение/дросселирование запросов-ответов и фильтрация запросов.
- Декабрь 2007, версия 5: Ограничения по пользовательским событиям.
- Март 2008, версия 6: Механизмы контроля для отдельных клиентов (IP).
- Май 2008, версия 7: Контроль минимальной скорости загрузки/выгрузки для клиента.
- Сентябрь 2009, версия 9: Обнаружение аномалий на основе характеристик клиента.
- Февраль 2012, версия 10: Добавлены функции геолокации (коды стран по ISO 3166).
- Май 2014, версия 11: Значительное улучшение ограничения скорости ответов (ограничение в байтах/сек).
- Июль 2015, версия 11.15: Сериализация не только на уровне сервера, но и на уровне клиента (IP).
- Май 2016, версия 11.28: Поддержка дифференцированных сервисов посредством управления полем DSCP в IP-заголовке.
Примечания
- ↑ Руководство по mod_qos (англ.). Дата обращения: 29 ноября 2012. Архивировано 13 марта 2012 года.
- ↑ mod_qos на SourceForge.net (англ.) (18 мая 2007). Дата обращения: 24 ноября 2012. Архивировано 14 октября 2025 года.
- ↑ Marcus Spiegel. How To Defend slowloris DDoS с помощью mod_qos (англ.). HowtoForge (15 июля 2009). Дата обращения: 24 ноября 2012. Архивировано 17 июля 2009 года.
- ↑ Charly Kuehnast. Из практики системного администратора: mod_qos против Slowloris (нем.). Linux Magazin (май 2010). Дата обращения: 24 ноября 2012. Архивировано 18 августа 2012 года.
- ↑ Пакет mod_qos для Ubuntu (англ.). Дата обращения: 24 ноября 2012. Архивировано 18 января 2013 года.
- ↑ Журнал изменений (англ.). Дата обращения: 27 ноября 2012. Архивировано 18 августа 2024 года.