Cluster 2 Nodos con HEARTBEAT Y DRBD

Responder
sysop
Site Admin
Mensajes: 21
Registrado: Jue Ago 01, 2019 4:24 pm

Cluster 2 Nodos con HEARTBEAT Y DRBD

Mensaje por sysop » Vie Ago 02, 2019 10:39 am

Montando un cluster de dos nodos con heartbeat

Introducion

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...)


Instalacion

Código: Seleccionar todo

    Dependiendo de tu distro, desde root y en ambas computadoras.

    [b]#apt-get install heartbeat heartbeat-pils heartbeat-stonith

    #urpmi heartbeat  heartbeat-pils heartbeat-stonith

    #yum heartbeat  heartbeat-pils heartbeat-stonith
    [/b]




ahora abrimos el puerto 1001/udp en nuestro firewall

otra cosa a tener en cuenta es que en ambas maquinas el
nombre del host no debe ser identico


#hostname
clusti1
#
#uname -n
clusti1
#
y en el otro nodo

#hostname
clusti2
#
#uname -n
clusti2
#
#chmod 600 /etc/ha.d/authkeys


Mi /etc/ha.d/ha.cf

Código: Seleccionar todo

keepalive 2                                                                   
deadtime 10                                                                   
hopfudge 1
udpport 1001
udp     eth0
watchdog /dev/watchdog
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     local0
node    clusti1
node    clusti2
Mi /etc/ha.d/haresources

Código: Seleccionar todo

clustiX IPaddr::192.168.1.7 httpd pure-ftpd ircd 
estos ultimos son tus servicios de cluster deven estar instalados en ambas computadoras
y deben ser invocados con el mismo nombre que tiene el demonio en /etc/init.d/

# adduser hacluster

arrancamos el servicio dependiendo de tu systema

# services heartbeat start

#/etc/init.d/heartbeat start

y si todo va bien el ifconfig del nodo activo sera algo como esto

ifconfig en nodo activo cuando el nodo esta operativo

[root@clusti]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:XX:92:0B:XX:XX
inet addr:192.168.1.3 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::21d:92ff:fe0b:1f7f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13748 errors:0 dropped:0 overruns:0 frame:0
TX packets:35580 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6491038 (6.1 MiB) TX bytes:7638421 (7.2 MiB)
Interrupt:23 Base address:0xf200

eth0:0 Link encap:Ethernet HWaddr 00:XX:92:0B:XX:XX
inet addr:192.168.1.7 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:23 Base address:0xf200

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:4888 errors:0 dropped:0 overruns:0 frame:0
TX packets:4888 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:268860 (262.5 KiB) TX bytes:268860 (262.5 KiB)

ahora ya puedes hacer pings a las ip, kitar una computadora, la otra
y hacer pruebas con el cluster.

... y haciendo pruebas: el primer nodo que entre sera el activo
y el ultimo el secundario

http://tuxedlinux.wordpress.com/2007/07 ... -en-linux/
http://www.linuxjournal.com/article/5862?page=0,0


SysOp

sysop
Site Admin
Mensajes: 21
Registrado: Jue Ago 01, 2019 4:24 pm

Cluster 2 Nodos DRBD Segunda parte

Mensaje por sysop » Vie Ago 02, 2019 10:46 am

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/Pasivo

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 kmod-drbd

#apt-get install drdb kmod-drbd

#yum install drdb kmod-drbd

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 reiserfs /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
/etc/init.d/heartbeat 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: 21
Registrado: Jue Ago 01, 2019 4:24 pm

DRBD y O2CB como Activo-Activo

Mensaje por sysop » Vie Ago 02, 2019 10:53 am

Vamos a Activar los dos discos para que podamos escribir entre ellos

Tenemos dos opciones o compilar el kernel o modulos

los modulos son

ocfs2_dlmfs
configfs

del repositorio nos bajamos el programa

#urpmi ocfs2
#apt-get install ocfs2


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

Código: Seleccionar todo

# 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

    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
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

---- Began

En ambos nodos # drbdadm connect clusti

y corro este escript en el nodo que quiero sobrescribir
Código:

#! /bin/bash

echo `date`
drbdadm down clusti
sleep 1
drbdadm invalidate clusti
sleep 1
drbdadm up clusti
sleep 1
drbdadm -- --overwrite-data-of-peer primary clusti
cat /proc/drbd



---- 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

Responder