Clusty dos nodos DRBD ocfs2

Responder
sysop
Site Admin
Mensajes: 18
Registrado: Mié Nov 26, 2025 10:42 pm

Clusty dos nodos DRBD ocfs2

Mensaje por sysop »

Por cluster normalmete se hace referencia a un grupo de computadoras conectadas juntas
para obtener mayor potencia. Ej. mas MIPS (millones de instrucciones por segundo)
puede ser para datos o para obtener (HA) una alta disponibilidad

Las Super computadoras son costosas, Beowulf es un proyecto de construir cluster
con "off-the-shelf" hardware (e.g., Pentium PCs) corriendo linux.

En este cluster cuando nodo 0 (el server primario) tiene un fallo y se cae,
el nodo 1 toma el control de todos los servicios de nodo 0 empezando por el mismo
alias de ip (192.168.1.7) y toda su subsecuencia de servicios. De echo los servicios
deven co-existir entre nodo 0 y nodo 1 (FTP, HTTPD, IRCD...)
Como montar un cluster rebundnante de datos, de alta avialibilidad (HA)
con DRBD y heartbeat

- con esto conseguiremos que los datos esten duplicados en ambas makinas, pero solo uno sera activo
por eso se llama Activo/Pasi

Código: Seleccionar todo

                                  /-- 192.168.1.3  (HD-DRBD) <---\
192.168.1.7. (HA-DATA) NIC ---< |   
                                  \---- 192.168.1.5  (HD-DRBD) <---/   

Para ello necesitamos dos particiones o discos duros
con el mismo tamaño en ambas computadoras del cluster


Instalacion

#urpmi drdb-utils

#apt-get install drbd-utils

#yum install drdb drbd-utils

El modulo es opcional de otra forma tenemos que compilar el kernel


el fichero de configuracion /etc/drbd.conf
debe ser identico en ambas computadoras

Código: Seleccionar todo

resource clusti {                                           

  protocol C;

  handlers {
             
    pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";                                                 
    pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";                                                 

  }

  startup {
        degr-wfc-timeout 60;    # 1 minutes.

  }

  disk {
    on-io-error   detach;
    #size 80G;           
  }                     

  net {
     timeout       60;    #  6 seconds  (unit = 0.1 seconds)
     connect-int   10;    # 10 seconds  (unit = 1 second)   
     ping-int      10;    # 10 seconds  (unit = 1 second)   
     ping-timeout   5;    # 500 ms (unit = 0.1 seconds)     
     max-buffers     2048;                                   
     max-epoch-size  2048;                                         
     ko-count 20;                                             
     cram-hmac-alg "sha1";                                               
     shared-secret "ClusterFanFactory";                                   
  }                                                                           

  syncer {
                                                             
    # Note that on 100Mbit ethernet, you cannot expect more than     
    # 12.5 MByte total transfer rate.                               
    # Consider using GigaBit Ethernet.                               
    #                                                               
    rate 100M;                                                       
    al-extents 257;                                                 

  }

on clusti1.belchi.org {
    disk /dev/sdb1; device /dev/drbd0; meta-disk internal;
    address 192.168.1.3:7790;
  }


on clusti2.belchi.org {
    disk /dev/sdb1; device /dev/drbd0; meta-disk internal;
    address 192.168.1.5:7790;
    }

}

Tenemos que abrir en nuestro firewall los puertos 7790 udp y tcp


con la particion desmontada la limpiamos

# dd if=/dev/zero of=/dev/sdb1 bs=1M count=50


creamos el dispositivo

# drbdadm create-md clusti

levantamos el servicio en las dos computadoras

#/etc/init.d/drbd start

con estas ordenes podemos ver en todo momento el estado del drbd

#cat /proc/drbd
#/etc/init.d/drbd status


Código: Seleccionar todo
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r----
ns:0 nr:3262752 dw:3262720 dr:0 al:0 bm:199 lo:2 pe:16674 ua:1 ap:0 ep:1 wo:b oos:28193564
[=>..................] sync'ed: 10.4% (27532/30716)M queue_delay: 18.5 ms
finish: 0:37:02 speed: 12,660 (5,456) want: 40,960 K/sec
(syncronizando)




le decimos que nuestro server en el que estamos trabajando es el primario

#drbdadm primary clusti

y formateamos el disco en el caso que no tenga datos

mkresiserfs -l clusdrb /dev/drbd0

en el caso de tener datos en un disco en el computador que tenga los datos debmos ejecutar

#drdbadm -- --overwrite-data-of-peer primary clusti

creamos el directorio replydata para montar el disco compartido

mkdir /replydata



MODIFICACION DE HEARTBEAT

en /etc/ha.d/hardresources tomara los servicios de /etc/ha.d/resorce.d
por lo que tendremos que hacer unas modificaciones x ej. soft-links

#cd /etc/ha.d/resorce.d
#ln -sf /etc/init.d/httpd ./httpd
#ln -sf /etc/init.d/ircd ./ircd
#ln -sf /etc/init.d/pure-ftpd ./pure-ftpd



