jueves, 26 de marzo de 2009

Squid alta disponibilidad, LVS + Heartbeat

En un post anterior hable de como tener un servicio de Proxy en alta disponibilidad en un cluster de tres elementos con Heartbeat, esta configuración nos permite tener estrictamente un servicio en alta disponibilidad, pero tiene un par de pegas importantes; es un esquema activo-pasivo-pasivo, por lo que dos máquinas están en el banquillo a la espera de que el Heartbeat les llame a jugar, y por lo que tampoco estamos usando la capacidad de respuesta de las tres tarjetas de red des esos servidores, tenemos tolerancia a fallos pero no optimizamos el uso de recursos. Esto es lo que voy a mejorar con esta configuración de cluster activo-activo-activo mediante LVS y Heartbeat.

Este cluster lo instalaremos en el segmento DMZi detrás de la seguridad perimetral, la única regla que daremos de alta será la conexión al puerto 3128 en la ip virtual de nuestro cluster 172.95.69.100

El sistema operativo que usaremos será Debian 5.0 partiendo de la instalación por red, instalamos el sistema base sin seleccionar nada en tasksel, una vez finalizada sera necesario que se vean los servidores entre si, por lo que haremos las oportunas entradas en el fichero /etc/network/interfaces con una particularidad, la de añadir una dirección de loopback virtual;


M30:~# cat /etc/network/interfaces

auto lo

iface lo inet loopback


auto lo:0

iface lo:0 inet static

address 172.95.69.100

netmask 255.255.255.255

network 172.95.69.0

broadcast 172.95.69.255


# The primary network interface

auto eth0

iface eth0 inet static

address 172.95.69.30

netmask 255.255.255.0

network 172.95.69.0

broadcast 172.95.69.255

gateway 172.95.69.1

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 80.58.0.33


M30:~# cat /etc/hosts

127.0.0.1 localhost

127.0.1.1 M30

172.95.69.40 M40

172.95.69.50 M50

M40:~# cat /etc/network/interfaces

auto lo

iface lo inet loopback


auto lo:0

iface lo:0 inet static

address 172.95.69.100

netmask 255.255.255.255

network 172.95.69.0

broadcast 172.95.69.255


# The primary network interface

auto eth0

iface eth0 inet static

address 172.95.69.40

netmask 255.255.255.0

network 172.95.69.0

broadcast 172.95.69.255

gateway 172.95.69.1

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 80.58.0.33


M40:~# cat /etc/hosts

127.0.0.1 localhost

127.0.1.1 M40

172.95.69.30 M30

172.95.69.50 M50



M50:~# cat /etc/network/interfaces

auto lo

iface lo inet loopback

auto lo:0

iface lo:0 inet static

address 172.95.69.100

netmask 255.255.255.255

network 172.95.69.0

broadcast 172.95.69.255


# The primary network interface

auto eth0

iface eth0 inet static

address 172.95.69.50

netmask 255.255.255.0

network 172.95.69.0

broadcast 172.95.69.255

gateway 172.95.69.1

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 80.58.0.33


M50:~# cat /etc/hosts

127.0.0.1 localhost

127.0.1.1 M50

172.95.69.30 M30

172.95.69.40 M40


Instalamos los paquetes de heartbeat, ipvsadm y sus dependencias en las tres máquinas;

#aptitude install heartbeat ipvsadm ldirectord


Con ipvsadm, si no nos lo pide el debconf durante la instalación tendremos que reconfigurarlo usando el siguiente comando, configurando que arranque las reglas en el arranque y seleccionando both en la siguiente pregunta para que el equipo pueda actuar tanto como master y como backup.

# dpkg-reconfigure ipvsadm


Instalamos squid y realizamos las configuraciones necesarias para que el

servicio este disponible a los clientes;

#aptitude install squid


