Инсталиране и конфигуриране на 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

Позволени единици при различните директиви:



Име: 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


Библиография:


  1. http://mod-cband.com

  2. http://httpd.apache.org/docs/