Comment mettre en place une synchronisation bidirectionnelle (mirroring) entre 2 NAS Synology avec le logiciel Unison

Quand on tient une agence web il arrive que l’on enfile un déguisement de Sys Admin, bien qu’on soit loin d’en avoir les compétences. J’ai été récemment amené à devoir mettre en place un système de synchronisation entre un NAS DS411J et un DS413J de chez Synology. Le problème était simple : le cabinet d’avocats BRT dispose d’un serveur NAS situé à La Rochelle sur lequel travaillent ses employés. Le cabinet a récemment ouvert des bureaux à Paris et les associés parisiens avaient besoins de travailler sur les documents situés à La Rochelle. Dans un premier temps, j’ai testé une solution avec OpenVPN, mais le débit de la connexion rochelaise étant tellement bas (864Kb/s en upload), que les personnes situées à Paris souffraient le martyr quotidiennement …

J’ai donc envisagé la possibilité de mettre en place un système de synchronisation entre les 2 NAS. Je me suis d’abord penché vers Rsync et Rdiff-backup, mais il ne font que des synchronisations unidirectionnelles, ce qui rend ces solutions inadaptés. Puis je suis tombé sur Unison, qui lui permet des synchronisations bidirectionnelle et donc de miroiter des dossiers. Je vais donc vous expliquer les petites manipulations à faire pour mettre en place Unison sur un DS411J et un DS413J.

IPKG et Bootstrap

La 1ere étape consiste à installer IPKG. Pour cela il vous faut connaitre l’architecture de votre serveur Synology. Vous pouvez vous rendre sur la page « What kind of CPU does my NAS have » ou sur la page « Overview on modifying the Synology Server, bootstrap, ipkg etc ».

Dans mon cas j’avais :

Un DS413J situé à Paris :

- Architecture : Marvell Kirkwood mv6282

- Bootstrap : http://wizjos.endofinternet.net/synology/archief/syno-mvkw-bootstrap_1.2-7_arm-ds111.xsh

- Sources : http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/

Un DS411J situé à La Rochelle :

- Architecture : Marvell Kirkwood mv6281

- Bootstrap : http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/syno-mvkw-bootstrap_1.2-7_arm.xsh

- Sources : http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/

Donc pour installer IPKG :

wget http://url_du_boostrap.xsh
sh url_du_boostrap.xsh

Rien de bien compliqué. Il faudra penser à mettre à jour les sources dans : /opt/etc/ipkg.conf

Il se peut cependant qu’IPKG soit déjà installé et que vous ayez le message suivant :

Backup your configuration settings, then type:
  rm -rf /volume1/@optware
  rm -rf /usr/lib/ipkg
This will remove all existing optware packages.

You must *reboot* and then restart the bootstrap script.

Si c’est le cas suivez les instructions, et relancez bootstrap.sh

Il se peut aussi que vous ayez l’erreur suivante :

ash: ipkg: not found

A ce moment là il faut monter le repertoire @optware au boot :

vi /etc/rc.local
#!/bin/sh
mount -o bind /volume1/@optware /opt
[ -x /etc/rc.optware ] && /etc/rc.optware start
exit 0

et mettre à jour les variables d’environnement en ajoutant /opt/bin:/opt/sbin: :

vi /root/.profile
PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:…..

(sources : IPKG Not Found)

IPKG devrait maintenant être fonctionnel.

Clés SSH

Bien entendu, Unison va avoir besoin de se connecter en SSH.

vi /etc/ssh/sshd_config

On autorise les connexions par jeux de clés en dé-commentant les lignes correspondantes :

#RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

On crée le fichier authorized-keys :

cd /root/.ssh
touch authorized_keys

Puis sur le serveur client (dans mon cas le serveur client était de DS413J situé à Paris qui lançait la synchro) :

ssh-keygen -t rsa

Entrée, Entrée, Entrée … (surtout pas de passphrase !).

Enfin, on copie comme on peut le contenu de .ssh/id_rsa.pub dans le fichier authorized_keys du serveur, les SYNOLOGY ne supportant pas ssh-copy-id … (no comments)

Compilation & Installation d’Unison

Il va donc falloir compiler Unison.

On commence par installer le paquet ocaml (Unison étant écrit dans ce langage) et les outils de compilation :

ipkg install ocaml make gcc textutils

On règle le problème des liens pour la bibliothèque libpthread ;

rm /opt/arm-none-linux-gnueabi/lib/libpthread.so.0
ln -s /lib/libpthread.so.0 /opt/arm-none-linux-gnueabi/lib/

On récupère la dernière version d’Unison :

wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.40.102.tar.gz

On décomrpesse

tar zxvf unison-2.40.102.tar.gz

On se place dans le répertoire :

cd unison-2.40.102

On compile :

make UISTYLE=text NATIVE=false

Une fois la compilation terminée on déplace le dossier unison dans /opt/bin :

