Cómo configurar acoplamiento de tarjetas de red (bonding)

Aqui os dejo este fantástico artículo para hacer bonding con vuestras tarjetas de red. Solamente decir que con este manual se pueden juntar dos conexiones de internet en un mismo ordenador, sumando el ancho de banda de cada una de ellas y usando solamente una IP. Sin mas preambulos os dejo aqui el manual.

Introducción – bonding

El controlador bonding, originalmente creado por Donald Becker, está incluido en prácticamente todas las distribuciones de GNU/Linux y permite sumar las capacidades de varias interfaces físicas de red con objeto de crear una interfaz lógica. Esto se lleva a cabo con el objeto de contar con redundancia o bien balanceo de carga.

Procedimientos.

Fichero de configuración /etc/modprobe.conf.

Se establece el controlador bonding para crear la interfaz bond0 del siguiente modo:

alias bonding bond0

controlador puede llevar parámetros que permiten modificar su funcionamiento, de entre los cuales los más importantes son mode y miimon. A fin de obtener un buen funcionamiento confiable, es importante configurar al menos éstos dos parámetros.

Para fines generales, se puede simplemente configurar del siguiente modo:

alias bond0 bonding
options bonding mode=0 miimon=0

Lo anterior establece en el parámetro mode la política de balanceo de carga y tolerancia a fallos y desactiva en el parámetro miimon la supervisión de MII, que corresponde la configuración más común.

Al terminar con el fichero /etc/modprobe.conf, es importante utilizar el mandato depmod para regenerar el fichero modules.dep y los ficheros mapa de los controladores.

depmod

Lo anterior solo debe devolver el símbolo de sistemas después de unos segundos.

Parámetro mode.

Se utiliza para establecer la política baja la cual se hará trabajar las tarjetas en conjunto. Los posibles valores son:

0 (cero): Establece una política de Round-Robin, que es un algoritmo que asigna una carga equitativa y ordenada a cada proceso, para proporcionar tolerancia a fallos y balanceo de carga entre los miembros del arreglo de dispositivos. Todas las transmisiones de datos son enviadas y recibidas de forma secuencial en cada interfaz esclava del arreglo empezando con la primera que esté disponible. Es la política predeterminada del controlador y la que funciona para la mayoría de los casos.

1 (uno): Establece una política de respaldo activo que proporciona tolerancia a fallos. Todo el tráfico se transmite a través de una tarjeta y solo se utilizará la otra en caso de que falle la primera.

2 (dos): Establece una política XOR (exclusive-or, exclusiva-o) para proporcionar tolerancia a fallos y balanceo de carga. Este algoritmo compara las solicitudes entrantes de las direcciones MAC hasta que coinciden para la dirección MAC (Media Access Control) de una de las tarjetas esclavas. Una vez que se establece el enlace, las transmisiones de datos de datos son enviadas en forma secuencial empezando con la primera interfaz disponible.

3 (tres): Establece una política de Round-Robinpara proporcionar tolerancia a fallos y balanceo de carga. Todas las transmisiones de datos son enviadas de forma secuencial en cada interfaz esclava del arreglo empezando con la primera que esté disponible.

En el siguiente ejemplo se establece la política 0 (cero):

options bonding mode=0

Parámetro miimon.

Se utiliza para especificar cada cuantos milisegundos se debe supervisar el enlace MII (Media Independent Interface). Se utiliza cuando se necesita alta disponibilidad para verificar si la interfaz está activa y verificar si hay un cable de red conectado. En el siguiente ejemplo se establecen 100 milisegundos:

options bonding mode=0

Se requiere que todos los controladores del arreglo de tarjetas tengan soporte para MII. Para verificar si el controlador de la tarjeta tiene soporte para MII, se utiliza el mandato ethtool, donde la salida debe devolver el parámetro Link Detected con el valor yes. Ejemplo:

ethtool eth0

Lo anterior debe devolver algo similar a lo siguiente:

Settings for eth0:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	Advertised auto-negotiation: Yes
	Speed: 100Mb/s
	Duplex: Half
	Port: MII
	PHYAD: 32
	Transceiver: internal
	Auto-negotiation: on
	Supports Wake-on: pumbg
	Wake-on: d
	Current message level: 0x00000007 (7)
	Link detected: yes

Para desactivar esta función, se utiliza el valor 0 (cero). Ejemplo:

options bonding mode=0 miimon=0

Fichero de configuración /etc/sysconfig/network-scripts/bond0.

Este se configura con los mismo parámetros que una tarjeta normal. Requiere los parámetros ONBOOT, BOOTPROTO, DEVICE, IPADDR, NETMASK y GATEWAY.

En el siguiente ejemplo se configura la interfaz bond0 con la dirección IP estática 192.168.0.1, máscara de subred 255.255.255.0, puerta de enlace 192.168.0.254 y la interfaz inicia junto con el sistema creando el fichero /etc/sysconfig/network-scripts/ifcfg-bond0 con el siguiente contenido:

DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192-168.0.1
NETMASK=255.255.255.0
GATEWAY=192.168.0.254

Las interfaces de red a utilizar como esclavas se configuran de la siguiente forma, considerando que se tiene eth0 y eth1, el contenido del fichero /etc/sysconfig/network-scripts/ifcfg-eth0 sería:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=no
SLAVE=yes
MASTER=bond0

Y el contenido del fichero /etc/sysconfig/network-scripts/ifcfg-eth1 sería:

DEVICE=eth1
BOOTPROTO=none
ONBOOT=no
SLAVE=yes
MASTER=bond0

Iniciar, detener y reiniciar el servicio network.

Para ejecutar por primera vez el servicio network tras configurar el acoplamiento de tarjetas, utilice:

service network start

Para hacer que los cambios hechos tras modificar la configuración surtan efecto, utilice:

service network restart

Para detener el servicio network utilice:

service network stop

Comprobaciones.

Para verificar que la interfaz lógica quedó configurada, en el caso de haber utilizado las interfaces eth0 y eth1, utilice:

ifconfig

Lo anterior debe devolver algo similar a lo siguiente:

bond0     Link encap:Ethernet  HWaddr 00:01:80:41:9C:8A
          inet addr:192.168.1.64  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::201:80ff:fe41:9c8a/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:5128 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3817 errors:7 dropped:0 overruns:0 carrier:0
          collisions:3 txqueuelen:0
          RX bytes:3493139 (3.3 MiB)  TX bytes:495025 (483.4 KiB)

eth0      Link encap:Ethernet  HWaddr 00:01:80:41:9C:8A
          inet6 addr: fe80::201:80ff:fe41:9c8a/64 Scope:Link
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:5056 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3781 errors:0 dropped:0 overruns:0 carrier:0
          collisions:3 txqueuelen:1000
          RX bytes:3474685 (3.3 MiB)  TX bytes:488632 (477.1 KiB)
          Interrupt:11 Base address:0xc000 

eth1      Link encap:Ethernet  HWaddr 00:01:80:41:9C:8A
          inet6 addr: fe80::201:80ff:fe41:9c8a/64 Scope:Link
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:72 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36 errors:7 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:18454 (18.0 KiB)  TX bytes:6393 (6.2 KiB)
          Interrupt:10 

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:6138 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6138 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:8364864 (7.9 MiB)  TX bytes:8364864 (7.9 MiB)

Para verificar que las interfaces de red están funcionando correctamente, y que hay un cable de red conectado a éstas, se utiliza el mandato ethtool del siguiente modo:

ethtool eth0 |grep "Link detected"
ethtool eth1 |grep "Link detected"

Si ambas tarjetas tiene soporte para MII, lo anterior debe devolver lo siguiente:

Link detected: yes
Link detected: yes

Bibliografía sobre bonding

Fuente: a l c a n c e l i b r e . o r g

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

Instalar TRAC en CentOS 5

//www.edgewall.org/gfx/trac_logo.png

Guía breve para instalación básica de TRAC. ¿Qué es TRAC? Yo lo definiría como un “documentador” :P pero la definición más técnica sería una wiki con sistema de seguimiento de errores para proyectos de desarrollo de software. Incorpora una interfaz para Subversion, una línea de tiempo que muestra los eventos actuales y pasados del proyecto en orden, etc. Más info en Trac.

Esta pequeña guía ha funcionado para CentOS 5.
Entorno a instalar

  • Apache 2 utilizando mod_dav_svn
  • Trac mediante Apache 2 con mod_python
  • Repositorios de SVN en /srv/svn, accesible por http://server/svn/proyecto
  • Proyectos de TRAC en /srv/trac, accesible por http://server/trac/proyecto

Requisitos

  • Python >= 2.3
  • Para sistemas RPM: python-devel 7 python-xml
  • setuptools
  • Base de datos: SQLite, PostgreSQL o MySQL (escogemos SQLite por recomendación de Trac Wiki)
  • ClearSilver: opcional para algunos plugins que lo requieren Si queremos control de versiones necesitamos Subversion (versions recommended: 1.2.4, 1.3.2 or 1.4.2)

1. Instalamos subversion y el mod de SVN para Apache

# yum install subversion mod_dav_svn

Si las siguientes dos líneas no están presentes, añadelas (revisar subversion.conf en conf.d, porque puede que estén ahí)

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

2. Instalamos el mod para python, algunos paquetes necesarios a posteriori y ClearSilver del repositorio de Dag

# yum install mod_python
# yum install neon neon-devel python-devel swig

# wget Dag.Wieers.com/ClearSilver
# rpm -i clearsilver-0.10.4-1.el5.rf.i386.rpm
# wget Python ClearSilver
# rpm -i python-clearsilver-0.10.4-1.el5.rf.i386.rpm

