Инсталиране
и конфигуриране на mod_cband
Написана от Мартин Петров- amri[at]dhstudio.eu
Благодарности на: www.dhstudio.eu
В тази статия ще опишем как се инсталира и конфигурира mod_cband на Apache 2. mod_cband е модул за Apache 2 които предоставя възможност за определяне скоростта на виртуален хост(подобно на mod_bandwidth) , определяне брой заявки за секунда, броя на осъществените връзки (подобно на mod_limitipconn), ограничаване на трафика (подобно на mod_curb) и др. mod_cband се разработва от Lukasz Dembinski, Sergey V. Beduev, Kyle Poulter, J. Kendzorra и Adam Dawidowski. Модула се разпространява под GNU GPL лиценз. mod_cband намира най- често приложение в хостинг компании които ограничават трафика на техните потребители (пример: 5 GB за 1 месец.) .
1. Инсталиране на mod_cband под Дебиан 4.0 (Etch)
1.1 apt-get install libapache2-mod-cband
1.2 Излиза Ви прозорец в които трябва да изберете дали ще заредите mod_cband.Вие избирате „yes“ т.е. ще се зареди при рестартиране на Apache
2. Директиви на mod_cband
Позволени единици при различните директиви:
Трафик
kbps, Mbps, Gbps - Измерват се в "Бит за секунда", респективно: 1024, 1024*1024 и 1024*1024*1024 бита за секунда
kb/s, Mb/s, Gb/s - Измерват се в "Байт за секунда", респективно: 1024, 1024*1024 and 1024*1024*1024 байта за секунда
По подразбиране kbps
Скорост
K, M, G - Измерват се в Байт, респективно: 1000, 1000*1000 and 1000*1000*1000 байта.
Ki, Mi, Gi - Измерват се в Байт, респективно: 11024, 1024*1024 and 1024*1024*1024 байта.
По подразбиране К
Период
S, M, H, D, W – Измерват се в секунди: Секунди, Минути, Часове, Дни, Седмици; респективно: 1, 60, 3600, 86400, 604800 секунди
По подразбиране S
Име: CBandDefaultExceededURL
Описание: URL под подразбиране къде mod_cband ще пренасочва всички заявки до виртуалния хост или потребител когато конфигурирания трансфер е надвишен.
Контекст: Server config
Синтаксис: CBandDefaultExceededURL URL
Пример: CbandDefaultExceededURL www.dhstudio.eu/exceeded.html
Име: CbandDefaultExceededCode
Описание: HTTP код които се изпраща до посетителя когато конфигурирания трафик е надвишен
Контекст: Server config
Синтаксис:CBandDefaultExceededCode HTTP_CODE
Пример: CBandDefaultExceededCode 509
Име: CBandScoreFlushPeriod
Описание: Определя периода след които данните за статистиката ще се записват. Може да се използва за подобряване бързодействието на mod_cband
Подразбиране: 1
Контекст: Server config
Синтаксис: CBandScoreFlushPeriod номер_на_заявки
Пример: CBandScoreFlushPeriod 100
Данните за статистиката ще се записват след 100 заявки
Име: CBandSpeed
Описание: Определя максималната скрост за виртуалния хост
Контекст: <Virtualhost>
Синтаксис: CBandSpeed kbps rps max_conn
kbps- максимална скорост за трансфер в [kMG]bps или [kMG]B/s
rps- Максимален брой заявки за секунда
max_conn- Максимален брой на едновременните връзки
Пример: CBandSpeed 1024 10 30
Определя максимална скорост 1024kbps, максимално 10 заявки за секунда и максимално 30 едновременно осъществени връзки.
Бележка: Тази характеристика е възможна от версия 0.9.6.0
Име: CBandRemoteSpeed
Описание: Определя максималната скрост за други отдалечени клиенти
Контекст: <Virtualhost>
Синтаксис: CBandRemoteSpeed kbps rps max_conn
kbps- максимална скорост за трансфер в [kMG]bps или [kMG]B/s
rps- Максимален брой заявки за секунда
max_conn- Максимален брой на едновременните връзки
Пример: CBandRemoteSpeed 20kb/s 3 3
Определя максимална скорост 20kB/s, максимално 3 заявки за секунда и максимално 3 едновременно осъществени връзки от друг отдалечен клиент.
Бележка: Тази характеристика е възможна от версия 0.9.6.1-rc2
Име: CBandClassRemoteSpeed
Описание: Определя максималната скорост за други отдалечени клиенти от един клас.
Контекст: <Virtualhost>
Синтаксис: CBandClassRemoteSpeed class_name kbps rps
class_name- име на дефинирания клас
kbps- максимална скорост за трансфер в kbps или kB/s
rps- Максимален брой заявки за секунда
max_conn- Максимален брой на едновременните връзки
Пример:
<CBandClass googlebot_class>
CBandClassDst
66.249.64/24
CBandClassDst 66.249.65/24
CBandClassDst
66.249.79/24
</CBandClass>
CBandClassRemoteSpeed googlebot_class 20kb/s 2 3
Определя максимална скорост 20kB/s, максимално 2 заявки за секунда и максимално 3 едновременно осъществени връзки от друг отдалечен клиент клас googlebot_class.
Бележка: Тази характеристика е възможна от версия 0.9.6.1-rc2
Име: CBandRandomPulse
Описание: Спира или стартира произволния пулс генератор за изпращаната информяция. Случайния пулс генератор е част от осъществяването на ограничаване по скорост в mod_cband.
Контекст: Global
Синтаксис: CBandRandomPulse On/Off
Име: CBandLimit
Описание: Определя трафик за виртуален хост
Контекст: <Virtualhost>
Синтаксис: CBandLimit limit
limit- Размер на позволения трафик, възможни единици: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi)
Пример:
CBandLimit 10M
Определя трафик от 10 * 1000 * 1000
bytes
CBandLimit 10Mi
Определя трафик от 10 * 1024 * 1024 bytes
Бележка: Значението на К,М и G е променено с версия 0.9.6.0. Проверете вашия конфигурационен файл.
Име: CBandClassLimit
Описание: Определя трафик за виртуален хост чрез клас
Контекст:<Virtualhost>
Синтаксис: CBandClassLimit class_name limit
class_name- име на дефиниран клас
limit- Размер на позволения трафик, възможни единици: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi)
Бележка: Значението на К,М и G е променено с версия 0.9.6.0. Проверете вашия конфигурационен файл.
Име: CBandExceededURL
Описание: URL където mod_cband ще пренасочва всички заявки до виртуалния хост или потребител когато конфигурирания трансфер е надвишен. Ако не определите URL тогава ще бъде изпратен http код 503 (Service Unavailable)
Контекст: <Virtualhost>
Синтаксис: CBandExceededURL URL
Пример: CbandDefaultExceededURL www.dhstudio.eu/exceeded.html
Име: CBandExceededSpeed
Описание: Определя максималната скорост на виртуалния хост когато конфигурирания трафик е надвишен.
Контекст: <Virtualhost>
Синтаксис: CBandExceededSpeed kbps rps max_conn
kbps- максимална скорост за трансфер в kbps или kB/s
rps- Максимален брой заявки за секунда
max_conn- Максимален брой на едновременните връзки
Бележка: Тази характеристика е възможна от версия 0.9.6.0
Име: CBandScoreboard
Описание: Определя файл за записване на статистика
Контекст: <Virtualhost>
Синтаксис: CBandScoreboard path
Бележка: Този файл трябва да има възможност за промяна от потребител apache
Име: CBandPeriod
Описание: Определя период след които да бъде изчистен файл със статистики за виртуалния хост.
Контекст: <Virtualhost>
Синтаксис: CBandPeriod period
period – възможни единици: S (seconds), M (minutes), H (hours), D (days), W (weeks)
Пример:
CBandPeriod 1W
CBandPeriod 14D
CBandPeriod 60M
Име: CBandPeriodSlice
Описание: Определя период на разделяне
Подразбиране: slice_len = limit
Контекст: slice_len = limit
Синтаксис: CBandPeriodSlice slice_length
Пример:
CBandLimit 100G
CBandPeriod 4W
CBandPeriodSlice 1W
Периода ще бъде разделен на 4 малки парчета(4W/1W=4).Всяко парче има 100G/4=25G трафик.След една седмица ограничението ще бъде 50G, след две седмици 75W и т.н.
Име: <CBandUser>
Описание: Дефинира нов cband потребител
Контекст: Server config
Синтаксис: <CBandUser user_name>
Име: CBandUserSpeed
Описание: Определя максимална скорост за cband потребител
Контекст: <CBandUser>
Синтаксис: CBandUserSpeed kbps rps max_conn
kbps- максимална скорост за трансфер в kbps или kB/s
rps- Максимален брой заявки за секунда
max_conn- Максимален брой на едновременните връзки
Пример: CBandUserSpeed 100kb/s 10 5
Определя максимална скорост 100kB/s, максимално 10 заявки за секунда и максимално 5 едновременно осъществени връзки.
Бележка: Тази характеристика е възможна от версия 0.9.6.0
Име: CBandUserLimit
Описание: Определя максимален трафик за cband потребител
Контекст:<CBandUser>
Синтаксис: CBandUserLimit limit
limit- Размер на позволения трафик, възможни единици: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi)
Пример: CBandUserLimit 10M
Определя 10 * 1000 * 1000 bytes трафик
CBandUserLimit 10Mi
Определя 10 * 1024 * 1024 bytes трафик
Бележка: Значението на К,М и G е променено с версия 0.9.6.0. Проверете вашия конфигурационен файл.
Име: CBandUserClassLimit
Описание: Определя трафик за cband потребители чрез клас
Контекст:<CBandUser>
Синтаксис: CBandUserClassLimit class_name limit
class_name- име на дефиниран клас
limit- Размер на позволения трафик, възможни единици: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi)
Бележка: Значението на К,М и G е променено с версия 0.9.6.0. Проверете вашия конфигурационен файл.
Име: CBandUserExceededURL
Описание: Определя URL където mod_cband ще пренасочва всички заявки до потребителски виртуални хостове които са с надвишен трафик. Ако не определите URL тогава ще бъде изпратен http код 503 (Service Unavailable)
Контекст:<CBandUser>
Синтаксис: CBandUserExceededURL URL
Име: CBandUserExceededSpeed
Описание: Определя максималната скорост на виртуалния хост когато конфигурирания трафик е надвишен. При използване на тази директива не трябва да използвате CBandUserExceededURL.
Контекст:<CBandUser>
Синтаксис: CBandUserExceededSpeed kbps rps max_conn
kbps- максимална скорост за трансфер в kbps или kB/s
rps- Максимален брой заявки за секунда
max_conn- Максимален брой на едновременните връзки
Бележка: Тази характеристика е възможна от версия 0.9.6.0
Име: CBandUserScoreboard
Описание: Определя файл за записване на статистика
Контекст: <CBandUser>
Синтаксис: CBandUserScoreboard path
Бележка: Този файл трябва да има възможност за промяна от потребител apache
Име: CBandUserPeriod
Описание: Specifies a period after which a user's usages are cleared
Контекст: <CBandUser>
Синтаксис: CBandUserPeriod period
period – възможни единици: S (seconds), M (minutes), H (hours), D (days), W (weeks)
Пример:
CBandUserPeriod 1W
CBandUserPeriod 14D
CBandUserPeriod 60M
Име: CBandUserPeriodSlice
Описание: Specifies a period slice length
Подразбиране: slice_len = limit
Контекст: <CBandUser>
Синтаксис: CBandUserPeriodSlice slice_length
Пример:
CBandUserLimit 100G
CBandUserPeriod 4W
CBandUserPeriodSlice 1W
Периода ще бъде разделен на 4 малки парчета(4W/1W=4).Всяко парче има 100G/4=25G трафик.След една седмица ограничението ще бъде 50G, след две седмици 75W и т.н.
3. Примери
3.1 Ограничаване по скорост
#Дефиниране на клас
<CBandClass local_traffic>
CBandClassDst 172.16.0.0/16
CBandClassDst 192.168.0.0/16
</CbandClass>
<VirtualHost *>
ServerName dhstudio.eu
ServerAlias www.dhstudio.eu
DocumentRoot /var/www/
ErrorLog /var/www/error.log
LogLevel warn
CustomLog /var/www/access.log combined
<Directory "/var/www/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#Максимална скорост 1024 kbps за този виртуален хост
#Максимално 10 заявки за секунда за този виртуален хост
#Максимално 30 отворени връзки за този хост
CBandSpeed 1024 10 30
#Максимална скорост от 20kb/s, 2 заявки за секунда, 3 отворени връзки за клас local_traffic
CBandClassRemoteSpeed local_traffic 20kb/s 2 3
</VirtualHost>
Бележка: Когато създавате класове трябва да ги описвате преди директивата <VirtualHost>. Когато създавате ограничения на виртуален хост трябва да бъдат описани след директивата ServerName.
3.2 Ограничаване по трафик
CBandDefaultExceededURL http://www.dhstudio.eu/bandwidth_exceeded.html
<VirtualHost *>
ServerName dhstudio.eu
ServerAlias www.dhstudio.eu
DocumentRoot /var/www/
ErrorLog /var/www/error.log
LogLevel warn
CustomLog /var/www/access.log combined
<Directory "/var/www/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#Възможен трафик за този виртуален хост 100 MB CBandLimit 100000 #Когато трафика е надвишен пренасочва към http://www.dhstudio.eu/bandwidth_exceeded.html CBandExceededURL http://abc.org/bandwidth_exceeded.html # Файл със статистика CBandScoreboard /var/www/cband/dhstudio.scoreboard # Период след които файла със статистика ще бъде занулен (30 минути) #(само във версии >=0.9.5-rc2)
CBandPeriod 30M
</VirtualHost>
Бележка: Когато създавате класове трябва да ги описвате преди директивата <VirtualHost>. Когато създавате ограничения на виртуален хост трябва да бъдат описани след директивата ServerName.
4. Извеждане на уеб статистика
При инсталирането в конфигурационния файл на mod_cband(/etc/apache2/mods-enabled/cband.conf) се описва от къде може да бъде изведена статистика за ограничените виртуални хостове:
<Location /cband-status> SetHandler cband-status </Location> <Location /cband-status-me> SetHandler cband-status-me </Location>
Може да видите статистиката от:
http://www.site_cband.com/cband-status
http://www.site_cband.com/cband-status-me
Ако желаете статистиката да бъде представена под XML формат:
http://www.site_cband.com/cband-status?xml
http://www.site_cband.com/cband-status-me?xml
В този си вид статистиката е свободна за гледане от абсолютно всеки. Ако желаете да има поне минимална защита може да използвате следния пример:
Файл: /etc/apache2/mods-enabled/cband.conf
<IfModule mod_cband.c>
<Location /cband-status>
Order allow,deny
Allow from all
SetHandler cband-status
AuthType basic
AuthName "Cband Authentication"
Require valid-user
AuthUserFile /var/www/.htpasswd
</Location>
<Location /cband-status-me>
SetHandler cband-status-me
</Location>
</IfModule>
След като редактирахте конфигурационния файл на mod_cband е необходимо да създадете потребител:
htpasswd -c /var/www/.htpasswd cband
mod_cband е всичко което искате, лесен за инсталиране и конфигуриране, а освен това и работи чудесно. Той се ползва най- често от хостинг компании, но също и от всеки които има необходимост да ограничи скоростта или трафика на виртуален хост или хостове.
Ако откриете грешка в mod_cband ще Ви помолим да бъде изпратена на : http://sourceforge.net/tracker/?group_id=154335&atid=791368
Библиография: