Forum: Italian Ruby user group Sync fra tre cartelle in tre server

Posted by Riccardo Tacconi (rtacconi)
on 2012-10-31 09:05
Ciao, ho migrato un sito da un server web ed un server db a tre server.
Ogni server ha apache con passenger e MySql con replicazione. I file li
ho migrati S3 (uso carrierwave). Il problema e` l'editor degli articoli
usa una directory locale. Ho provato a montare un bucket da S3 ed era
lentissimo. Ho installato GlusterFS e sembrava funzionare, pero` i
server hanno 2GB e non ce la fanno, poi GlusterFS mi disistalla delle
librerie per mysql e fa confusione. In poche parole non saprei come
fare. Di
solito rsync viene utilizzato per backup, one-way, ho trovato unison ma
i server web son tre non due.

Forse potrei usare solamente due server per il web ed usare unison. I
tre server mysql dovrei tenerli perche` uso galera replication ed ha
bisogno di tre server in caso che un nodo vada giu`.

Idee? Conoscete qualcosa per tenere i file in sync? La cartella
dell'editor puo` ricevere uno o due file al giorno, veramente pochi,
forse rsync potrebbe andar bene.

Non voglio aggiungere altri due VPS per condividere i file con
GlusterFS, mi sembra esagerato ed il cliente probabilmente non sarebbe
contento.
Posted by Riccardo Tacconi (rtacconi)
on 2012-10-31 09:36
Scusa Fabrizio ho fatto confusione, ho cancellato il post da quel 
thread. ti
rispondo qui. Il modo piu` semplice era di usare S3 visto che tutti gli
altri file con Ruby sono stati cambiati per usare S3. Mi servirebbe
semplicemente di tenere in sync le tre cartelle. Per la scrittura i
requisiti son bassi, per la lettura ci sono molti file. S3 e` troppo
lento montato come FS locale, GlusterFS mi crea problemi. Ceph non ha i
pacchetti per Lucid (Ubuntu 10.04). E` un sito in produzione e non posso
compilare e sperimentare.
Posted by Tommaso Visconti (Guest)
on 2012-10-31 09:42
(Received via mailing list)
Il 31/10/12 09:05, Riccardo Tacconi ha scritto:
>
> Forse potrei usare solamente due server per il web ed usare unison. I
> tre server mysql dovrei tenerli perche` uso galera replication ed ha
> bisogno di tre server in caso che un nodo vada giu`.
>
> Idee? Conoscete qualcosa per tenere i file in sync? La cartella
> dell'editor puo` ricevere uno o due file al giorno, veramente pochi,
> forse rsync potrebbe andar bene.

Sparkleshare?
http://sparkleshare.org/
Posted by Riccardo Tacconi (rtacconi)
on 2012-10-31 10:10
Grazie Tommaso. Devo risolvere il problema in giornata e quello script 
potrebbe andare bene. Non ho un server GIT e non so se potrei superare 
le quote di github o bitbucket
Posted by Tommaso Visconti (Guest)
on 2012-10-31 10:19
(Received via mailing list)
Il 31/10/12 10:10, Riccardo Tacconi ha scritto:
> Grazie Tommaso. Devo risolvere il problema in giornata e quello script
> potrebbe andare bene. Non ho un server GIT e non so se potrei superare
> le quote di github o bitbucket

Il "server git" pu essere anche un semplice accesso ssh comune ad una
macchina, tempo di setup 0 :)
Il problema di sparkleshare l'ho riscontrato su molti file che cambiane
spesso, che per la natura di git vanno ad occupare un sacco di spazio,
ma nel tuo caso secondo me funziona bene.
Posted by Fabrizio Regini (freegenie)
on 2012-10-31 10:26
(Received via mailing list)
Visto che i file cambiano poco, qual' il problema di usare Rsync?
Posted by Davide Rambaldi (Guest)
on 2012-10-31 10:33
(Received via mailing list)
Se vuoi puoi farti il tuo bare git repository su una macchina. Poi con 
push & pull sincronizzi ...

SUL "SERVER":

ssh git@example.com

mkdir my_project.git

cd my_project.git

git init --bare

exit


SUI CLIENT ti ci vuole lo scambio di chiavi:

ssh-keygen -t rsa

etc  .

Se metti le passphrase il problema e' che ti chiedera' la passphrase 
ogni volta che ti colleghi. Puoi risolvere con un ssh agent