3.  Algo que no aparece en ninguna de las guías es la instalación de SetupTools. Nada más alejado de la realidad que yo quiera o pretenda entender que significa y que hace SetupTools. Sólo sé que es necesario para instalar luego el Trac. No sé si soy el único, pero cada vez que entro en esa web me dan ganas de suicidarme. En fin, cosas que tiene uno. Para instalar SetupTools hacemos:

# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py

4. Instalar Trac

# wget http://ftp.edgewall.com/pub/trac/Trac-0.11.2.1.tar.gz
# tar xfz Trac-0.11.2.1.tar.gz
# cd Trac-0.11.2.1

# python ./setup.py install

Ahora nos pregunta una serie de cosas: nombre de nuestro proyecto, tipo de base de datos(por defecto y recomendación, lo dejamos en default que es SQLite), path hacia los repositorios, path al proyecto, etc.

Creamos nuestro repositorio de SVN

# svnadmin create –fs-type fsfs /srv/svn/proyecto

Inicializamos un proyecto de TRAC

# mkdir /srv/trac/
# trac-admin /srv/trac/proyecto initenv

El path para el repositorio es /srv/svn/proyecto
Damos permisos a Apache sobre los directorios que requerimos.

# chown -R apache.apache /srv/svn/
# chown -R apache.apache /srv/trac/

Le decimos a Apache donde está el repositorio de SVN, creando configuración adicional para Apache

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

<Location /svn/proyecto>
DAV svn
SVNPath /srv/svn/
AuthType Basic
AuthName “Repositorio de SVN”
AuthzSVNAccessFile /srv/svn/svn-acl-conf
AuthUserFile /srv/svn/.htpasswd
Require valid-user
</Location>

Creamos un fichero .htpasswd, donde añadimos los usuarios y su password con acceso al repositorio

# touch /srv/svn/proyecto.htpasswd
# htpasswd -m /srv/svn/proyecto.htpasswd

Creamos una Lista de Control de Acceso (ACL) para el repositorio

# vim /srv/svn/svn-acl-conf

Y añadimos las siguientes directivas

[proyecto:/]
= rw

Le decimos a Apache donde está el TRAC, añadiendo otro archivo de configuración

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

<Location /trac/proyecto>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /srv/trac/proyecto
PythonOption TracUriRoot /trac/proyecto
<Location>

<Location /trac/proyecto/login>
AuthType Basic
AuthName “trac”
AuthUserFile /srv/trac/proyecto.htpasswd
Require valid-user
<Location>

Añadimos un usuario de TRAC

# touch /srv/trac/proyecto.htpasswd
# htpasswd -m /srv/trac/proyecto.htpasswd usuario

Le damos permisos de admin

# trac-admin /srv/trac/ permission add TRAC_ADMIN

Reiniciamos Apache

# service httpd restart

NOTA1: el WebAdmin Plugin no hace falta en la versión 0.11, ya viene por defecto. Sólo hay que dar permisos de TRAC_ADMIN por consola a un usuario y la pestaña de “Admin” aparecerá.

Links

Monitorizar logs del sistema con Logwatch en Ubuntu

Una práctica recomendable como buen administrador de sistemas es revisar los logs del sistema para comprobar el buen funcionamiento del mismo. Esta tarea es bastante pesada porque en un sistema servidor habrá mucha actividad y estos ficheros pueden llegar a crecer bastante día a día. Como no podía ser menos alguien creó una herramienta que nos facilitara enórmemente esa tediosa labor. LogWatch es una analizador de logs que se ejecuta cada noche y te envía un correo con los resultados.

//www.nrgglobal.com/images/products/logwatch/lw_homepage.png

Instalación:

sudo aptitude install logwatch

Configuracion:

El fichero de configuración esta en,  /usr/share/logwatch/default.conf/logwatch.conf. Abre el fichero y podras ver algunos parametros pra su correcto funcionamientoque deberas rellenar, el correo donde enviar los avisos:

sudo gedit  /usr/share/logwatch/default.conf/logwatch.conf

MailTo = root updates to MailTo = user.name@domain.tld

ClusterSSH – Administración de servidores de “una sola tacada”

Los administradores de sistemas que disponen de una gran cantidad de servidores Linux/Unix que administrar, o bien disponen de máquinas que tiene una configuración similar pueden utilizar una herramienta llamada OpenSSH. Herramienta que permite administrar vía SSH varios servidores a la vez.

Se instala con un simple sudo apt-get install clusterssh (en sistemas debian)

Os dejo un video para que veais la instalación, configuración y uso de esta mágnifica herramienta «OpenSSH»

Información:

  • Software: ClusterSSH
  • Duración: 2 minutos y 54 segundos
  • Fuente: http://www.screencasts.es