Posts tagged: replica

Ufficio Grid Computing con gli ambienti virtuali - Parte 4

Con , Venerdì 4 Dicembre 2009 11:59

Introduzione

Io lavoro in una società dove eseguire i processi di elaborazione in batch molti milioni di record di dati ogni giorno e ho pensato di recente su tutte le macchine che si siedono intorno ogni giorno senza far nulla per diverse ore. Non sarebbe un bene se abbiamo potuto utilizzare queste macchine per sostenere la potenza di elaborazione dei nostri sistemi? In questa serie di articoli che sto andando a guardare i potenziali benefici di impiegare un ufficio griglia con ambienti virtualizzati.

In parte 3 abbiamo creato la nostra macchina virtuale, l'elaborazione e configurare macchine Windows a diventare idle-time.

L'esecuzione del codice più recente

Inevitabilmente dopo aver creato il tuo business cambierà lavoratori logica, bug verrà trovata, il codice più velocemente più efficiente sarà prodotta lasciando in tal modo i lavoratori seduti intorno trattamento dei dati utilizzando vecchio codice puzzolente . Come possiamo allora sì che siamo sempre utilizzando la versione ultima e più grande dei nostri script di elaborazione?

Ci sono alcuni modi molto semplici semplici che possiamo fare questo, il trucco, però, è quello di ridurre la potenza di elaborazione e il traffico di rete in questo senso. Iniziamo con la più semplice delle soluzioni e migliorare lentamente nel corso di un paio di iterazioni.

Il primo metodo sarebbe quello di collegare semplicemente il nostro lavoro di controllo del server (tramite samba, FTP, o simili) e tirare giù l'ultima versione del codice. Non molto efficiente, ma farà il lavoro. Consente di migliorare un po 'che, come sulla creazione di uno script rsync e l'utilizzo che ogni volta, invece? In alternativa, quello di mettere il nostro script più recente trasformazione in sovversione analizzando il codice inizialmente e poi semplicemente aggiornando il nostro codice su ogni run ( svn update )?

Alla fine potremmo ritrovarci con uno script bash (chiamato da cron ogni 10 minuti) che sembra semplice come questo:

  #! / Bin / sh
 se ps ax | grep-v grep | grep php > / dev / null
 poi
     echo "Job sta elaborando, uscita"
 altro
     echo "Il lavoro non è in esecuzione, inizia ora"
     cd / path / to / lavoro / copy
     svn update
     php yourJobProcessingScript.php
 fi 

Ora possiamo essere sicuri che ad ogni run siamo sicuramente in funzione l'ultimo codice. Siamo garantire questo aggiornando il nostro codice di base ogni volta che esegue una corsa e riducendo il traffico di rete solo il trasferimento di file attraverso le differenze la nostra rete.

Nel mio setup dimostrazione, ho fatto esattamente come sopra. Subversion è stato installato sul mio server processo di elaborazione e ho semplicemente tirato l'ultimo codice da un ramo 'lavoratore' usando 'svn update'. Ho anche aggiunto un tag numero di versione per il mio script di elaborazione che è stato restituito al database come parte del rendimento dei risultati. In questo modo ho potuto vedere che il mio codice veniva aggiornato ogni volta che ho copiato il mio baule nel ramo lavoratore vale a dire che mi è stato sicuramente l'esecuzione dello script più recente elaborazione.

Utilizzando i dati più recenti

Se la vostra elaborazione del processo si avvale di fonti di dati ad un certo punto questi stanno per essere aggiornato troppo. A meno che voi chiamate le fonti di dati su una base molto raro si sta andando ad inondare la rete con traffico non appena i lavoratori iniziare a portare tutto a un punto morto. Per la mia soluzione, ho deciso che mi piacerebbe spostare le mie fonti di dati in giro con le mie macchine virtuali.

Tenere sei cavalli lì! Cosa succede se le mie fonti di dati sono ENORMI? Beh, questa è davvero un caso di quantità di dati stiamo parlando? Potrebbe essere più conveniente installare un ulteriore disco rigido più grande in ogni macchina che per l'acquisto di un server di elaborazione. Si tratta di una questione di budget, ed è fino al business a decidere. E 'forse che le vostre fonti di dati sono così grandi che il suo solo irrealizzabile per mantenere tale quantità di dati nelle vostre macchine worker. In quel caso cosa faresti? Beh, abbiamo potuto guardare chiamando un server locale di dati, ma questo potrebbe causare problemi con la rete. In questo caso un sistema a griglia come questo può diventare realistico da includere nel vostro ambiente di ufficio. Può anche essere che si può guardare in strategie alternative di esecuzione, ad esempio solo chiamare i tuoi operai 08:00-06:00 ogni notte e / o le richieste di limitazione di origine dei dati.