Lo que vamos a configurar es un cluster de tres miembros, en los que cada uno ofrezca servicio de proxy (squid), y a demás vamos a crear dos servicios en alta disponibilidad;

  • Ipvsadm va controlar un IP virtual 172.95.69.100.

  • ldirectord va a controlar la existencia de un servicio de proxy en los servidores reales consultando la disponibilidad del puerto 3128, y a redirigir desde esta IP virtual el tráfico en el puerto 3128 a los servidores reales mediante una distribución de carga uniforme con el algoritmo Round Robin.

Configuramos el kernel de los servidores para que soporte la retrasmision de paquetes, editando el fichero

M30:~# vim /etc/sysctl.conf


Y descomentamos la linea siguiente;

# Uncomment the next line to enable packet forwarding for IPv4

net.ipv4.ip_forward = 1


Aplicamos los cambios en las tres máquinas con el comando;

M30:~# sysctl -p

net.ipv4.ip_forward = 1

¿Que es todo esto? Pues es tener un cluster en el que los tres miembros están activos, por que comparten una IP virtual y un servicio de director que reparte la carga de peticiones de clientes al puerto 3128 homogéneamente entre todos los miembros, en cristiano es tener tres proxys que se ven como uno solo, y que a demás ofrecen el servicio en alta disponibilidad por que si uno de ellos cae el servicio sigue funcionando.

Empezamos por la configuración del ldirectord, editamos el fichero en las tres máquinas para definir el funcionamiento;

M30:~# vim /etc/ha.d/ldirectord.cf


# /etc/ha.d/ldirectord.cf

checktimeout=3

checkinterval=5

autoreload=yes

logfile="/var/log/ldirectord.log"

emailalert = "email@gmail.com"

virtual=172.95.69.100:3128

fallback=127.0.0.1:3128

real=172.95.69.30:3128 gate 1

real=172.95.69.40:3128 gate 1

real=172.95.69.50:3128 gate 1

protocol = tcp

checktype = connect

scheduler = rr

persistent = 20


En este fichero se definen los parámetros de funcionamiento del demonio que va a dirigir el servicio de proxy entre los servidores reales, se puede configurar también un mail para el envío de alertas, se define la IP y el puerto de nuestro servicio virtual y las IP y puertos de los servidores reales. Los siguientes parámetros definen el tipo de chequeo que va a realizar el demonio para comprobar que los servidores reales están vivos, que es en este caso una prueba de conexión TCP, el scheduler es el tipo de reparto de carga que se va a usar, en este caso Round Robin.

Inicializamos los demonios en las tres máquinas;

M30:~# /etc/init.d/ldirectord start


Podemos comprobar que esta funcionando con el siguiente comando, en el que podemos ver los miembros que comprarten la IP virtual y el weight es igual 1,lo que quiere decir que ldorector ha comprobado que esas máquinas tienen conectividad en el puerto 3128.

M30:~# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 172.95.69.100:3128 rr persistent 20

-> 172.95.69.50:3128 Route 1 0 1

-> 172.95.69.40:3128 Route 1 0 0

-> 172.95.69.30:3128 Local 1 0 0


Para configurar los servicios en alta disponibilidad con heartbeat, lo más sencillo es instalar la utilidad gráfica;


asier@asier-desktop:~$ aptitude install hb_gui


Lo primero que tenemos que hacer para conectarnos es ponerle una password al usuario hacluster;

M30:~# passwd hacluster


Y conectarnos a través de la aplicación, donde deberíamos ver ya los tres miembros de nuestro cluster vivos y en verde, hay que crear un grupo para nuestros servicios, lo he llamado load_balancer y hay que crearlo con los atributos target_role started, ordered true y collocated true.

Una vez creado el grupo hay que crear los dos servicios la ip virtual y el director, añadimos un recurso nativo “ipaddr2” dentro de nuestro grupo load_balancer con las siguientes parámetros; ip 172.95.69.100, lvs_support true.

Creamos otro recurso nativo dentro también del grupo load_balancer ldirector con los siguientes parámetros; config_file /etc/ha.d/ldirectord.cf

