Servidores de alta disponibilidad: DRBD

Continuando con el tutorial de servidores de alta disponibilidad, a continuación expondré como configuré la partición en red en el sistema Heartbeat. Antes de continuar si no lo has hecho ya deberías configurar Heartbeat. Continuaremos usando la misma nomenclatura en los servidores.

El primer paso va a ser instalar DRBD en las 2 máquinas:

apt-get install drbd0.7-module-source drbd0.7-utils

Con module assistant compilamos el módulo DRBD en Debian:

module-assistant prepare
m-a auto-install drbd0.7-module-source

En /etc/drbd.conf configuramos las particiones que van a estar sincronizadas en los dos servidores, este fichero debe ser idéntico en las dos máquinas:

resource data {
 
  protocol C;
 
  startup {
    degr-wfc-timeout 120;    # 2 minutes.
  }
 
  disk {
    on-io-error   detach;
  }
 
  net {
  }
 
  syncer {
    rate 10M;
    group 1;
    al-extents 257;
  }
 
  on asteriskPBX {
    device     /dev/drbd0;
    disk       /dev/hdc6;
    address    192.168.1.8:7788;
    meta-disk  internal;
  }
 
  on asteriskPBX2 {
    device    /dev/drbd0;
    disk      /dev/hda10;
    address   192.168.1.7:7788;
    meta-disk internal;
  }

Después de configurarlo en la primera lo copiamos a la segunda:

scp /etc/drbd.conf root@asteriskPBX2:/etc/

Reiniciamos ambas máquinas, y la primera que arranque nos pedirá si queremos que actúe como principal y le respondemos que sí.

Cuando el DRBD de las 2 máquinas esté conectado esto lo podemos ver en /proc/drbd:

cat /proc/drbd 
 
version: 0.7.21 (api:79/proto:74)
SVN Revision: 2326 build by root@asteriskPBX, 2007-12-21 09:05:16
 0: cs:Connected st:Primary/Secondary ld:Consistent
    ns:82970 nr:612 dw:83582 dr:17714 al:0 bm:103 lo:0 pe:0 ua:0 ap:0

Pasamos a sincronizar los discos, usamos el parámetro --do-what-I-say para no perder los datos la primera vez que sincronicemos ya que forzamos el primario a sincronizarse con el secundario y este hace lo mismo a la inversa con lo cual perderíamos los datos.

drbdsetup /dev/drbd0 primary --do-what-I-say

En el servidor principal creamos un directorio como punto de montaje y montamos el sistema de ficheros:

mkdir /data
mount /dev/drbd0 /data

Le copiamos los datos que queramos tener en ambas máquinas (podemos copiar directorios y crear enlaces simbólicos), y procedemos a desmontarlo y lo dejaremos como secundario:

umount /data
drbdsetup /dev/drbd0 secondary

Ahora nos vamos al servidor "espejo" y procedemos a crear un punto de montaje y comprobamos que el contenido es el mismo que en el servidor principal, aprovechamos para crear enlaces simbólicos si es necesario:

mkdir /data
mount /dev/drbd0 /data

Hechas las comprobaciones desmontamos el disco y lo dejamos ya en secundario:

umount /data
drbdsetup /dev/drbd0 secondary

Nos volvemos al servidor principal, lo dejamos como primario y montamos el disco :

drbdsetup /dev/drbd0 primary
mount /dev/drbd0 /data

Ahora procederemos a integrar DRBD en Heartbeat, la partición que está sincronizada solo puede estar montada en uno de los dos servidores a la vez para ello Heartbeat tiene que indicarle a DRBD cual de los dos nodos es el que esta activo, para ello vamos a nuestro fichero /etc/ha.d/haresources y modificamos la linea para añadir el servicio drbd (esto en las dos máquinas y en una sola línea):

asteriskPBX drbddisk::data Filesystem::/dev/drbd0::/data::ext3 
IPaddr2::192.168.1.10/24/eth0 apache2 mysql

Reiniciamos Heartbeat en ambas máquinas y listo:

sudo /etc/init.d/heartbeat restart

Esto ha sido todo. Smile