carp@home Explicando lo que nadie me explico

9dic/110

Alta Disponibilidad: Load Balancer y Failover con Haproxy

1. Nociones de Escalabilidad, Load Balancing y Failover

En este artículo veremos cómo configurar un Load Balancer con Failover usando software con el fin de Balancear un Web Server. Un Load Balancer es, en escencia, un sistema que recibe peticiones de un cliente, las procesa a partir de algún criterio (algoritmo) y finalmente las envía a alguno de los servidores que las resolverán y responderán.

7dic/110

ProFTPD: Configurando un FTP Server con TLS

Trabajar con Servidores Web requiere generalmente disponer de una serie de herramientas con que interactuar con los Boxes y en este capítulo vamos a dedicarnos al viejo y buen FTP (File Transfer Protocol), imprescindible a la hora de transferir o descargar rapidamente archivos desde nuestros Servers.

Linux ofrece muchas alternativas a la hora de instalar un ftp-server y hemos optado en este caso por trabajar con ProFTPD debido a que es un servidor ftp robusto y configurarlo con medidas extra de seguridad (TLS) es relativamente sencillo.

La necesidad de securizar nuestras transferencias FTP con un protocolo como TLS (Transport Security Layer) reside en que al operar con FTP estamos moviendo a través de internet archivos de texto plano que podrían ser facilmente legibles en caso de que, por ejemplo,  trabajemos en una red en que corre un Sniffer. La tarea de TLS será la de garantizar que los datos de conexión al servidor FTP y los paquetes que subamos o bajemos sean encriptados de modo tal que, ante un sniffer u otra herramienta que intercepte nuestra tráfico no corramos el riesgo de exponer información valiosa.

28nov/110

Script Perl/Bash para gestionar servicios

Era cuestión de tiempo simplemente para que en un entorno de aprendizaje y desarrollo como el que manejo algunas tareas se volvieran sumamente tediosas. Mi HA lab sigue creciendo en Boxes y VMs y yo no paro de meter, sacar, romper, arreglar.  Me puse a pensar cuántas veces por día tipeaba /etc/init.d/algunservicio algun-flag y fue así que me dispuse a escribir algún script que me salvara de ingresar la ruta completa para controlar un servicio. El script debía ser muy sencillo y tendría que permitirme poder acceder al control de los servicios tipeando, por ejemplo, services apache2 restart.

Las operaciones de control a realizar antes de ejecutar el comando eran nada más que 2:

1) El script debía verificar que quien lo ejecutara fuera Root, de otro modo a rootearse.
2) Además, necesitaba verificar que el servicio pasado como primer flag fuese un archivo existente de hecho en /etc/init.d/

Lo escribi primero en Perl y luego en Bash para poder agregarlo definitivamente a mi PATH. Mostraré aquí sólo la versión de Bash y los procedimientos para incorporarlo definitivamente al PATH de trabajo. Al final del artículo dejo link a las 2 versiones por si alguien prefiere Perl.

Archivado en: Sysadmin Continúa leyendo
25nov/110

Replicacion Master-Master en Mysql

Hace un tiempo escribi un artículo explicando cómo instrumentar Replicación Master-Slave en Mysql para 2 boxes Debian Squeeze y prometi regresar sobre el tema de la Replicación con formato Master-Master. Este artículo viene a demostrar que soy un hombre de palabra =P.

Antes de comenzar, considero importante dedicar algunas palabras a la Replicación de datos en Mysql. Recomiendo, además, la lectura del anterior artículo ya que gran parte de lo que veremos aquí fue escrito en él desde que Mysql no tiene una solución específica para Replicar Master-Master y arribamos a este modelo duplicando el trabajo realizado al replicar Master-Slave: es decir, creamos replicacion de master (box1) a slave (box2) y luego repetimos el proceso de master (box2) a slave (box1) de suerte que arribamos -en este caso- a una interface con 2 bases de datos sobre las cuales se pueden realizar tareas INSERT/UPDATE/DELETE, etc que impactarán de inmediato en la contigua.

22nov/110

