From: Alexander Sheiko
Date: Mon, 9 Jun 2006 14:31:37 +0000 (UTC)
Subject: Используем Apache 2 и mod_cband для ограничения мирового трафика
Оригинал: http://adsh.ukrweb.net/blog/article/31
Сформулируем задачу. Пусть у нас есть хостинг, с неограниченным
украинским трафиком и ограниченным мировым. Необходимо ограничить
мировой трафик для каждого виртуального хоста до заданной величины.
Заходим на домашнюю страницу mod_cband и скачиваем дистрибутив.
Для FreeBSD он есть в портах - /usr/ports/www/mod_cband.
Создаём каталог с правами на запись для веб сервера:
CBandDefaultExceededURL - страница, на которую будут редиректится
запросы к хосту (серверу), выработавшему заданную квоту.
cband-ua.conf - файл, в который в нужном формате будут помещаться
списки украинских сетей.
CBandUser hosting - пользователь "hosting" к которому мы привяжем
лимит суммарного мирового трафика с сервера в 1GB -
"CBandUserClassLimit world 1Gi"
CBandClassLimit world 100Mi - зададим лимит мирового трафика для
конкретного виртуального хоста в 100 MB в сутки "CBandPeriod 1D".
(CBandUser|CBand)PeriodSlice 1H - сделаем так, чтобы нельзя было сразу
выкачать весь суточный лимит, как для всего трафика с сервера, так и
для отдельного виртуального хоста. При этом - лимит трафика для
текущего часа получается делением суммарного оставшегося суточного
трафика на оставшееся количество часов до истечения суток. Таким
образом, неиспользованный трафик за предыдущие часы не теряется -
очень рулёзный и принципиальный момент.
Мы преднамеренно задали лимиты как для сервера, так и для виртуальных
хостов. Дело в том, что реальный трафик для сервера обычно намного
меньше суммы лимитов для всех виртуальных хостов. Ограничения для
всего сервера заданы для случая, когда нам необходимо избежать
превышения некоторого лимита, заданного нам провайдером, в случае
внезапного возрастания активности большинства сайтов. В других случаях
общий лимит можно не задавать.
На остальных настройках я останавливаться не буду - они хорошо описаны
в официальной документации. Хочу лишь отметить, что дискретность
подсчёта трафика можно задавать и в неделях и в месяцах - кому как
удобнее.
Теперь о том, как скармливать серверу список украинских хостов. Для
этого пишем следующий скрипт:
Нижеприведенные настройки ограничат скорость для виртуального
хоста в 1024kbps, с возможностью обслуживания не больше 10 запросов в
секунду и максимумом в 30 открытых коннектов. Каждый посетитель может
установить не больше трех одновременных соединений и получить данные на
скорости не выше 20kb/s . Кроме того, виртуальный хост может за 4 недели
израсходовать не более 100 Мб трафика, если лимит будет превышен
скорость будет ограничена в 128kbps.