Configurant el MySQL al DRBD

Ara que ja tenim el servidor redundant (però redundant del tot eh! jaja), anem a donar-li alguna utilitat, perquè per ara està configurat per a que monitoritze el HeartBeat al Apache, però este no està configurat per a que siga redundant, simplement està per a saber quan està o no en marxa.

Instal·lació i configuració del servidor MySQL
Anem a instalar el MySQL i configurar-lo per a que siga redundant, és molt fàcil. Primer que res s’instal·la el servidor MySQL als dos servidors i es configura com si foren independents (al final la configuració que valdrà serà la del servidor 1)
root@pc:/# apt-get install mysql-server mysql-common mysql-client

Aixina amb el client podem provar que està en marxa quan s’acabe la instal·lació:
root@pc:/# mysql -u root -p

I si tot va be ja estarem en la línia de comandament del servidor MySQL. Després d’aquesta comprovació (que s’ha de fer precís i així sabem que com a mínim fins a ací arriba be) es configura la redundancia de les dades al servidor 1, així que tot el que s’explica a continuació fa referència al servidor 1.
Parem el servici:
root@pc:/# mysqladmin -p shutdown

I ara anem a moure els fitxers de configuració i de la base de dades a la partició del DRBD. Ací explique com fer-ho sensefer backups dels fitxers però és recomanable que abans de moure cap arxiu també es faja un backup d’aquestos ‘per si les mosques’, quedeu avisats!
Primer creem una carpeta per a tenir-ho tot ben estructurat en la partició del DRBD:
root@pc:/# mkdir /mnt/mysql

Migrem la carpeta de configuració a aquesta carpeta i fem un enllaç simbolic que reemplaça la carpeta anterior:
root@pc:/# mv -f /etc/mysql /mnt/mysql/conf
root@pc:/# ln -s /mnt/mysql/conf /etc/mysql

Ara es mou la carpeta on es troben les db’s:
root@pc:/# mv -f /var/lib/mysql /mnt/mysql/data
root@pc:/# chown mysql:mysql /mnt/mysql/data
<– Per a que funcione correctament el MySQL aquesta carpeta tindrà com a owner l’usuari que utilitze mysqld (per defecte mysql).

I es modifica l’axiu de configuració per a indicar la nova ruta, així que s’edita el my.cnf que es troba al /etc/mysql, modificant el paràmetre datadir:
datadir = /mnt/mysql/data

Finalmente posem en marxa una altra vegada el servici de mysql
root@pc:/# /etc/init.d/mysql start

Si ha arrancat el servici comprobem que es pot accedir correctament
root@pc:/# mysql -u root -p

I funciona, a que si? Be ací he supost que l’usuari per a accedir al servidor de dades és el root i que necessita password. També s’havera pogut configurar la carpeta de bd’s com la de configuració, és a dir, mitjançant enllaços simbòlics però crec que aixina està tot més controlat.
Ara que ja està configurat l’apartat del MySQL al servidor 1 passem al servidor 2, que és més senzill. S’elimina la carpeta de configuració (recordeu que recomane fer primer un backup) i després es crea l’enllaç simbòlic a la carpeta de la partició DRBD:
root@pc:/# mysqladmin -p shutdown <– Parem el servici
root@pc:/# rm -fr /etc/mysql
root@pc:/# ln -s /mnt/mysql/conf /etc/mysql

Per a fer la prova de l’ou ara forcem el HeartBeat per a que el servidor 2 es pose en marxa i una vegada fet això tornem a posar en marxa el servici del MySQL i comprovem que es pot entrar, no fa falta que torne a escriure les ordres perquè ja està abans.
Funciona? Espere que si, a mi si que m’ha funcionat.

Configuració del HeartBeat
Tot el que es configura es farà tant en el servidor 1 com en el servidor 2. Ara passem a configurar el HeartBeat per a que monitoritze i pose en marxa el MySQL automàticament. Creem l’arxiu (si no està creat ja) /etc/ha.d/resource.d/mysql.resource amb el següent contingut:

#!/bin/bash
#
#This script is inteded to be used as resource script by heartbeat
#
#Mar 2006 by Monty Taylor
#
###
. /etc/ha.d/shellfuncs
case "$1" in
start)
res=`/etc/init.d/mysql start`
ret=$?
ha_log $res
exit $ret
;;
stop)
res=`/etc/init.d/mysql stop`
ret=$?
ha_log $res
exit $ret
;;
status)
if [[ `ps -ef | grep '[m]ysqld'` > 1 ]] ; then
echo "running"
else
echo "stopped"
fi
;;
*)
echo "Usage: mysql {start|stop|status}"
exit 1
;;
esac
exit 0

Que serà el script encarregat de posar en marxa i parar el servici de MySQL quan canvie de servidor (si està mal escrit en la referència que pose més avall es pot aconseguir)

Per a finalitzar la configuració del HeartBeat modifiquem l’arxiu /etc/ha.d/haresources afegint mysql al final de la línia, tenint en compte que aquesta instal·lació s’ha fet als servidors que hem configurat en el post anterior, l’arxiu quedaria així:
server1 drbddisk::r0 Filesystem::/dev/drbd1::/servidor::ext3 IPaddr2::10.7.250.10/16/eth0 apache2 mysql

Es reinicia el servei de HeartBeat als dos servidors…. i a rodar!!! Ja es pot fer les proves per a comprovar

Webs d’interés
==============
http://downloads.mysql.com/docs/mysql-ha-drbd-en.pdf

 

Telefonia IP: Al 50%

Ja he acabat de configurar la part de la casa de ma tia (edifici 1) i funciona tot correctament, el problema que tenia amb la resol·lució de la IP del terminal darrere de NAT se’n ha anat amb la configuració del servidor STUN. El protocol STUN (Session Traversal Utilities for NAT) és el encarregat de resoldre la IP externa, com el terminal estava darrere de NAT, hi havia problemes a l’hora de comunicar-se amb ell, encara que des del terminal si que es podia cridar a l’exterior (ja comentat en un post anterior) i aquesta ha sigut la sol·lució: Muntar un servidor STUN a la PBX per a que resolga la direcció IP externa del terminal (parlat ja en aquest post). Però el problema és que no es podía executar en background en windows, he estat googlejant prou per a poder fer un servici d’aquest programa però no he pogut treure rés de trellat i senzill, així que he canviat de pensar… i si en compte de intentar executar com a servici busque la forma d’executar qualsevol programa en background? i googlejant més m’he trobat amb la sol·lució, un script en visual basic ben senzillet, el qual he posat per a que s’executi al principi d’iniciar sessió i ja està. Aquest script té el següent codi:

dim shell
set shell=createobject("wscript.shell")
shell.run "stun.bat" ,0
set shell=nothing

on stun.bat és el bat que executa el programa amb les opcions, jo ja tinc preparat un rar amb els tres arxius necessaris per a fer un servidor STUN en windows, els tres arxius són el script, el bat (s’ha de modificar el bat i escriure la ip de la màquina on s’instal·la) i l’executable. El password és 123456

Continuant en el tema del post… una vegada ja en marxa he comprovat que el programa estava executant-se correctament amb el Winstun i li he obert el port (per defecte el 3478 UDP) al tallafocs i “arreando!”. Després al terminal li he configurat el servidor STUN, l’he reiniciat i ja accepta les cridades, faig unes proves… cride des del meu mòbil a casa i si que sona el terminal, parle… tot correcte, perfecte! Ja tinc configurada aquesta part.

He estat estat mirant informació ‘per ahí’ i crec que em faré amb un altre SPA3102 per a l’asterisk perquè les targetes que he comprat en X100P.com tenen massa feina per a que es detecten, estic vegent que l’asterisk és prou ‘caprixós’ a l’hora de detectar aquest tipus de targeta, per temes de IRQ, etc, etc. Per ara el pròxim pas és el de connectar les 2 centrals, després ja vorem