Fent rèpliques de directoris entre servidors amb unison
Una de els tasques importants que vaig barrinant en la part de guifi.net i ComEsFa?org els darrers dies és la construcció del que hauria de ser un protocol d'actuació per tal de donar resposta als diferents tipus de contingències que puguin aparèixer (caigudes de xarxa, que un servidor s'espatlli, que hi hagi una inundació al torrent de l'Esperança, que caigui un llamp i fregeixi alguns servidors i ràdios,... etc).
El primer pas era fer còpies de la base de dades, és un part important perquè inclou la part més important, faltava però mantenir un sincronisme entre diverses màquines del codi (php, imatges, etc..) de tota aquella part A través del blog del mussol Oriol, que està sindicat a ComEsFa?org, he descobert una nova eina que simplifica moltíssim aquesta tasca. És molt senzilla i és la que en faig 5 cèntims en aquestes ratlles.
La meva idea per donar alta disponibilitat a ComEsFa?org s'inspira en el que a la feina coneixem com a "Grid Computing", que bàsicament consisteix en aconseguir que una pila de servidors funcionin com un de sol, repartint-se càrrega i serveis entre ells, on a més en cas de fallida d'un d'ells, els que sobreviuen poden de forma automàtica agafar les funcions del que ha fallat. Aquesta estratègia és doblement interessant en entorns comercials crítics: És una arquitectura tolerant a fallides, i per tant, d'alta disponibilitat, i a més, si es fa el desplegament sobre servidors de baix cost, per exemple basats en Linux, s'aconsegueixen uns nivells de servei que fa uns anys eren inpensables en màquines de gama baixa, i moltes vegades t'estalvien d'haver de gastar molts diners en ferro més car.
Per econòmic que sigui, i encara que òbviament també fem servir Linux als servidors, ni ComEsFa?org és comercial, ni fem servir eines comercials. Es tracta doncs que encara que amb un xic més de complexitat i renunciant a algunes funcionalitats, poder aconseguir resultats suficients per al nivell de disponibilitat que requereix ComEsFa?org, de manera que em pugui estalviar la preocupació de "què passaria si un dia....".
En aquest cas l'objectiu és replicar els directoris entre tres servidors per tal de poder oferir un servei "actiu/passiu", és a dir, que en cas d'avaria llarga en una de les màquines, sense haver de tirar de còpies, una de les altres dues ja estigui totalment preparada per assumir-ne les funcions. L'activa és el bandoler, que fa "clúster" local amb el servidor d'el Serrat, i "clúster geogràfic" (a quilòmetres de distància), amb el servidor de l'Esperança. El diagrama que teniu a la dreta descriu aquesta lògica.
Instal·lació
L'unison permet replicar directoris entre màquines de diversos sistemes operatius, incloent el win d'ous. Si aneu a la pàgina del projecte hi trobareu la secció de "Downloads" on hi han les instruccions per a descarregar-lo.En aquest cas, totes les màquines tenen un "guinux" basat en Fedora, de manera que directament he provat un...
apt-get install unison
...per veure què passava, i efectivament, només amb això qüestió de 15 o 20 segons m'ha deixat l'unison instal·.lat als diferents servidors.
Com fer-lo servir
Molt bé, ja és instal·lat, i ara.. on carai és, com el faig servir?Cerco en les opcions de tots els menús i no l'hi he sapigut veure... no serà que no s'ha afegit a cap llista de programes? Potser... i si teclejem unison des del terminal en la línia de comandes...?
Aviat m'adono doncs que és ben simple de fer servir, i d'una altra ventatja important que ja venia descrita en l'"Overview": És segur sense haver d'obrir ports especials, i d'una altra que també diu però que jo no havia advertit a primera vista i que també és molt important: Funciona en la capa d'usuari, el que li dona encara molta més seguretat.
Quan va via rsh o ssh, i suposant que tenim redencials adequades en el servidor remot, executa la comanda per arrencar en l'altre servidor l'unison. Quan fem servir comunicació via sockets, cal tenir-lo prèviament arrencat amb la comanda:
unison -socket <num_de_socket>
On <num_de_socket> és òbviament el número de socket que farem servir per a la comunicació, i l'hem de tenir funcionant des de l'usuari que té permís per accedir al direcri, és a dir, que no cal sigui root.
En la primera sincronització, trigarà una mica, de fet, el que es triga en fer una còpia sencera. En les successives, ja anira molt més ràpid, ja que només es copiaran els arxius que s'hagin canviat des de la darrera sincronització, possibilitant així la rèplica amb un node distanciat geogràficament, o fins i tot via internet.
Automatitzant la rèplica
Un cop es comprova que tot funciona n'hi ha prou amb automatitzar la tasca el "cron", per exemple cada hora, i ja només amb això qualsevol canvi que es faci, sigui en el servidor que sigui (la copia és bidireccional), s'enviarà al(s) altre(s).Amb això ja és molt més fàcil de tenir "mirrors" per guardar ComEsFa?.org de qualsevol contingència 