Si reiniciamos los servicios en las tres máquinas el resultado debería de ser el siguiente; tres nodos activos (running), uno de ellos como dc (domain controller), en uno de los nodos heartbeat arrancara los servicios de ldirector y ipaddr2, con esto estarían terminadas las configuraciones, ahora vamos a ver que pasa...


  • Desde un cliente se debería de poder hacer ping a nuestra ip virtual.

  • Si hacemos un nmap a la IP virtual deberíamos de ver el puerto 3128 abierto.

  • Si hacemos ssh a la ip virtual para conectarnos deberíamos conectarnos a cualquiera de las tres máquinas.

  • Si configuramos el proxy en un cliente, por supuesto, deberíamos navegar por que sino menudo manual de mierda, pero lo interesante es que nos debería de servir internet el squid de uno de los equipos del cluster, podemos comprobar cual haciendo; M30:~# tail -f /var/log/squid/access.log y viendo en cual de las tres máquinas nuestra actividad.


Pero lo más interesante viene ahora, si conectamos un segundo cliente podremos observar como el servicio de ldirectord le asigna esta conexión a otra de las máquinas, y si conectamos otro cliente, asignará la conexión a otra y así sucesivamente, por lo que comprobamos que ldirectod mediante el algoritmo de Round Robin reparte uniformemente la carga entre todos los miembros.


!Y aún hay algo aún mejor! ¿Que pasa si tiramos del cable de una de las máquinas?


  • Si tiramos de una de las que no es ni dc ni tiene los servicios corriendo, el ldirector detectará en 20 segundos que el servicio de proxy en ese miembro no esta disponible y dejara de repartirle trabajo.

  • Si tiramos la maquina que es dc, pasará lo de arriba y a demás heartbeat acordará a alguno de los otros miembros como nuevo dc.

  • Y lo mejor, que pasa si tiramos la máquina que tiene corriendo los servicios? Que el servicio de proxy se caerá hasta que heartbeat detecte que el cluster se ha degradado y una de los dos nodos restantes se anime a volver a ejecutar los servicios y restablecer asi todo.


Genial, no es verdad?

martes, 17 de marzo de 2009

RDS - TMC unos desconocidos muy útiles


Cualquier persona que viva en Madrid o en cualquier gran ciudad sabe que el tráfico es un problema , todo el mundo trabaja en la otra punta de la ciudad de donde vive y caravanas infinitas de coches destrozan los nervios a miles de personas todas las mañanas, averías, accidentes, obras.... Los coches son reductos de tecnología obsoleta, es casi la única parcela de nuestras vidas donde no han entrado el software, por eso creo que el sistema RDS - TMC aunque rudimentario es una ayuda al conductor.

El verano pasado, cuando compré mi GPS, un Mio c520 vi que como accesorio existía un soporte que habilitaba en el dispositivo la recepción de información TMC, aunque el accesorio costaba casi 100€ (sin gastos de envío) y esto me quitó todas las ganas innatas en mí de experimentar. Pero ahora como todo hay modelos nuevos, con accesorios nuevos y lo viejo tiene que desaparecer de los almacenes, así que lo he podido comprar por 20€ (35€ con gastos de envío).

El software del GPS cuando se conecta a la base habilita las opciones de TMC, en el mismo icono donde se puede ver la cobertura de la señal GPS se puede ver como el sistema sintoniza emisoras buscando información RDS - TMC , en España es RNE la que difunde esta señal y sorprendentemente la información es exactamente la misma que la que se puede ver en la pagina de la DGT sobre el estado de las carreteras, estoy deseando usarlo en el día a día para ver como funciona.


sábado, 14 de marzo de 2009

La tecnología en el mundo real