y con este sencillo script montamos los discos cuando toma el control
fichero /etc/ha.d/resorce.d/mountd

Código: Seleccionar todo

#!/bin/bash

RETVAL=0

start() {
drbdadm primary clusti
mount -t ocfs2 /dev/drbd0 /replydata

}

stop() {

sleep 1

}


}

case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo $"Usage: $0 {start|stop}"
RETVAL=1
esac

exit $RETVAL

con lo que /etc/ha.d/haresources queda asi

clustiX.belchi.org IPaddr::192.168.1.7 mountd httpd pure-ftpd ircd

y ya podemos ponener nuestro cluster en marcha

/etc/init.d/drbd restart


http://www.linuxjournal.com/article/9074?page=0,0
http://systemadmin.es/2011/04/cluster-c ... -pacemaker
http://www.sherin.co.in/drbd-heartbeat- ... y-cluster/

SysOp
sysop
Site Admin
Mensajes: 18
Registrado: Mié Nov 26, 2025 10:42 pm

clusty activo en las dos computadoras

Mensaje por sysop »

Tenemos dos opciones o compilar el kernel o modulos

los modulos son

ocfs2-tools


del repositorio nos bajamos el programa

#urpmi ocfs2-tools
#apt-get install ocfs2-tools


añadir al fichero: /etc/drbd.conf

Código: Seleccionar todo


startup
  {
    become-primary-on both;
  }
  net
  {
    allow-two-primaries;

  }

añadir al fichero: /etc/fstab



[code]# Necesario para ocfs2
none         /config         configfs        defaults                0 0
none         /dlm            ocfs2_dlmfs     defaults                0 0

# Nuesto dispositivo DRBD
/dev/drbd0              /repydisk            ocfs2           noauto        0 0
crearlo y montarlo

#mkdir /config && mount /config
#mkdir /dlm && mount /dlm


el fichero de configuracion /etc/ocfs2/cluster.conf

Código: Seleccionar todo

Código: Seleccionar todo

    node:
            ip_port = 7793
            ip_address = 192.168.1.3
            number = 0
            name = clusti1.belchi.org
            cluster = o2cb

    node:
            ip_port = 7793
            ip_address = 192.168.1.5
            number = 1
            name = clusti2.belchi.org
            cluster = o2cb

    cluster:
            node_count = 2
            name = o2cb
[/code]
tenemos que abrir en nuestro firewall los puertos 7793 udp y tcp


con la particion desmontada la limpiamos

# dd if=/dev/zero of=/dev/sdb1 bs=1M count=50


creamos el dispositivo

# drbdadm create-md clusti
# drbdadm up clusti

syncronizamos los nodos

#drbdadm -- --overwrite-data-of-peer primary clusty

iniciamos los demonios

#/etc/init.d/drbd restart
#/etc/init.d/ocfs2 restart
#/etc/init.d/o2cb restart
#/etc/init.d/o2cb configure

vemos si va bien

#/etc/init.d/o2cb staus
#cat /proc/drbd

y si todo va bien formateamos

mkfs.ocfs2 -N 2 -L clusti /dev/drbd0


#cat /proc/drbd

Código: Seleccionar todo

version: 8.3.7 (api:88/proto:86-92)
built-in

1: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r----
ns:0 nr:0 dw:0 dr:408 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0


montamos los discos
#mount /dev/drbd0
y vemos que podemos escribir entre ellos

Y si es asi añadimos los servicios al arranque y reiniciamos
primero 1 despues el otro


y para syncronizar bien esto o el brial split

En ambos nodos # drbdadm connect clusti

si no funciona el siguiente tem va del syncronizar


---- End
y creo que va a la primera

Enlaces:
http://en.gentoo-wiki.com/wiki/Active-a ... with_OCFS2
http://www.drbd.org/users-guide/ch-ocfs2.html
http://www.drbd.org/users-guide-emb/ch-configure.html
http://www.drbd.org/users-guide/s-enabl ... imary.html
http://linux.dell.com/wiki/index.php/Se ... filesystem

SysOP
sysop
Site Admin
Mensajes: 18
Registrado: Mié Nov 26, 2025 10:42 pm

Re: Clusty brian split

Mensaje por sysop »

A veces ocurre que salta el brian split y debemos sincronizar un disco con datos muy antiguos,
por ejemplo si hemos parado mucho tiempo la computadora o hemos puesto o borrado muchos
datos

si esto ocurre este programa no falla si acaso ejecutar dos veces


Código: Seleccionar todo

#! /bin/bash 
killall sbbs 
sleep 1 
umount /Reply 
echo `date` 
drbdadm down clusty 
sleep 1 
drbdadm secondary clusty
sleep 1 
drbdadm invalidate clusty
sleep 1 
drbdadm outdate clusty
sleep 1 
drbdadm up clusty
sleep 1 
drbdadm connect clusty 
sleep 1 
drbdadm up clusty
sleep 1 
cat /proc/drbd 
echo el otro lado 

y en el fresco si no sicroniza por que no esta conectado

drbdadm connect all

sysop
Responder