Instal·lar debian a la QNAP TS-110

Hui vaig a reaprofitar la primera nas que em vaig comprar (de sols un disc) i 1TB d’espai. Ara mateix la tenia amb l’última versió del seu firmware amb emule però eixa versió de firmware feia que anara prou lent. Així que revisant ‘per ahí’ m’he trobat amb el cas de Martin Michlmayr, que li ha posat un debian. I jo he pensat… i si ho faig jo també???? Aixina que… ale valent a per ell!!! Bàsicament el que trobareu ací és una traducció del que diu ell, amb algunes modificacions segons la meva experiència.

Primer que res saber que Debian suporta el processador que du la NAS (ARM) i que el que vaig a explicar, segons ell, es pot aplicar a QNAP TS-110, TS-112, TS-112P, TS-119, TS-119P+, TS-119P II, TS-120 or TS-121.

Per a poder instal·lar el debian el que es fa es posar una imatge a la memòria flash per a que arranque al reiniciar i fer la instal·ació per xarxa. Com no tenim monitor de sortida s’utilitzarà el ssh per a la instal·lació. Com he dit… tenim que modificar les dades que hi ha a la flash, així que primer farem un backup del que tenim a la memòria flash de la nas.

Seguint la guia que explica aquesta persona, el primer que fem és connectar una memòria USB a la NAS i per ssh vegem on s’ha muntat, per a això executem el següent codi

mount | grep external
/dev/sdi1 on /share/external/sdi type vfat [...]

i una vegada sabem on s’ha muntat, anem al seu directori i volquem la info de la flash amb CAT

cd /share/external/sdi
cat /dev/mtdblock0 > mtd0
cat /dev/mtdblock1 > mtd1
cat /dev/mtdblock2 > mtd2
cat /dev/mtdblock3 > mtd3
cat /dev/mtdblock4 > mtd4
cat /dev/mtdblock5 > mtd5
cd
umount /share/external/sdi

Aquestos arxius els guardem per si volem tornar arrere (qui sap!)

Ara ja podem baixar les imatges de debian dels seus servidors amb aquestos comandos:

cd /tmp
busybox wget http://ftp.debian.org/debian/dists/stable/main/installer-armel/current/images/kirkwood/network-console/qnap/ts-119/initrd.gz
busybox wget http://ftp.debian.org/debian/dists/stable/main/installer-armel/current/images/kirkwood/network-console/qnap/ts-119/kernel
busybox wget http://ftp.debian.org/debian/dists/stable/main/installer-armel/current/images/kirkwood/network-console/qnap/ts-119/flash-debian
busybox wget http://ftp.debian.org/debian/dists/stable/main/installer-armel/current/images/kirkwood/network-console/qnap/ts-119/model

Aquestos fitxers que s’han baixat són el kernel, l’instal·lador del ramdisk, fitxer amb info del model de QNAP i un script que copia el kernel a la flash (això diu ell, jo sols m’ho crec i au). Be ara ja toca ‘flashejar’ la memòria flash amb la següent instrucció:

sh flash-debian

Tardarà uns minuts (no vos preocupeu) i al final eixirà un missatge que diu que reiniciem la màquina

Updating MAC address...
Your MAC address is 00:08:9B:8C:xx:xx
Writing debian-installer to flash... done.
Please reboot your QNAP device.

I la reiniciem

reboot
exit

A partir d’ací ja comença la instal·lació. Com no es pot connectar la pantalla per a veure el procés d’instal·lació, el que es fa és connectar-se per ssh a la NAS. Per a això el sistema s’ha creat un usuari anomenat installer amb password install amb el qual ingressarem via ssh.
Un altre tema és la IP, si teniem configurada una IP estàtica aquesta es mantindrà, si és per DHCP ens tocarà connectar-nos al server DHCP per a veure quina IP li ha assignat a la seva MAC i finalment si la màquina no sap quina IP tindre es posarà per defecte la 192.168.1.100.

Així que finalment amb la IP que tinga s’accedix per SSH i ja es pot instal·lar el sistema ‘com tota la vida’

Una vegada s’ha instal·lat el primer que he fet és posar-li el server samba, web, ftp, sql, php, pnp, emule, webmin,… i crec que això és tot el que li he posat (el que per a mi és una instal·lació base per a un server polivalent, jeje)

Ah! cal actualitzar el paquet qcontrol que és el que s’encarrega de fer funcionar el ventiladoret, i les llumenetes ja que diuen que la versió que s’instal·la per defecte no es bona, falla. Per a realitzar açò seguim els següents passos:

Afegim a l’arxiu /etc/apt/sources.list la línea:

deb http://ftp.debian.org/debian/ wheezy-backports main

i després fem un:

apt-get update
apt-get install -t wheezy-backports qcontrol

i ja el tindrem actualitzat.

I això és tot xavals!

La web d’on he tret tota la info:

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

 

BACKUP’s (MySQL)

Hui done pas a un tema molt important en el manteniment dels servidors, són les copies de seguretat de les dades en altres servidors.

En aquest post explicaré com fer backups remots de les bd’s d’un servidor MySQL. Per a aquesta tasca recurrim a un script que es pot descarregar des d’ací.  Aquest script anomenat AutoMySQLBackup fa tota la feina automàticament i la seua configuració és molt fàcil, sols editar l’arxiu ja es veuen els comentaris de les opcions que té, nom d’usuari, password, bd’s a fer el backup, carpeta on es fan les còpies,… Per al correcte funcionament d’aquest script cal donar-li permisos d’execució (per exemple un chmod u+rwx) i deixar-lo a la carpeta /etc/cron.daily per a que el sistema faça la feina per nosaltres. Per a fer que funcione aquest script s’instal·larà també el paquet mysql-client i les seues dependències.

Aquest script crea dins de la carpeta on està configurat el backup 3 carpetes, una per a les còpies diaires, una altra per a les setmanals i una altra per als mensuals, en la carpeta diaria s’emmagatzemen fins a 7 còpies després es sobreescriuen, en la carpeta setmanal conserva fins a 5 còpies i en la mensual es sobreescriu mensualment la còpia que es desa.

Finalment, per a que aquest script s’execute en el servidor de backup amb una connexió externa cap al servidor MySQL s’ha de modificar el fitxer de configuració del MySQL que es troba a /etc/mysql/my.cnf i comentar la línia “bind-address = 127.0.0.1” i que l’usuari que s’utilitza per a fer la còpia tinga permisos d’accedir al servidor MySql des de l’exterior

I així ja estarà configurada la còpia de seguretat diariament

Enllaços:

AutoMySQLBackup para copias de seguridad MySQL

Conexion remota a mysql-server