Cluster Mysql con CentOS, DRBD y Heartbeat

Heartbeat (High Availability)Distributed Replicated Block Device

CentOS + DRBD + HeartBeat + MYSQL DRBD (Distributed Replicated Block Device), es un sistema para almacenamiento distribuido usado en Linux para realizar replicaciones de sistemas de archivos por bloques. Este paquete consiste en un modulo del Kernel drbd-kmod, y scripts que permiten que se puedan realizar replicaciones muy similares a un RAID 1, en red. DRBD se suele usa acompañado de herramientas de High Availability (HA), como Heartbeat, para lograr servidores de alta disponibilidad.

Paquetes Necesarios

En el siguiente ejemplo utilizaremos como base un sistema 32 bits, para lo cual necesitaremos instalar por Yum, o por RPM los siguientes paquetes.
• drbd.i386
• kmod-drbd.i686
• MySQL-server <– Aplica a nuestro caso se puede usar cualquier otro servicio.
• Heartbeat*
• Gnutls*
• Ipvsadm*

Para ejecutar el modulo de drbd en el kernel debemos ejecutar lo siguiente:

• modprobe drbd

Instalación del Sistema Operativo CentOS.
El sistema operativo lo instalaremos como una instalación normal, con las particiones que deseemos para el, con la única diferencia que dejaremos un espacio sin particionar para ser usado por DRBD, en esta partición almacenaremos en el futuro las aplicaciones que deseemos administrar con DRBD, por ejemplo, si deseamos como es nuestro caso que DRBD mantenga actualizado nuestro MySQL, debemos asegurarnos que TODA la data del MySQL se este almacenando en el volumen lógico del DRBD.

Preparación de la partición de DRBD

Para particionar el volumen que hemos dedicado a nuestro DRBD, será necesario crear un volumen físico, luego agruparlo y por último crear el volumen lógico, de la siguiente forma.
• Pvcreate /dev/sda5 <–/dev/sda5 dependerá de la partición que nos de fdisk –l
• Vgcreate drbd /dev/sda5 <– drbd es el nombre que le daremos al grupo de volúmenes.
• Lvcreate -L1024M -n mysql-drbd drbd <– mysql-drbd es el nombre que le daremos a nuestro volumen lógico.

Configurar DRBD

Una vez hayamos preparado las particiones de DRBD en ambos servidores, es momento de proceder a realizar la configuración de DRBD, esto consiste en editar un fichero ubicado en la ruta /etc/drbd.conf, este archivo tiene características muy peculiares dependiendo de lo que deseamos realizar. En nuestro caso esta adaptado a las necesidades de MySQL, y quedaría de la siguiente forma.

# Our MySQL share
resource db {
protocol C;
handlers {pri-on-incon-degr “echo ‘!DRBD! pri on incon-degr’ | wall ; sleep 60 ; halt -f”; }
startup { wfc-timeout 0; degr-wfc-timeout 120; }
disk { on-io-error detach; } # or panic, …
syncer { rate 6M; }
on srv-nodo01-drbd {
device /dev/drbd1; #Este es el device que se crea para DRBD
disk /dev/mysql_drbd/mysql-drbd; #Este es el volumen lógico que creamos
address 10.134.16.210:7789; #ip servidor nodo01
meta-disk internal;
}
on srv-nodo02-drbd {
device /dev/drbd1;
disk /dev/mysql_drbd/mysql-drbd;
address 10.134.16.209:7789;
meta-disk internal;
}
}

Este es el contenido del archivo /etc/drbd.conf, y debe ser igual en ambos equipos por ende podemos hacer simplemente un scp o un rsync entre ambos para copiarlo.

Una vez configurado nuestros DRBD, debemos iniciar el servicio pero antes debemos crear los recursos que hemos configurado, en nuestro caso como se puede observar en el archivo el recurso se llama “db”, por tal motivo ejecutaremos el siguiente comando e iniciamos el servicio.

drbdadm create-md db

La ejecución de este comando dará las siguientes respuestas:

[root@node1 etc]# drbdadm create-md db
v08 Magic number not found
v07 Magic number not found
About to create a new drbd meta data block on /dev/sda5.
. ==&gt; This might destroy existing data! &lt;== Do you want to  proceed? [need to type 'yes' to confirm] yes Creating meta data…  initialising activity log NOT initialized bitmap (256 KB) New drbd meta  data block sucessfully created.</blockquote>
service drbd start 

Podemos ver que el servicio esta funcionando correctamente si ejecutamos lo siguiente en ambos equipos.

cat /proc/drbd
[root@node1 etc]# service drbd start

Starting DRBD resources:    [ d0 n0 ]. …… 
[root@node1  etc]# cat /proc/drbd version: 8.0.4 (api:86/proto:86) SVN Revision:  2947 build by buildsvn@c5-i386-build, 2007-07-31 19:17:18  . 0:  cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r—   .  ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0    . resync:  used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log:  used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
[root@node1  etc]# ssh root@node2 cat /proc/drbd   version: 8.0.4 (api:86/proto:86)  SVN Revision: 2947 build by buildsvn@c5-i386-build, 2007-07-31 19:17:18   . 0: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C  r—   . ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0    . resync:  used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log:  used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0

En este punto si nos fijamos en los resultados del comando anterior podremos observar que ambos nodos están configurados como secundarios, y como es de suponerse necesitamos que uno de ellos al menos, sea primario. Para realizar esta tarea es necesario hacer lo siguiente.

[root@node1 etc]# drbdadm — –overwrite-data-of-peer primary db
[root@node1 etc]# watch -n 1 cat /proc/drbd

version:  8.0.4 (api:86/proto:86) SVN Revision: 2947 build by  buildsvn@c5-i386-build, 2007-07-31 19:17:18  . 0: cs:SyncTarget  st:Primary/Secondary ds:Inconsistent/Inconsistent C r—   . ns:0 nr:68608  dw:68608 dr:0 al:0 bm:4 lo:0 pe:0 ua:0 ap:0    .  [&gt;...................] sync’ed:  0.9% (8124/8191)M finish: 0:12:05  speed: 11,432 (11,432) K/sec resync: used:0/31 hits:4283 misses:5  starving:0 dirty:0 changed:5 act_log: used:0/257 hits:0 misses:0  starving:0 dirty:0 changed:0

En este punto está listo configurado y operativo el DRBD, por lo que podemos formatear nuestro volumen lógico para dejarlo preparado para recibir información, de la siguiente forma.

mkfs.ext3 /dev/drbd1 ; mkdir /db ; mount /dev/drbd1 /db

Para probar ahora que todo este funcionando como esperamos podemos crear archivos falsos en nuestra partición, e intercambiar los roles de primario y secundario para verificar que se estén sincronizando nuestros archivos, para esto podemos seguir los siguientes pasos.

[root@node1 etc]# for i in {1..5};do dd if=/dev/zero of=/db/file$i bs=1M count=100;done

Este comando creará 5 ficheros de 100 megabytes, con el nombre file 1,file 2,file 3, file 4, file 5. Después de hacer el cambio de nodos manualmente como se describe a continuación, podremos verificar que nuestros ficheros se han replicado.

[root@node1 /]# umount /db ; drbdadm secondary db
[root@node2 /]# mkdir /db ; drbdadm primary db ; mount /dev/drbd1 /db
[root@node2 /]# ls /db/ file1  file2  file3  file4  file5  lost+found

Ahora podemos realizar el proceso contrario para verificar qque si por algún motivo nuestro nodo01 falla, la información del nodo02 podrá ser replicada al nodo01 sin problemas.

[root@node2 /]# rm /db/file2 ; dd if=/dev/zero of=/db/file6 bs=100M count=2
[root@node2 /]# umount /db/ ; drbdadm secondary db
[root@node1 /]# drbdadm primary db ; mount /dev/drbd1 /db
[root@node1 /]# ls /db/ file1  file3  file4  file5  file6  lost+found

En este punto ya hemos comprobado que nuestro DRBD funciona correctamente, y por ende solo nos queda configurar la última herramienta de HA, Heartbeat, que lo haremos después de configurar MySQL con las particiones de DRBD