qui trovi una mia implementazione per bash (e' al blocco 4)

https://github.com/tucano/tucano-configs/blob/mast...

Ciao!
Posted by Riccardo Tacconi (rtacconi)
on 2012-10-31 10:44
Fabrizio Regini wrote in post #1082164:
> Visto che i file cambiano poco, qual' il problema di usare Rsync?

Ho il load balancer di Linode ed sto usando le sticky sessions, quindi 
un utente che carica un file, dovrebbe restare sullo stesso server 
quando il file e` caricato e l'articolo e` stato salvato, pero` una 
volta ha visto l'articolo senza immagine. Da qui ho la paranoia che 
capiti di nuovo. Ho visto che molti setup eseguono rsync via cron ogni 
30/60 secondi, ma vorrei che i file siano in sync dopo pochi secondi.

Potrei anche usare guard-process per monitore i cambiamenti nella 
cartella e far partire rsync on-demand.
Posted by Fabrizio Regini (freegenie)
on 2012-10-31 10:57
(Received via mailing list)
Infatti pensavo a guard per monitorare i cambiamenti e far partire 
rsync.

Non conosco il load balancer di linode ma se le sticky sessions 
funzionano bene quello che hai descritto non dovrebbe accadere. 
Indagherei su quel fronte. Altrimenti rischi di complicare inutilmente 
il tutto.
Posted by Luca Mearelli (Guest)
on 2012-10-31 10:59
(Received via mailing list)
2012/10/31 Riccardo Tacconi <rtacconi@gmail.com>:
> Fabrizio Regini wrote in post #1082164:
>> Visto che i file cambiano poco, qual' il problema di usare Rsync?
>
> Ho il load balancer di Linode ed sto usando le sticky sessions, quindi
> un utente che carica un file, dovrebbe restare sullo stesso server
> quando il file e` caricato e l'articolo e` stato salvato, pero` una
> volta ha visto l'articolo senza immagine.

mi se che non ho capito il setup: hai detto che stai usando
carrierwave con S3, quindi le immagini dovrebbero andare su S3 ed
essere servite direttamente da li ... (stai usando un upload diretto o
asincrono?)
Oppure i file creati dall'editor sul webserver sono di altro genere?

Luca
Posted by Maurizio Totti (Guest)
on 2012-10-31 10:59
(Received via mailing list)
Il 31 ottobre 2012 10:44, Riccardo Tacconi <rtacconi@gmail.com> ha 
scritto:
> Potrei anche usare guard-process per monitore i cambiamenti nella
> cartella e far partire rsync on-demand.
>
Ciao,
ha la possibilit di usare inotify
https://github.com/rvoicilas/inotify-tools/wiki ?
Posted by Riccardo Tacconi (rtacconi)
on 2012-10-31 11:02
Ho aggiornato gli uploader per usare S3 (dopo aver copiato i file dal FS 
locale a S3). FCKEditor usa una sua cartella su file system locale, mi 
son reso conto solamente che usavano anche le immagini caricandole 
dall'editor. Idealmente FCKEditor dovrebbe essere configurato ad usare 
S3, ma non credo sia possibile.
Posted by Luca Mearelli (Guest)
on 2012-10-31 11:48
(Received via mailing list)
2012/10/31 Riccardo Tacconi <rtacconi@gmail.com>:
>  Idealmente FCKEditor dovrebbe essere configurato ad usare S3

oppure per usare carrierwave (questo ti potrebbe aiutare:
https://github.com/galetahub/ckeditor )

Luca
Posted by Riccardo Tacconi (rtacconi)
on 2012-10-31 12:22
Luca Mearelli wrote in post #1082188:
> 2012/10/31 Riccardo Tacconi <rtacconi@gmail.com>:
>>  Idealmente FCKEditor dovrebbe essere configurato ad usare S3
>
> oppure per usare carrierwave (questo ti potrebbe aiutare:
> https://github.com/galetahub/ckeditor )
>
> Luca

Sarebbe quello che il creatore del progetto doveva utilizzare, ha messo 
l'editor in molti posti e devo trovare un soluzione al volo. Quella gem 
sarebbe ottima per un futuro aggiornamento del codice.
Posted by Riccardo Tacconi (rtacconi)
on 2012-10-31 16:24
Alla fine ho usato la gem directory_watcher con uno script che ad ogni 
evento sulla cartella attiva rsync. Mi sembra che funziona abbastanza 
bene.

Grazie delle tante idee.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.