Seguramente
a ti, que lees mi blog te pasará algo parecido a lo que vengo experimentando últimamente con demasiada frecuencia, es como una sensación de espera infinita, de eterna expectativa. Desde que salió al mercado el iPhone hasta que los Españoles pudimos comprarlo (legalmente) la espera fue de más de un año, desde que salió el netbook de Asus hasta que lo pudimos comprarlo (con teclado en Español) pasaron un montón de meses, ahora que Palm ha presentado la Pre con su nuevo S.O. WebOS se inicia una nueva espera que por ahora no tiene fecha de finalización.

Pero el hecho es que en cada momento de espera yo sabido perfectamente las características de estos nuevos productos, vídeos demostración, unboxing, reviews, experiencias de bloggers... esto te pone en una tesitura extraña si tienes que elegir alguno de estos productos, lo que tienes es viejo, y lo que viene no lo tienes.

Recientemente en la empresa en la que trabajo se ha implantado un nuevo servicio de correo electrónico con Zimbra (los motivos de la elección de este sistema darían para otro post...), hasta ahora y casi por inercia del mercado profesional la dirección de la empresa utiliza Blackberrys de Telefónica en su modalidad “profesional” para tener correo en movilidad. Esta opción no puede funcionar peor, el acceso a las cuentas desde las BB se realiza leyendo el buzón de cada usuario por POP3, por lo que si previamente te has descargado el correo en el escritorio esos mensajes ya nos los veras en la BB, lo que es otro desastre, y a demás, todo el correo que leas en la BB aparecerá como correo no leído en el escritorio, lo que es otro desastre al que le podemos sumar correos que se duplican, que se bloquean y entran mil veces...

El resultado de todo esto es que al final, el usuario, tiene una sensación desoladora, por un lado la tecnología que ya tiene en sus manos no la entiende, y por otro lado se ve en la obligación de hacer esfuerzos por adaptarse a lo inevitable, lo nuevo. En este clima intentar inducir cambios asusta al más pintado; al usuario por que impacta directamente en su productividad, al responsable de tecnología por que la inversión puede acabar en un cajón y al comercial supongo que también le dejara frío cuando vea el resultado de lo que vende.

Por eso hay que entender la tecnología en su contexto, no todo el mundo es como yo, o como tú, que no te conformas con lo que hay por que ya sabes exactamente lo que esta por venir, a veces hay que simplificar, bajar al mundo real y ver que es lo que es necesario, que es lo que espera el usuario, y eso es lo que estoy intentando, encontrar un terminar compatible con Active Sync para tener correo y PIM en movilidad con el nuevo servidor Zimbra.

Tengo que elegir de entre todo el “inmenso” catálogo de terminales que ofrece Telefónica entre tres;

Nokia E71







http://www.nokia.es/link?cid=PLAIN_TEXT_1056685

HTC Touch HD







http://www.htc.com/www/product/touchhd/overview.html

HP Ipaq data meseenger







http://h10010.www1.hp.com/wwpc/es/es/sm/WF05a/215348-215348-64929-3352590-3352590-3806501.html

Cual no acabaría en un cajón? Yo personalmente preferiría un iPhone o la Palm Pre, que tampoco estaría nada mal el HTC Magic... pero esto es lo que hay, yo ya se que el que más me gusta a mí es el HTC por que es táctil, que a mi jefe le va a gustar el HP por que le gusta escribir cómodo, y que a la direccion le va a gustar el Nokia por que es como cualquier teléfono de toda la vida y tiene teclado como las actuales Blackberrys.

miércoles, 11 de marzo de 2009

Galileoscope


Este 2009 es el año de la astronomía,la ciencia que se ocupa del estudio de los cuerpos celestiales, a que mola... ¿Quien no se acuerda de la primera vez que miró a través de un telescopio? pues para celebrarlo se han juntado astronomos, ingenieros de ópticas y científicos,para diseñar un telescopio low-cost de alta calidad con el fin de contribuir a la divulgación de la astronomía, el telescopio cuesta 15$, a madrid con gastos de envío 29 €.

http://www.galileoscope.org