Установка mod_cband для регулирования скорости раздачи файлов в Apache
Назрела необходимость ограничить скорость раздачи файлов на файловом сервере. Так как по дефолту в настройках Апача такая функциональность отсутствует, то я решил использовать один из дополнительных модулей. К сожалению с mod_bw у меня не сложилось. Он установился, но установленные ограничения почему-то не работали. Поэтому я решил использовать альтернативу в виду mod_cband. Итак установка которая работает в CentOS (и скорее всего в большинстве других дистрибутивов).
1) Идем в какую-нибудь временную директорию:
>> cd /var/tmp
2) Сначала убеждаемся, что у нас установлена фича для Апача позволяющая с легкостью устанавливать новые модули (httpd-devel). Обычно программа находится по адресу /usr/sbin/apxs или /usr/sbin/apxs2. Если её нет ставим:
>> yum -y install httpd-devel
3) Получаем свежий дистрибутив модуля (с выходом новой версии адрес меняется, необходимо уточнять его здесь: http://codee.pl/cband.html):
>> wget http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz
4) Распаковываем:
>> gtar xvf mod-cband-0.9.7.5.tgz
5) Переходим в папку:
>> cd mod-cband-0.9.7.5
6) Запускаем конфигурацию. Внимание тут частенько возникает проблема с тем, что конфигуратор не может найти программу apxs. Поэтому лучше указать её вручную:
>> ./configure —with-apxs=/usr/sbin/apxs
7) Собираем раз:
>> make
8) Собираем два:
>> make install
Убедитесь, что в конце выскочила строчка: [activating module `cband’ in /etc/httpd/conf/httpd.conf]
Модуль установлен, теперь необходимо поправить конфиг Апача по адресу /etc/httpd/conf/httpd.conf (на разных системах адрес может отличаться, ваш адрес можно узнать из строчки выше «activating module …») .
Сначала проверяем что модуль прописался в конфиг ищем строчку вида:
«LoadModule cband_module», если она есть значит все в порядке.
Далее для нужного юзера можно прописать его возможности. У модуля богатый функционал, поэтому рекомендую посмотреть документацию на сайте автора: http://codee.pl/cband_documentation.html
Мне требовалось ограничить общую скорость раздачи для всего сервера и скорость доступную одному пользователю. Ищем описание пользователя WebServer’а. Обычно такой уже есть:
<VirtualHost 1.2.3.4:80>
ServerName example.ru
DocumentRoot /var/www/example/data/www/ example.ru
ServerAdmin webmaster@ example.ru
</VirtualHost>
И добавляем внутрь следующие строчки:
<IfModule mod_cband.c>
CBandSpeed 80Mbps 100 300
CBandRemoteSpeed 4000kbps 3 3
</IfModule>
Получаем:
<VirtualHost 1.2.3.4:80>
ServerName example.ru
DocumentRoot /var/www/example/data/www/ example.ru
ServerAdmin webmaster@ example.ru
<IfModule mod_cband.c>
CBandSpeed 80Mbps 100 300
CBandRemoteSpeed 4000kbps 3 3
</IfModule>
</VirtualHost>
В итоге, что мы имеем максимальная скорость для всего домена 80 Мбит, максимум 100 запросов в секунду и 300 соединений. Для одного юзера для домена максимум 4Мбита 3 запроса в секунду и 3 соединения.
Осталось только перезагрузить Apache и убедиться что все в порядке:
>> /etc/init.d/httpd restart
Должно быть что-то вроде:
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
Доброй ночи.
Подскажите, пожалуйста, как сконфигурировать модуль для апача, находящегося по опредленному пути. У меня на сервере 2 апачевских инстанса, и модуль, как в примере, цепляется за /etc/httpd/conf/httpd.conf.
@Николай
Я так редко занимаюсь сейчас конфигурацией… Но подозреваю что вот в этой строчке:
LoadModule cband_module — надо прописать полный путь до модуля.