Controlar el ancho de banda en Apache con mod_cband en centos 5.2

Aqui os escribo  este tutorial de mod_cband que es un modulo de apache nos permite controlar el ancho de banda usado por los usuarios conectados al servidor, ya sea en forma individual o general.

Instalación:

Descargamos el modulo.
Pagina del proyecto: http://sourceforge.net/projects/cband/

# wget http://downloads.sourceforge.net/cband/mod-cband-0.9.6.1.tgz?modtime=1138205796&big_mirror=0

Descomprimimos las fuentes

# tar -xvf mod-cband-0.9.6.1.tgz

Instalando dependencias necesarias

# yum install http-devel

Compilando las fuentes

# ./configure
# make
# make install

Agregamos el modulo al apache en el archivo httpd.conf, por defecto se agrega automáticamente la linea al compilar, si no fuera el caso, agregar la siguiente linea

# vim /etc/httpd/conf/httpd.conf

LoadModule cband_module modules/mod_cband.so

También es necesario agregar

CBandScoreFlushPeriod 1
CBandRandomPulse On

Reiniciamos el apache

# /etc/init.d/httpd restart

Ahora a configurar los dominios virtuales del apache:

En mi caso lo tengo en /etc/httpd/conf.d/virtual.conf
Se puede dar el caso de tenerlo en el mimos httpd.conf

Configuraciones y Limitaciones por Sitio

CBandSpeed 1024kbps 10 30
CBandRemoteSpeed 20kb/s 3 3

El parámetro CBandSpeed es una configuración Global para dicho Sitio, definimos que lo usuarios no podran sobrepasar los 1024Kbps, 10 respuestas por segundo y 30 conexiones abiertas.

El parámetro CbandRemoteSpeed es una configuración para cada usuario conectado en forma separada, definimos que el usuario en forma individual podra descargar a lo máximo 20Kb/s con 3 peticiones por segundo y 3 conexiones permitida.

Asi quedara nuestro virtual host

# vim /etc/httpd/conf.d/virtual.conf

“<“VirtualHost *:80″>”
DocumentRoot /var/www/html/miweb.com
ServerName miweb.com
ServerAlias www.miweb.com
ErrorLog logs/miweb.com_error.log
CustomLog logs/miweb.com_access.log combined
CBandSpeed 1024kbps 10 30
CBandRemoteSpeed 50kb/s 3 3
LogLevel warn
“<“/VirtualHost”>”

Nota: por alguna razon al poner mayor o menor no sale, asi que agrege “>” y “<“. para para que funcione no deben ir las comillas doble. Mucho ojo con eso.

Reiniciamos el apache

# /etc/init.d/httpd restart

y probamos nuestra web…. recomendaciones, podemos cambiar las variables, reiniciar el apache y probar.

Otras opciones

Podemos limitar el trafico mensual con:

CBandLimit 100M

Podemos ver en Linea el trafico y conexiones, etc (estatus de cband) con:

Creamos la carpeta

# mkdir /var/www/scoreboard

Le damos permisos para el apache

# chown apache:apache /var/www/scoreboard

Y agregamos al virtual host

CBandScoreboard /var/www/scoreboard
CBandPeriod 4W

“<“Location /cband-status”>”
SetHandler cband-status
“<“/Location”>”
“<“Location /cband-status-me”>”
SetHandler cband-status-me
“<“/Location”>”

Todo lo anterior se agrega al dominio virtual, quedando asi:

“<“VirtualHost *:80″>”
DocumentRoot /var/www/html/miweb.com
ServerName miweb.com
ServerAlias www.miweb.com
ErrorLog logs/miweb.com_error.log
CustomLog logs/miweb.com_access.log combined
CBandLimit 1000M
CBandSpeed 1024kbps 10 30
CBandRemoteSpeed 50kb/s 3 3
LogLevel warn
CBandScoreboard /var/www/scoreboard
CBandPeriod 4W
“<“Location /cband-status”>”
SetHandler cband-status
“<“/Location”>”
“<“Location /cband-status-me”>”
SetHandler cband-status-me
“<“/Location”>”
“<“/VirtualHost”>”

Nota: por alguna razon al poner mayor o menor no sale, asi que agrege “>” y “<“. para para que funcione no deben ir las comillas doble. Mucho ojo con eso.

Reiniciamos el apache

# /etc/init.d/httpd restart

De lo anterior limitamos el trafico mensual a 1GB
para ver las estadísticas:

http://miweb.com/cband-status o http://miweb.com/cband-status-me

A probar…
Suerte