cp unison /opt/bin

Petites vérifications :

unison -version
unison -selftest

Sources : How to compile Unison for a Synology DS212+

Il faut évidement faire la même chose pour les 2 serveurs qui doivent avoir la même version d’Unison.

Mise en place d’Unison

Test d’Unison

On se loggue du coté client (Paris dans mon cas), et on va essayer de synchro le dossier Partage

unison /volume1/Partage ssh://nas.mon-domaine.com//volume1/Partage

Là, normalement on a une belle erreur :

ash: unison: not found

Il faut créer un lien symbolique dans /usr/bin/unison pointant vers /opt/bin/unison sur le serveur NAS distant (dans mon cas le DS411J situé à La Rochelle) (sources : Link Unison):

ln -s /opt/bin/unison /usr/bin/unison

Si on retourne sur le serveur « client » et que l’on relance unison avec la commande précédente, ça devrait passer sans soucis :)

Création d’un profil Unison

Unison permet la création de profils, ce qui est vraiment super pratique.

vi ~/.unison/SynchroLRParis.prf
# Répertoires Root pour la synchronisation
root = /volume1/Partage
root = ssh://root@nas.mon-domaine.com//volume1/Partage

# Chemins à synchroniser #path = clients #path = dossiers
# Si l'on souhaite exclure certains répertoires/fichiers #ignore = Path compta ## exclu /volume1/Partage/compta #ignore = Path compta/* ## exclu /volume1/Partage/compta/* #ignore = Path */compta ## exclu /volume1/Partage/*/compta #ignore = Name *compta ## exclu tous les fichiers/répertoires terminant par compta #ignore = Name stats* ## exclu tous les fichiers/répertoires commençant par compta #ignore = Name *.csv ## exclu tous les fichiers ayant l'extension .csv
# Acceptation automatique pour les fichiers non conflcituels auto=true
# Ne posera aucune question batch=true
# Si le dossier distant est vide, alors on demandera une confirmation # pour préserver les fichiers. confirmbigdel=true
# Vérification rapide basée sur la date de modification # du fichier et la taille, au lieu de comparer le contenu fastcheck=true
# On garde les attributs des groupes group=true
# On garde les attributs des propriétaires owner=true
# On résous les conflits en préférant les nouveaux prefer=newer
# On affiche rien à part les messages d'erreurs silent=true
# On synchronise les dates de modifications times=true
# On active les logs et chemin (par défaut unison.log dans home) log=true logfile=synchro.log

Sources : Manuel et Setting Up Unison File Synchronization Between Two Servers On Debian Squeeze

Pour lancer le profil il suffira de faire :

unison -batch -ui text SynchroLRParis

Crée une tache cron pour Unison

Enfin il suffit tout simplement de lancer notre profil Unison via une tache cron. Sur un NAS Synology :

vi /etc/crontab
*/1 * * * * unison -batch -ui text SynchroLRParis &> /dev/null

Le problème c’est qu’à chaque reboot, le fichier crontab est éffacé. Pour rendre le cron persistant, il faudra aussi inscrire la règle dans : /etc.defaults/crontab

/usr/syno/etc.defaults/rc.d/S04crond.sh stop
/usr/syno/etc.defaults/rc.d/S04crond.sh start

Conclusion

J’ai fait des tests et la solution fait bien son travail. Ensuite je l’ai lancé sur un répertoire de travail qui contient 193Go de documents en tous genre (.doc, .pdf essentiellement) qui se comptent par dizaine de milliers. Cela fait plus de 24h que la 1ere synchro est lancée et pour l’instant aucun fichier n’a été copié. Pourtant le PID tourne bien sur le serveur distant et s’accapare même la quasi totalité de la mémoire du DS411J … Je ferai donc un update sur cet article à l’issue de la première synchro, qui va bien durer … 1 mois …

Je viens d’acquérir récemment une paire d’enceinte de monitoring de la marque Mackie à savoir les MR8 MK2 et je voulais vous faire mon petit retour dessus.

Cela faisait déjà un moment que je me baladai avec une paire d’enceintes pourries (des LOGITECH LS-21, de vraies mer** …) car j’avais du mettre au grenier mes vieille Pioneer avec leur ampli qui prenaient trop de place, pourtant c’était de la super cam achetées dans les années 80. Je m’étais fixé pour objectif d’économiser et de me résoudre à acheter des enceintes actives de qualité. J’ai donc survécu un moment tant bien que mal, mais il y a à peu près un mois j’ai craqué en écoutant un morceau de Chopin interprété par Rubinstein qui était complétement massacré par les Logitech.