Configuración de MYSQL

Para configurar MySQL con las particiones de DRBD es simple en nuestro archivo /etc/my.cfg, tenemos una directiva que nos dice donde se almacena la data de MySQL, esta directiva es datadir=/var/lib/mysql en este caso el datadir apunta al directorio /var/lib/MySQL, lo que haremos ahora es simplemente mover el directorio /var/lib/MySQL, a /db y luego crearemos un enlace simbólico lo que será suficiente para que la data almacenada por MySQL se escriba en nuestro volumen lógico. Para esto debemos detener el servicio de MySQL previamente.

Nodo 01
[root@node1 /]# service mysqld stop
[root@node1 /]# mkdir /db/mysql
[root@node1 /]# chown -R mysql.mysql /db/mysql
[root@node1 /]# mv /home/mysql/data /db/mysql/data
[root@node1 /]# ln -s /db/mysql/data /home/mysql/data
Nodo 02
[root@node2 /]# service mysql stop
[root@node2 /]# mv /home/mysql/data /tmp
[root@node2 /]# ln -s /db/mysql/data /home/mysql/data

Una vez realizado esto ya estan preparados nuestros dos nodos, por lo que procederemos a iniciar Mysql en el Nodo01.

Configuración de Heartbeat

La configuración de Heartbeat consiste básicamente en 5 pasos que en su mayoría deberán ser ejecutados y realizados de forma idéntica en cada equipo.

• Editar el fichero vi /etc/sysctl.conf de la siguiente forma:

net.ipv4.ip_forward = 1

• Verificar que los servicios necesarios estén ejecutándose

chkconfig –level 2345 heartbeat on
chkconfig –del ldirectord

• Editar el fichero de heartbeat /etc/ha.d/ha.cf de la siguiente forma en AMBOS nodos:

#/etc/ha.d/ha.cf content

debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694 #si hay varios heartbeat es necesario editar el Puerto
bcast eth0 # Linux
auto_failback on #(This will failback to machine1 after it comes back)
ping 10.10.150.100 #(Your gateway IP)
apiauth ipfail gid=haclient uid=hacluster
node machine1.myhost.com
node machine2.myhost.com

• Editar el fichero /etc/ha.d/haresources al igual que el ha.cf idénticos en ambos nodos.

#/etc/ha.d/haresources content
machine1.myhost.com  LVSSyncDaemonSwap::master IPaddr2::10.10.150.3/24/eth0:1 drbddisk::db  Filesystem::/dev/drbd1::/db::ext3 mysqld

• Ahora debemos editar el fichero de seguridad que nos permitirá que el heartbeat se autentifique entre el nodo01 y nodo02 únicamente, también deben ser idénticos en ambos nodos.

#/etc/ha.d/authkeys content
auth 2
2 sha1 YourSecretString

• Para evitar inconvenientes de permisología con le fichero de autenticación es necesario ejecutar el siguiente comando.

chmod 600 /etc/ha.d/authkeys

Herramientas de Diagnóstico

/etc/ha.d/resource.d/LVSSyncDaemonSwap master status

/etc/init.d/heartbeat status

/etc/init.d/mysqld status

The Official Ubuntu Book, Quinta Edición

the-official-ubuntu-book
The-official-ubuntu-book

Ya esta disponible desde Amazon, la quinta edición de The Official Ubuntu Book.

The Official Ubuntu Book cubre en sus 448 páginas gran parte de lo necesario para manejar y conocer esta distribución, una de las más populares actualmente en el mundo Gnu/Linux. Puedes darle un vistazo al contenido del libro en la pagina de Amazon.

También lo podeis descargar libremente desde aqui http://hotfile.com/dl/58845208/26a876a/the.oficcial.ubuntu.book.rar.html

Como instalar Android en un iPhone

El proceso de instalar Android en un iPhone no es sencillo. Requiere seguir una serie de pasos más o menos complejos y algo de conocimiento de lo que se está haciendo y de cómo desbloquear e intervenir el iPhone. Los resultados tampoco ofrecen nada más allá que lo que se puede conseguir con un teléfono Android «de verdad».