Passando diciamo i nostri dati quantità fonti a 100GB di dati. Ebbene sì questo è un po 'di dati per spostarsi all'interno della rete su un aggiornamento. Come ci assicuriamo che abbiamo l'ultima copia dei dati in questo caso? Rsync è una possibilità, ma personalmente penso che eseguendo la vostra ultima fonte di dati sul server dei processi di trasformazione e di impostazione come un master in replica (con un bel log bin lungo) potrebbe essere la strada da percorrere:

replicazione Impostando ciascuno dei vostri operai come uno schiavo per gli aggiornamenti lavoro di controllo del server per le vostre fonti di dati trickle down bene ai vostri lavoratori senza un enorme aumento delle attività di rete (cioè a meno che si esegue un aggiornamento enorme di dati e tutti i tuoi calci i lavoratori in in una sola volta). Questo ha dei vantaggi rispetto a rsync che non si otterrebbe una lunga pausa prima di ogni lavoro, come gli aggiornamenti del database, il mysql daemon sul ​​lavoratore continuamente aggiornare i propri dati, mentre l'elaborazione continua.

Ecco come ho impostato il mio server dimostrazione. Per impostare la replica ho seguito la guida sul sito mySQL ( impostazione di una replica ) e in 20 minuti ho avuto il mio lavoratore inital replicare il controllo dei processi server dataset. Per ogni lavoratore addizionale le impostazioni di replica e il processo di lavoro ogni volta che il VM è stato copiato.

Riassunto

In questa sezione di questo articolo abbiamo visto come sia facile e indolore è quello di mantenere il vostro codice di elaborazione fino a data da rsync using o subverion (SVN) per fare il lavoro e ridurre il traffico di rete alla stessa file.Un Abbiamo anche discusso di come per mantenere le informazioni sull'origine dati up-to-date, consentendo che possano essere estesi ad ognuno dei vostri lavoratori. Così zona assicurando che tenere il passo con la logica di business e di informazione nel nostro sistema ufficio griglia. Ci sarà ovviamente innumerevoli alternative a svolgere questi compiti, ma qui erano due semplici esempi per mostrare come sia facile una soluzione è da trovare.

La prossima volta

Nella parte finale di questa serie, giustamente intitolato Parte 5 , parleremo di distribuzione di questo sistema per. Cercherò di riassumere quanto è stato appreso e ciò che sono riuscito a creare.

Ufficio Grid Computing con gli ambienti virtuali - Parte 5

Con , Venerdì 4 Dicembre, 2009 11:03

Introduzione

Io lavoro in una società dove eseguire i processi di elaborazione in batch molti milioni di record di dati ogni giorno e ho pensato di recente su tutte le macchine che si siedono intorno ogni giorno senza far nulla per diverse ore. Non sarebbe un bene se abbiamo potuto utilizzare queste macchine per sostenere la potenza di elaborazione dei nostri sistemi? In questa serie di articoli che sto andando a guardare i potenziali benefici di impiegare un ufficio griglia con ambienti virtualizzati.

In Parte 4 abbiamo esaminato l'uso di strumenti volti a garantire che stiamo utilizzando l'ultima versione dei sorgenti di codice e dati, in modo che i risultati ottenuti siano sempre up-to-date con le ultime informazioni di business e la logica.

Pre-distribuzione

Prima di distribuire il vostro sistema di rete se c'è una cosa che fai e una sola cosa è punto di riferimento del sistema attuale! Non importa quello che dicono i colleghi su quanto lavoro extra, il sistema sta andando a fare se non avete i numeri a supporto i vostri garanzie non sono nulla. Così,

  • quanti record si può elaborare attualmente? Al giorno? Per ora?
  • Quanto tempo ci vuole di solito necessario per girare intorno a un lavoro?
  • Quanto più la capacità hai?

C'è anche altre domande:

  • Se il server di elaborazione (o uno dei server di elaborazione) scende Quali saranno le conseguenze le vostre capacità, vi è paralizzato?
  • Quali sono i vantaggi speri / si aspettano di ottenere da un sistema di rete?
  • Le vostre macchine per ufficio in grado di eseguire i lavori?
  • Sono i tuoi (o si può essere convertito in posti di lavoro) per wrok in questo stile di esecuzione?