En plein craquage je me suis rué sur le site d’Audiofanzine pour voir les Awards de l’année dernière sur les enceintes actives et je suis tombé sur leur article « La MR, qu’on voit danser … ». A la fin de l’article Audiofanzine m’avait convaincu et je me suis rué sur le site de HomeStudio.fr pour m’en acheter une paire (250€ l’unité quand même …). Livré quelque jours plus tard sans encombres, je les installes, les branche direct en RCA sur la carte son pourrie de ma carte mère (une ASUS M4N82 Deluxe) et voila ce que ça donne une fois en place :

 

Le design des enceintes est franchement réussi et très moderne. Au niveau de l’encombrement elles prennent pas mal de place (l’écran que vous voyez sur la photo est un 22 pouces large). Maintenant en place et après avoir réglé le volume au dos des enceintes il me restait à les tester.

En me baladant sur le site de paroles de chansons Golyr.fr je me suis rendu compte que j’avais des interférences avec ma carte son et que lorsque je scrollais sur un site web j’avais des sortes de « bip » assez faibles (il faudra que je me prenne une vraie carte son un jour). Bref un petit parasitage mais qui ne gène pas trop lors de l’écoute.

Je me suis mis ensuite à la recherche de sons d’une qualité suffisamment convenable pour pouvoir tester la qualité du rendu.

Charles Mingus – Goodbye Pork Pie Hat (mp3, 255Kb) : même si c’est du mp3 le son est complètement DINGUE ! J’ai même découvert que Mingus faisait du tremollo à 2:43 derrière le sax …. >..<

Jay-Z – The Ruler’s Back (Instrumental) (mp3, 192Kb) : je n’aime pas spécialement l’artiste, mais là le track donne un super bon aperçu de ce dont ces enceintes sont capables. Malheureusement c’est encore et toujours du mp3 pourri …

INTRO – Galaxy of Nowhere – Mondkopf (CD) : hallucinant … je me rend alors compte de la perte car j’ai cet album enregistré au format OGG et la perte est assez conséquente … En tout cas on s’en compte avec ces enceintes, il n’y a pas photo. J’ai choisi l’intro car on entend de multiple sons (voix d’enfants, etc.) ce qui permet de se faire une bonne idée.

CONCLUSION : je ne regrette pas une minute mon achat. Elles valent largement leurs 500€. En fait j’ai tout simplement découvert un nouveau monde que je ne soupçonnait même pas avec ces enceintes. Par contre elles m’ont fait prendre conscience que le mp3 c’est vraiment de la merde en boite … Il me reste plus qu’à retrouver mes 40 000 morceaux de musique au format WAV ce qui risque de m’occuper pour les 10 prochaines années …

 

 

 

Aujourd’hui je vais vous parler d’un analyseur de logs d’Apache à savoir Goaccess. Goaccess est un analyseur de logs en ligne de commande qui s’installe simplement sous Debian en faisant un petit :

user@computer:$ apt-get install goaccess

Une fois l’outil installé il suffit de le lancer sur le log que l’on veut analyser.

user@computer:$ goaccess -f /var/log/apache2/access.log

Ce qui vous donnera quelque chose comme ça :

goacess

Depuis quelque temps je me suis mis sérieusement à analyser les logs de mes serveurs étant victime très régulièrement d’attaques SYN par des scripts kiddies. Alors quand ça touche le serveur de Friendly Froggy ce n’est pas trop grave mais quand c’est celui de mon agence seo qui est touché cela devient un peu plus problématique …

Le territoire de Gibraltar fait souvent parler de lui dans les médias car on associe souvent son détroit au point de passage d’immigrés clandestins ou au trafic de drogue. Ce que je ne savais pas c’est que le Gibraltar est à l’heure actuelle une zone géographique considérée comme un véritable eldorado pour la délocalisation de sociétés à l’étranger. L’île se situe à un point stratégique entre l’Europe et l’Afrique et constitue ainsi un véritable tremplin pour les opérations d’import et d’export. Aussi, certaines entreprises préfèrent ainsi s’installer dans cette région pour des raisons pratiques plutôt que créer des sociétés Seychelles offshore, société Bahamas offshore ou encore société Belize offshore.

Aujourd’hui, soit le Jeudi 13 octobre à exactement 00:05, on peut voir sur la page d’accueil de Google.fr le message suivant :

Ton expérience scientifique, à 400 km au-dessus de nos têtes, visible dans le monde entier. YouTube Space Lab

En fait il s’agit tout simplement d’un jeu concours consistant à proposer une expérience à réaliser dans l’espace et de poster la vidéo sur Youtube. Si votre expérience est retenue, elle sera réalisée pour de vraie dans l’espace sur une station orbitale et sera diffusée sur Youtube en direct.

Très franchement si Youtube en est rendu à réaliser des jeux concours c’est qu’il ne doit pas être en grande forme. Je pensai que le 1er service de vidéos en ligne pouvais se dispenser de ce type d’acquisition trafic. Mais à part cela, je pense que l’idée est plutôt bonne, car quelques milliards de cerveaux en ébullition devraient réussir à pondre une expérience intéressante à réaliser dans l’espace.