Cluster para LDAP en Debian

Usando Debian Squeeze y 5 servidores distribuidos de la siguiente manera:

  • 2 máquinas como redirectores, 1 activo y 1 pasivo.
  • 3 máquinas como servidores LDAP.

Inicialmente se instalan los servicios previos en los servidores nodos que contendrán el servicio LDAP, bien sea con OpenLDAP o 389, probé con 389 Directory Server, LDAP mantenido por la comunidad de Fedora.

Los programas que se utilizan sólo para los redirectores tanto activo como pasivo son:

  • Heartbeat, programa principal de clusterización de alta disponibilidad.
  • Ldirector, programa para monitorear el servicio, en este caso LDAP y su respectiva carga de trabajo.

Instalación como root:

aptitude install heartbeat ldirectord

Con esto vendrán unas dependencias que también deben ser instaladas.

Posteriormente, se configuran los servicios, la configuración de Heartbeat se crea el archivo /etc/ha.d/ha.cf y su contenido tendrá algo parecido a lo siguiente:

debugfile /var/log/ha-debug
logfile /var/log/heartbeat.log
logfacility local0
keepalive 3
deadtime 20
warntime 10
initdead 40
auto_failback on
bcast eth0
udpport 694
node servActivo
node servPasivo
crm on
autojoin none

El archivo para Ldirectord ubicado en /etc/ha.d/conf/ldirectord.cf, tendrá algo parecido a lo siguiente:

checktimeout=3
checkinterval=1
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=yes

virtual=192.168.0.10:389
    real=192.168.0.11:389 gate
    real=192.168.0.12:389 gate
    real=192.168.0.13:389 gate
    fallback=127.0.0.1:389 gate
service=ldap
scheduler=wlc
protocol=tcp
checktype=connect

En donde las IP determinan:

  • 192.168.0.10 una dirección virtual.
  • 192.168.0.11 dirección IP del servidor LDAP 1
  • 192.168.0.12 dirección IP del servidor LDAP 2
  • 192.168.0.13 dirección IP del servidor LDAP 3

Se recomienda en todos los servidores tanto redirectores como nodos LDAP, asociar en /etc/hosts las direcciones IP con los nombres de cada servidor, por ejemplo:

127.0.0.1 localhost.domain localhost
192.168.0.8 servActivo.domain servActivo
192.168.0.9 servPasivo.domain servPasivo
192.168.0.10 ldap.domain ldap
192.168.0.11 servLDAP1.domain servLDAP1
192.168.0.12 servLDAP2.domain servLDAP2
192.168.0.13 servLDAP3.domain servLDAP3

Configuración de archivos en los servidores nodos redirectores:

Archivo /etc/init.d/ldirectord, buscamos la línea donde esté la variable “CONFIG_FILE” y le cambiamos su valor dejándola de la siguiente forma:

CONFIG_FILE="${CONFIG_FILE:=/etc/ha.d/conf/ldirectord.cf}"

Archivo /usr/sbin/ldirectord y comentar la línea 1252, quedaría:

# $addr =~ s/^\"([^"]*)\"$/\1/;

Archivo /usr/lib/ocf/resource.d/heartbeat/ldirectord cambiar el valor de la variable “LDIRCONF” con:

LDIRCONF=${OCF_RESKEY_configfile:-/etc/ha.d/conf/ldirectord.cf}

Crear el archivo /etc/ha.d/authkeys con el siguiente contenido:

auth 1
1 crc

Archivo /etc/sysctl.conf buscar la variable “net.ipv4.ip_forward“, si está comentada y con valor “0”, descomentarla y inicializarla con valor 1, guardar los cambios y activarlos:

sysctl -p /etc/sysctl.conf

Configuración de archivos en los servidores nodos LDAP:

Archivo /etc/sysctl.conf agregar la variable “net.ipv4.conf.all.arp_ignore” e iniciarlizarla con valor “1”, posteriormente activarla:

sysctl -p /etc/sysctl.conf

Archivo /etc/network/interfaces y configurar la interfaz virtual “lo:0” asociada con la dirección IP flotante del servicios, quedaría de la siguiente forma:

auto lo:0
iface lo:0 inet static
address 192.168.0.10
netmask 255.255.255.255

Se activa la interfaz.

Una vez realizadas todas las configuraciones en servidores redirectores y nodos LDAP, se procede a relacionar los redirectores en el sistema de cluster, reiniciamos Heartbeat.

invoke-rc.d heartbeat restart

Si todo va bien, automáticamente generará un archivo que se edita de la siguiente forma:

crm configure edit

Es un archivo en tiempo real que se configura en cualquiera de los dos nodos redirectores, por defecto usa editor “vi”, el archivo tendría que tener un contenido parecido al siguiente:

node $id="f04212d4-807a-4101-a422-94db2a531af4" servActivo
node $id="ba50d471-876f-4138-8d8f-ad6c95ae0ce1" servPasivo
primitive ClusterIP ocf:heartbeat:IPaddr \
        params ip="192.168.0.10" cidr_netmask="16" \
        op monitor interval="20s"
primitive lvs ocf:heartbeat:ldirectord \
        op monitor interval="20s"
colocation colocacion inf: ClusterIP lvs
order orden inf: ClusterIP lvs
property $id="cib-bootstrap-options" \
        dc-version="1.0.9-74392a28b7f31d7ddc86689598bd23114f58978b" \
        cluster-infrastructure="Heartbeat" \
        stonith-enabled="false"

Importante; Las dos primeras líneas son únicas para cada equipo y sistema de cluster, depende de la máquina, a partir de la tercera línea en adelante pueden ser iguales a las del ejemplo.

Una vez cambiado el contenido se guarda y se cierra, se puede hacer un restart de los servicios heartbeat y ldirectord, luego corroborar que las consultas funcionen correctamente así como también el balanceo se realiza.

Visualizar balanceo en cualquier nodo redirector:

ipvsadm -L

Debería aparecer algo parecido:

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port     Forward Weight ActiveConn InActConn
TCP  192.168.0.10:ldap wlc
  -> servLDAP1.domain:ldap  Route   1      0          1       
  -> servLDAP2.domain:ldap  Route   1      0          0       
  -> servLDAP3.domain:ldap  Route   1      0          0

Un estatus del cluster:

crm status

Debería aparecer algo parecido:

============
Last updated: Wed Jun 13 14:15:56 2012
Stack: Heartbeat
Current DC: servActivo (fa50d471-876f-4138-8d8f-ad6c95ae0ce4) - partition with quorum
Version: 1.0.9-74392a28b7f31d7ddc86689598bd23114f58978b
2 Nodes configured, unknown expected votes
2 Resources configured.
============

Online: [ servActivo servPasivo ]

 ClusterIP(ocf::heartbeat:IPaddr):        Started servActivo
 lvs  (ocf::heartbeat:ldirectord):    Started servActivo

Realizar una consulta desde una estación cliente dentro de la red:

ldapsearch -x -h ldap.domain uid=sateliteguayana uid -b dc=sateliteguayana,dc=com,dc=ve
Advertisements
This entry was posted in Debian, LDAP. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s