Desinstalar Mysql en Debian (Clean uninstall)

Este blog ha sido creado para dar cuenta de las cosas con que me voy encontrando a la vez en que intento penetrar el mundo Sysadmin en Linux. En la medida en que los problemas surgen, busco en Google, resuelvo -las más de las veces- y creo que es una buena idea compartir escribiendo los pasos que segui en cada caso como a mi me hubiera gustado encontrarlos.

Se trata -en esta oportunidad- de algo muy sencillo: hemos tocado tanto Mysql que simplemente desearíamos comenzar de cero por lo que necesitamos un clean uninstall de mysql para, luego, reinstalar y volver a comenzar.

Esto es muy sencillo en Debian Squeeze y supongo que debe serlo en otras distribuciones. No necesitamos explicar que todas las bases de datos del servidor van a perderse. Vamos a desinstalar por completo mysql de suerte que si luego intentamos un  mysql -u root -p bash no reconocerá el programa.

Archivado en: Sysadmin Continúa leyendo
19nov/110

Autologin on boot en Debian Squeeze

En la medida en que se suman computadoras headless (sin monitor) a mi HA lab me he encontrado con la necesitad de administrarlas desde el SSH de la única máquina que sí posee monitor. Uno de los primeros problemas con que me topé fue el del login de cada uno de los boxes cuando desde SSH le hacía un reboot o shutdown. Al arrancar el box nuevamente, Debian -como todas las distribuciones- me dejaba en el punto en que Getty presentaba el prompt de Login.

Como es evidente, esto no me servía en nada: si un box debía ser reiniciado por cualquier razón, éste debía volver a ofrecer servicios lo más rápido posible. Es así que la necesidad de saltear el paso del Login se hizo patente: necesitaba que mis boxes reiniciaran y se loguearan automáticamente.

Archivado en: Sysadmin Continúa leyendo
10nov/110

Sincronizando archivos entre 2 servidores Debian Squeeze con Rsync

Tras haber optado por Rsync como la solución para tener sincronizados los archivos de aplicaciones que residan en mas de un box, explicaré brevemente cómo instalar y utilizar esta herramienta. Antes de pasar abrir la terminal, veamos en qué situaciones Rsync puede ser de utilidad.

La acostumbrada introduccion

Tomemos a modo ilustrativo mi caso: una aplicación web PHP/MYSQL sobre LAMPP (Debian Squeeze) a la que  por cuestiones de alto tráfico debi agregarle un nuevo Box con una copia idéntica de la aplicación en servidor original. Es decir, todo lo que antes estaba en un dedicado se encuentra ahora en 2 dedicados y, Load Balancer con Hardware de por medio, mis visitas serán dirigidas a uno u otro servidor según la carga que estos tengan (si el Box 1 se encuentra con un Server Load alto, la aplicación será servida desde el Box 2).

Archivado en: Sysadmin Continúa leyendo
9oct/110

Replicacion en MYSQL entre 2 servidores Apache2 con Debian Squeeze

¿Que es la replicacion?

La Replicación es un mecanismo mediante el cual los cambios efectuados a una base de datos (MASTER) impactan inmediatamente sobre otra/s (SLAVES) permitiendo poseer contenido sincronizado y distribuído entre varios servidores mysql: ideal para balancear carga entre nodos. Sin  embargo, replicar de este modo no constituye un método eficiente para garantizar la integridad de la información ni una solución de Backup dado que un eventual daño a la BD MASTER se replicará inmediatamente a las SLAVES.

Este método (MASTER->SLAVE) supone además la limitación de que sólo la Base de Datos Master es suceptible de operaciones INSERT/UPDATE/DELETE, en tanto que la Slave se encuentra limitada a SELECTS. Si bien no es la mejor solución para desarrollar una estrategia de HA veremos cómo implementarla y dejaremos para la próxima edición un modelo de Replicación más efectivo (MASTER-MASTER) a la hora de pensar en Load Balancing y HA.

Editado 25-11-2011: el post Replicación Master-Master en Mysql ya se encuentra disponible.

Archivado en: Sysadmin Continúa leyendo