De hecho en teoría no debería ser muy cómodo -siquiera posible en algunos aspectos- utilizar Android con normalidad en un iPhone, en parte porque, por ejemplo, los terminales Android tienen en común una serie de botones que se integran con el manejo del sistema operativo -volver, menú, home,…-, y estos no existen físicamente en el iPhone, aunque en este caso el botón de encendido hace las veces de botón «volver», que es el más importante.

La detallada guía publicada en PC World explica cómo hacer el cambio de sistema operativo, paso a paso. Explica además otros problemas casi más importantes. Por ejemplo, dado que Android no tiene capacidad para gestionar el consumo de batería del iPhone -este aspecto requiere el entendimiento total entre el sistema operativo y el teléfono- utilizando Android ésta durará apenas una hora.

Tampoco es posible sincronizar contenidos y el proceso puede terminar con una sucesión de errores temporales o convirtiendo el iPhone en un sofisticado pisapapeles.

Vídeo:

The Linux Command Line – Ebook

The Linux ® Command Line es un libro publicado bajo licencia Creative Commons creado por William E. Shotts, Jr especialmente para aquellos que se están iniciando en el mundo de la línea de comandos Linux.

En sus 522 páginas se cubre el mismo material disponible en LinuxCommand.org pero con mucho más detalle. Además de lo básico de la línea de comandos se enseña el shell scripting y el uso de los programas más comunes de la línea de comandos Linux.

Podéis descargar el libro a través de este Link.

http://sourceforge.net/projects/linuxcommand/files/TLCL/09.12/TLCL-09.12.pdf/download

Web oficial de el libro. http://linuxcommand.org/

GNU Fácil, Manual Ubuntu (Cuarta Edición) Ebook

El libro ‘GNU/Fácil’ la versión cuatro ha sido publicada, una guía completa para introducir a los usuarios nuevos a GNU/Linux y en particular a la distribución más usada del momento GNU/UBUNTU.
Antonio Perpiñan Díaz, reconocido en toda América Latina por sus aportes a la comunidad del Software Libre y por sus reconocidos libros (ya casi una docena), se siente orgulloso de la puesta en circulación digital de la cuarta versión de este libro que viene desarrollándose desde cuando UBUNTU estaba en la versión 5.10. El libro “GNU/Fácil” es una guía completa que debe servir de mucha ayuda para los usuarios nuevos al entorno gráfico de GNOME. Escrito con la intensión de educar y bajo condiciones pedagógicas que se pueden prestar para un primer semestre de nivel básico y medio de la educación formal de jóvenes en los cursos de 6, 7, 8 y los niveles de educación media.

GNU Fácil, Antonio Perpiñan Díaz (Cuarta Edición) Manual Ubuntu
GNU Fácil, Antonio Perpiñan Díaz (Cuarta Edición) Manual Ubuntu

Sin importar si el usuario introduciéndose al sistema operativo GNU/Ubuntu, el libro debe poder asistir para que la introducción sea conducida sin traGNU Facil UBUNTU V4ucida sin trastornos. El instructor que conduce la cátedra no tiene que ser un profesional informático, solo debe ser diestro con una computadora a nivel de usuario avanzado y el manual lo ayudará a completar el programa presentado en el. Este libro, desde sus inicios que solo se concentraba en el escritorio GNOME, y luego pasó a cubrir el sistema completo GNU, incluyendo la parte de mantenimiento Fundamental, Administrativa y de Redes, claro está a los niveles mas introductorio tomando en cuenta la audiencia a la cual el libro está dirigido. El libro de Antonio Perpiñan, persona dedicada a no solo a educar en asuntos informáticos, sino a la cultura general de los sistemas Unix y la cultura ética de los Hackers, el libro puede servir de introducción para los usuarios a los principios, teorías y practicas necesarias para empoderar a los potenciales nuevos usuarios y futuros administradores de sistemas.

http://www.megaupload.com/?d=GO2U91UT