L'ultimo punto importante è prendere il vostro tempo su qualsiasi cambiamento importante come questo. Aggiorna il tuo codice di elaborazione di lavorare utilizzando la nuova metodologia, ancora una volta punto di riferimento. Forse configurare il server di elaborazione per eseguire una macchina virtuale, dopo tutto il vostro server di elaborazione sarà solo un altro lavoratore (solo molto potente relativamente). Lasciare che il nuovo processo di stabilirsi.

Deployment

Il mio suggerimento sarebbe quello di pop nel week-end ufficio uno di eseguire tutti gli impianti e di impostazione. Effettuare questa operazione poco prima di una quindicina di giorni di vacanza e lasciare in modo che altri poveretto per far fronte alle conseguenze ... forse non ...

Distribuzione per un sistema come questo deve essere lenta. Nonostante sia relativamente semplice per configurare il sistema interesserà l'intera infrastruttura di ufficio (anche quello digitale). In primo luogo, tirare fuori un paio di macchine in un momento, il traffico di rete monitor, come i padroni di casa di lavoro di eseguire in un giorno per giorno. Potrebbe essere necessario modificare la configurazione del processo in risposta alle vostre scoperte.

Una volta che il sistema si è risolta con poche macchine (diciamo il 10% di tutte le macchine d'ufficio, vale a dire 5) mantenere il traffico di rete di monitoraggio e macchina host benchmark performance. nuovamente Avanti, si dovrebbe ora essere l'elaborazione dei processi del 33% in più rispetto i primi benchmark. Controllare è così, o che siete almeno in questo campo da baseball. In caso contrario, indagare su ciò che sta accadendo prima di passare. Ripetere questo ciclo fino a quando non hanno felicemente tutte le macchine per ufficio in esecuzione senza uccidere performance individuale della macchina o rettifica la rete a un punto morto.

In ogni momento tenere benchmarking, anche dopo tutte le distribuzioni sono fatti. Verificare come i nuovi aggiornamenti del codice influire sulla velocità del sistema, controllare tutti i lavoratori stanno segnalando e l'elaborazione dei processi. Lentamente (molto lentamente) incrementare la configurazione del processo per ottenere il meglio dai tuoi lavoratori e di rete.

Stop!

Che cosa succede se si desidera interrompere i lavoratori in esecuzione a un certo momento? Sono tutti là fuori in esecuzione, rigenerante, e facendo del loro meglio per elaborare i dati, come gli insetti affamati. La risposta può sembrare ovvio ma vale la pena di aggiungere solo nel caso la sua trascurato. Basta modificare lo script di elaborazione di un exit (0) or die () o qualche altra dichiarazione di uccidere il processo di elaborazione. Una ragione importante per cui cerchiamo sempre di aggiornare lo script recentissima tecnologia di elaborazione prima di ogni corsa!

Dimostrazione del sistema

Per scrivere questa serie di brevi articoli che ho creato una griglia molto piccola per dimostrare le tecnologie e le metodologie. Ho letto un sacco di articoli, tutorial, e utilizzato vari strumenti per impostare e monitorare quello che stava succedendo. In nessun modo sono andato fuori e satura di un ufficio tutto con il traffico e non ho avuto accesso ad un normale PC membri del personale per vedere come le prestazioni di accoglienza è stata colpita.

Il mio sistema manifestazione era molto umile davvero. Ho usato il mio normale desktop configurato come un server di controllo del lavoro. Su questo avevo installato mySQL server installato impostato come un master in replica, PHP , Â e SVN collegati attraverso apache (per l'accesso tramite VM lavoratore).

Poi ho creato una macchina CentOS lavoratore su VirtualBox su un 6 anni portatile Windows XP. Ho impostato le operazioni pianificate, come specificato dopo aver copiato il VM sulla macchina e lasciarla andare.

La macchina virtuale è stato creato con PHP, sovversione, e mySQL. Ho controllato un ramo chiamato 'lavoratore' dal mio controllo dei lavori repository server e fatto in modo che possa essere aggiornato con 'svn update'. Poi ho l'installazione di MySQL come uno schiavo e controllato che i dati è stata la replica da MySQL sul server di controllo dei processi fino al VM lavoratore. Dopo tutto questo a configurare lo script bash e il lavoro cron.

Il mio script di elaborazione sostanzialmente andato secondo le linee di questa roba (molto semplice):

  • Leggi nel campo del nome
  • Contato il numero di nomi simili in una tabella dall'origine dati terrà il VM
  • Contato il numero di nomi come sopra, ma dividere il nome da spazi (ad esempio nome, mezzo, cognome)
  • Ripetuto questo processo di 1.000 volte

Ogni lavoro ha preso circa 20 minuti per l'esecuzione. A un certo punto ho aperto diverse copie del VM lavoratore sul portatile finestre e guardare i lavori da verificare fuori da ciascuno degli indirizzi IP del lavoratore. A questo punto mi ha anche confermato che la replica automaticamente riavviato.

Lasciando il portatile al minimo portato a un lavoratore di partenza per elaborare i processi dal server di controllo del lavoro. Quando si riprende l'uso portatile c'è stato un ritardo di circa 30-60 secondi, si tratta di una discreta quantità di tempo e di personale avrebbe bisogno di essere consapevoli che la loro macchina può mettere in pausa per un breve periodo al ritorno alla macchina. Le nuove macchine non possono avere una pausa di questa lunga. Il vantaggio della quantità di elaborazione effettuata da queste macchine durante i periodi di inattività potrebbe più che compensare gli agenti che attendere un breve periodo (diciamo 1 minuto) arrivando alla loro macchine di un mattino (Mi capita spesso di aspettare più a lungo che questo per un Windows Defender aggiornamento che si terrà), purché fossero messi al corrente di questo (tempo utile per prendere un caffè del mattino!).

Nel complesso mi sento fiducioso che ho dimostrato le tecnologie che potrebbero essere utilizzati per creare un tale sistema. Ho dimostrato che un tale sistema funziona su una (molto) su piccola scala e con ancora un po 'sperimentando potrebbe essere scalati utilizzare le risorse delle macchine di un ufficio. Se non arrivare al punto di fare questo sarei molto interessato a sapere / vedere quando qualcun altro fa.

Conclusioni / Valutazione

Il passo successivo sarebbe quello di ottenere effettivamente un esempio reale e iniziare a implementare un sistema come questo all'interno di un ambiente di ufficio e vedere cosa succede. Chiedere alle aziende di impegnarsi in questo percorso, senza una società ardente per provare la tecnologia e l'efficacia può essere un po 'difficile. Griglia / Il calcolo distribuito è molto popolare è certi ambienti e dispone di alcune applicazioni di grandi dimensioni (BIONC, SETI @ Home, Folding @ Home, ecc.) Non ho, però, trovare una scala più piccola e semplice sistema come questo nelle mie ricerche che potrebbero essere implementato all'interno di un ambiente d'ufficio.

Ho creato un sistema fondamentalmente gratuitamente utilizzando il software di origine perlopiù aperta e gli strumenti disponibili in quasi ogni ufficio. Le tecnologie sono state sostanzialmente dimostrato e dimostrano di effettuare e funzionare come previsto. Spero di avere dimostrano che con il lavoro non molto e con una configurazione molto semplice, è possibile distribuire un sistema di grid computing che ufficio è potente, economico, Â e scalabile al tempo stesso.

Una volta che un sistema è installato e funzionante non c'è quasi fine alla quantità di personalizzazioni e miglioramenti si possono fare. Per le statistiche esempio / benchmarking può essere facilmente aggiunto che mostra il valore di un tale sistema ogni giorno. Nuove macchine possono essere aggiunti rapidamente e facilmente come e quando si arriva con gli aggiornamenti per l'hardware esistente rafforzare la potenza di elaborazione.

Spero che abbiate gradito la lettura di questa serie di articoli e la sua è dato spunti di riflessione su esecuzione di un sistema di rete in ufficio. La soluzione presentata qui non funzionano necessariamente in tutte le situazioni, ma deve essere adattabile per consentire di ottenere il trattamento dei dati effettuata utilizzando la propria soluzione.

Non esitate a inviarmi commenti, correzioni o miglioramenti e farò del mio meglio per mantenere questo articolo aggiornato alla corrispondenza.













Tema di Panorama Themocracy

8 visitatori online
6 persone, 2 bot, 0 utenti
Max visitatori oggi: 23 alle 07:18 am UTC
Questo mese: 26 alle 2012/04/04 10:27 UTC
Quest'anno: 69 alle 27-02-2012 09:56 am UTC
Tutto il tempo: 130 28-03-2011 alle 10:40 UTC