Categoria: Grid Computing

Ufficio Grid Computing con gli ambienti virtuali - Parte 4

Da , Venerdì 4 Dicembre, 2009 11:59

Introduzione

Io lavoro in una società dove eseguire i processi di elaborazione batch di molti milioni di record di dati ogni giorno e ho pensato di recente su tutte le macchine che si siedono attorno ad ogni e ogni giorno non fare nulla per diverse ore. Non sarebbe bello se potessimo usare queste macchine per sostenere la potenza di elaborazione del nostro sistema? In questa serie di articoli ho intenzione di guardare i potenziali benefici di impiegare un ufficio griglia con ambienti virtualizzati.

Nella parte 3 abbiamo creato la nostra macchina virtuale di elaborazione e configurare le macchine windows per diventare inattivo lavoratori a tempo parziale.

L'esecuzione del codice più recente

Inevitabilmente, dopo aver creato il vostro business lavoratori logica cambierà, i bug verrà trovata, il codice più veloce più efficiente sarà prodotta lasciando così la tua lavoratori seduti intorno l'elaborazione dei dati utilizzando il codice vecchio puzzolente . Come possiamo allora sì che siamo sempre utilizzando la versione ultima e più grande del nostro script di elaborazione?

Ci sono alcuni modi molto semplici semplici potremmo 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 per un paio di iterazioni.

Il primo metodo sarebbe quello di collegare semplicemente al nostro server dei processi di controllo (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 utilizzando rsync e che ogni volta, invece? In alternativa quello di mettere il nostro script più recenti trasformazione in sovversione analizzando il codice inizialmente e poi semplicemente aggiornando il nostro codice, ad ogni avvio ( svn update )?

Alla fine si potrebbe finire 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 "Il lavoro sta elaborando, uscita"
 altro
     echo "Giobbe non è in esecuzione, inizia ora"
     cd / path / to / lavoro / copia
     svn update
     php yourJobProcessingScript.php
 fi 

Ora possiamo essere sicuri che con ogni esecuzione che siamo sicuramente in funzione l'ultimo codice. Siamo garantire questo, aggiornando la nostra base di codice ogni volta eseguiamo una corsa e riducendo il traffico di rete solo il trasferimento del file di differenze di tutta la nostra rete.

Nel mio setup dimostrazione, ho fatto esattamente come sopra. Subversion è stato installato sul mio server di lavoro di elaborazione e ho semplicemente tirato l'ultimo codice da un ramo 'lavoratore' utilizzando 'svn update'. Ho anche aggiunto un tag numero di versione per il mio script di trasformazione che è stata restituita al database come parte della restituzione dei risultati. In questo modo ho potuto vedere che il mio codice è in corso di aggiornamento ogni volta che ho copiato il mio tronco nel ramo cioè lavoratore che è stato sicuramente l'esecuzione dello script ultima elaborazione.

Utilizzando i dati più recenti

Se il lavoro di elaborazione fa uso di fonti di dati poi ad un certo punto queste stanno per essere aggiornati troppo. A meno che voi chiamate il vostro fonti di dati su una base molto rari si sta andando ad inondare la rete con traffico non appena il vostro lavoratori rincorsa portando tutto a un punto morto. Per la mia soluzione, ho deciso che mi piacerebbe spostare le mie fonti di dati in giro con la mia VM.

Tenere i cavalli ci siete! Che cosa succede se le mie fonti di dati sono ENORMI? Bene questo è davvero un caso di quanti dati stiamo parlando? Può 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 bilancio ed è al lavoro per decidere. E 'forse questo il vostro fonti di dati sono così grandi che il suo solo irrealizzabile per mantenere tale quantità di dati nel vostro macchine worker. In quel caso cosa faresti? Ebbene abbiamo potuto guardare chiamando un server locale dei dati, ma questo potrebbe causare problemi con la rete. In questo caso un sistema a griglia come questo può diventare realistico includere nel vostro ambiente d'ufficio. Può anche essere che si può guardare in strategie alternative di esecuzione, ad esempio, solo chiamare i tuoi operai 20:00-06:00 ogni notte e / o limitazione richieste di dati.

Passando permette di dire i nostri dati ammontare fonti a 100Gb di dati. Ebbene sì che è un po 'di dati per spostarsi all'interno della rete su un aggiornamento. Come possiamo assicurarci di avere l'ultima copia dei dati in questo caso? Rsync è una possibilità, ma personalmente penso che eseguendo la vostra fonte dati più recenti sul server di lavoro di elaborazione e di impostazione come un master in replica (con un ceppo bella bin lungo) potrebbe essere la strada da percorrere:

replicazione Impostando ognuno dei vostri lavoratori come un servo agli aggiornamenti lavoro di controllo del server per le vostre fonti dati trickle down bene al tuo lavoratori senza un enorme aumento delle attività di rete (cioè a meno che si esegue un aggiornamento di dati enorme e tutti i vostri lavoratori calcio 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 durante l'elaborazione continua.

Ecco come ho impostato il mio server dimostrazione. Per impostare la replica ho seguito la guida sul sito di mySQL ( Impostazione della replica ) e in 20 minuti ho avuto la mia lavoratore inital replicare il controllo dei job server dataset. Per ogni lavoratore addizionale le impostazioni di replica e di processo lavorato ogni volta che la 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, consentendole di trickle down ad ognuno dei vostri lavoratori. Così zona assicurando che tenere il passo con la logica di business e le informazioni nel nostro sistema ufficio griglia. Ci sarà ovviamente innumerevoli alternative di eseguire questi compiti, ma qui erano due semplici esempi per mostrare come una soluzione è facile 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 1

Da , Venerdì 4 Dicembre, 2009 11:23

Introduzione

Io lavoro in una società dove eseguire i processi di elaborazione batch di molti milioni di record di dati ogni giorno e ho pensato di recente su tutte le macchine che si siedono attorno ad ogni e ogni giorno non fare nulla per diverse ore. Non sarebbe bello se potessimo usare queste macchine per sostenere la potenza di elaborazione del nostro sistema? In questa serie di articoli ho intenzione di guardare i potenziali benefici di impiegare un ufficio griglia con ambienti virtualizzati.

Come PHP sviluppatore ho intenzione di utilizzare gli strumenti che uso ogni giorno e cioè, Linux, MySQL , PHP, VirtualBox e Subversion (SVN). Comunque spero che questa guida si adatterà ad altri linguaggi e tecnologie altrettanto bene.

La soluzione che fornisce sarà molto liberamente ispirato al tipo di lavorazione che avevamo bisogno per raggiungere tuttavia questo non può essere vero l'articolo per intero, come io le cose cambiano per semplicità, o per produrre scenari di utilizzo più interessante.

Questi ambienti virtualizzati verrà eseguito su macchine windows in quanto questo è ciò che la maggior parte degli uffici esecuzione. Il trattamento che le macchine per ufficio non dovrebbe interferire con il personale l'utilizzo di tali macchine, dovrebbero richiedere alcuna manutenzione sulla macchina, ed essere facilmente implementabile a nuove macchine non appena saranno disponibili. Inoltre, le nuove macchine virtuali non dovrebbe richiedere alcuna configurazione aggiuntiva in quanto riduce notevolmente la scalabilità e la facilità con cui il sistema di griglia può essere prorogato.

Perché Distribuire un Grid Computing di Office?

In primo luogo si potrebbe pensare, perché non utilizzare una risorsa cloud computing come piattaforma EC2 di Amazon ? Bene le ragioni potrebbero essere diverse, ad esempio:

  • Non ti affidare determinati dati in un ambiente di cloud computing
  • Non si possono mettere determinati dati in un ambiente di cloud computing per motivi legali (ad esempio, dati di lasciare il paese), potenzialmente per motivi legali, ad esempio, registra NHS.
  • Volete mantenere la vostra unità di elaborazione vicino e avere il pieno controllo dell'hardware troppo
  • Non si hanno i fondi del progetto di far girare istanze cloud
  • Il vostro ufficio non ha una connessione a internet e quindi la sua non è possibile utilizzare una risorsa cloud
  • Non ti piace la pioggia, le nuvole suggeriscono pioggia, quindi si mantiene ben lontano

Sono sicuro che la lista potrebbe continuare, ma penso che basti per ora.

Vantaggi di una Grid Computing Ufficio

Beh, consente di fare un po 'di matematica (e in vero stile fisica permette di fare alcune ipotesi strade). Immaginate di avere grandi server che elabora muscoloso in esecuzione 100 posti di lavoro al giorno. In ufficio hai 50 macchine che sono inattivi 16 ore al giorno, ognuna di queste macchine è del 10% potente come il tuo recidere l'elaborazione robusto. (Tutti i risultati qui sono arrotondati a sottovalutare aumentare le prestazioni).

Quindi, 1 potenza della macchina * 10% * 2 / 3 tempo = 0,067 ossia il 1 ° di elaborazione desktop in tempo di inattività in grado di elaborare 6 offerte di lavoro pieno al giorno.

Se ora questa scala up ci vogliono 15 desktop inattivo per elaborare il maggior numero di posti di lavoro al giorno, come il server di elaborazione principale fa.

Quindi nel nostro ufficio finta di 50 macchine potremmo aumentare la nostra potenza di elaborazione del server da 1 a 4 server di elaborazione completa, o ci potrebbe essere l'elaborazione 400 posti di lavoro al giorno invece di 100.

Preavviso, senza investimenti in nuovo hardware della vostra azienda ha appena aumentato la sua capacità di elaborazione batch 4 volte! Potenzialmente si sta andando ad aumentare il consumo di energia, ma dalla maggior parte degli ambienti ufficio Sono stato a macchine sono generalmente lasciato acceso durante la notte in ogni caso, così si potrebbe vedere questa come una iniziativa verde.

Altri vantaggi anche significare che gli investimenti in nuovi (o aggiornato) server di elaborazione può essere ritardato se il tuo macchine d'ufficio sono sufficienti e che come a migliorare la potenza del vostro macchine per ufficio vostra griglia ufficio diventa più potente automaticamente.

Tecnologie

Che cosa avete bisogno? (O più correttamente quello che ho fatto uso):

  • Macchine per ufficio di inattività (nel mio caso un ricambio vecchio portatile windows XP)
  • VirtualBox (o un altro client software di virtualizzazione)
  • Una macchina virtuale con PHP, MySQL running l'esecuzione di un taglio verso il basso del sistema operativo, chiamo questi miei server LIMP:)
  • Lavori da eseguire
  • Lavoro del server (può essere un'altra macchina virtuale da qualche parte)

Lavori tipici

I tipi di lavori che questo sistema è progettato per funzionare è la seguente:

  • Sistema riceve un elenco di dati su cui abbiamo bisogno di partita e restituire risultati
  • Corrispondenza consiste nel verificare / ricerca diversi (abbastanza statico) le fonti di dati
  • I risultati di fonti di dati può richiedere ulteriore validazione, la fusione, la verifica di ulteriori fonti di dati in risposta ai risultati
  • I dati vengono restituiti con record corrispondenti, completamente convalidato e trattati
  • Ogni record all'interno di un lavoro è indipendente dal resto

Quindi, in pratica stiamo guardando in esecuzione di posti di lavoro che richiedono una miscela di ricerche nei database e qualche calcolo, uno scenario abbastanza tipico in un ambiente aziendale.

Soluzioni di rete non sono solo vantaggioso per l'elaborazione dei processi di questo tipo. Fondamentalmente, qualsiasi processo che può essere suddivisa in unità indipendenti possono essere eseguiti in parallelo. Vedere questa wikipedia per esempi e maggiori informazioni: Grid Computing , ma un paio di esempi famosi sono Seti @ Home e BIONC . Ci sono strutture per l'esecuzione di griglie di calcolo, e questi sono ben merita di essere esaminata.

Che cosa otteniamo?

Entro la fine di questi articoli spero di mostrare che la distribuzione di una griglia di ufficio non deve essere consuma enormemente costose o di tempo. Ho intenzione di discutere:

  • Impostazione del sistema di controllo di lavoro, lavoro di configurazione
  • La creazione di un'apposita macchina di elaborazione virtuale
  • Come impostare il sistema su una macchina Windows
  • Assicurare si sta utilizzando l'ultimo codice e dati
  • Distribuzione e benchmarking
  • Guardando al futuro

Sarò edificio (ok ho costruito, allora ha scritto questo), un'applicazione di esempio per testare i concetti su un computer locale utilizzando Windows XP e la mia macchina 'GridMachine' virtuale. Il mio server di controllo del lavoro sarà la mia macchina principale che corre Fedora 11 .

Questo non è in alcun modo a indurre dimostrare un sistema completamente funzionante robusta, il suo meant più di una dimostrazione e discutere mostrando che queste cose può essere raggiunto in uno spazio di tempo ragionevolmente breve e con poca spesa. Non esitate a inviarmi eventuali commenti, correzioni o miglioramenti e farò del mio meglio per mantenere questo articolo aggiornato alla partita.

La prossima volta

Nella parte 2 inizierò guardando il sistema di controllo dei job, e in che modo i posti di lavoro dovrebbero essere configurati in modo da ottenere la massima quantità di elaborazione, assicurando che ogni lavoro viene elaborato a colpo sicuro.

Ufficio Grid Computing con gli ambienti virtuali - Parte 2

Da , Venerdì 4 Dicembre, 2009 11:23

Introduzione

Io lavoro in una società dove eseguire i processi di elaborazione batch di molti milioni di record di dati ogni giorno e ho pensato di recente su tutte le macchine che si siedono attorno ad ogni e ogni giorno non fare nulla per diverse ore. Non sarebbe bello se potessimo usare queste macchine per sostenere la potenza di elaborazione del nostro sistema? In questa serie di articoli ho intenzione di guardare i potenziali benefici di impiegare un ufficio griglia con ambienti virtualizzati.

Nella Parte 1 ho dato una panoramica del sistema e delle tecnologie userò così come discusso alcuni dei motivi possibili per cui si vorrebbe creare una griglia d'ufficio.

Lavoro di controllo

Se avete intenzione di essere in esecuzione i lavori allora si sta andando a bisogno di un modo per gestirli. Il vostro sistema di controllo dei job (sul server di lavoro) deve essere davvero ben pensato prima ancora di tentare di eseguire una griglia ufficio. Quindi in primo luogo, quali sono i compiti di un sistema di controllo dei job:

  • I lavori a mano su richiesta di lavoratori
  • Dillo a lavoratori che tipo di lavori da eseguire
  • Tenere traccia dei lavori
  • Garantire che i lavori sono eseguiti solo una volta
  • Fornire dati del lavoro ai lavoratori, o almeno dire loro dove trovarlo

Il sistema deve anche essere estensibile, una soluzione che funziona per ora in un singolo caso può essere estesa per eseguire diversi tipi di lavori come l'azienda vede il valore in una soluzione griglia. Per esempio, i lavori possono avere priorità, più di un tipo di lavoro può esistere (cioè diverse basi di codice), alla fine si può anche eseguire più macchine worker differenti che sono ottimizzati per ogni tipo di lavoro (anche se questo si muove lontano dal 'operaio generico 'idea). Cercate sempre di pensare al futuro nello sviluppo di sistemi, una visione a breve termine può portare alla frustrazione più lungo termine e un aumento dei tempi di sviluppo.

Job Server

Stiamo andando a bisogno di un posto di controllare il nostro lavoro da, questo dovrebbe essere l'unico sistema in rete che ha un fisso Resource Locator, è che un indirizzo IP, nome host, l'URL (usando il DNS interno), ecc Questo perché i lavoratori hanno bisogno di sapere dove cercare lavoro, i lavoratori hanno bisogno di trovare il sistema di controllo di lavoro (non il sistema di controllo trovare lavoro i lavoratori).

Il server di lavoro in sé non hanno un compito davvero complicato (in un sistema di base comunque), ha bisogno di memorizzare un elenco di posti di lavoro, distribuire posti di lavoro, ottenere risultati, e, successivamente, conservarle per il successivo recupero. Come queste parti (come 'mano di posti di lavoro') sono definite può essere molto di base. Più tardi siamo in grado di estendere il sistema per includere un'interfaccia di amministrazione di aggiungere, modificare, eliminare, sospendere i lavori ma questo è al di là di questo esercizio.

Non vi è alcun motivo allora che il server di lavoro non poteva essere una macchina virtuale in esecuzione all'interno del server di elaborazione principale a condizione che non scarica troppe risorse da esso. Il server di lavoro però ha bisogno di alta disponibilità, se va giù su un Venerdì sera si sta andando a perdere un intero fine settimana di lavorazione, potenzialmente vi costa un paio di settimane di tempo di elaborazione (rispetto al server di elaborazione principale da solo) . Si consiglia di valutare l'ipotesi di lavoro del server in un ambiente di bilanciamento del carico per l'alta disponibilità.

Impostazioni di base

La configurazione di base per il nostro server di lavoro sarà composto da ciò che io chiamo uno dei miei server LIMP (che è Nux Li, m ySql, P HP). Il codice in esecuzione sui lavoratori thea realmente capire cosa posti di lavoro che possono essere eseguiti interagendo con il controllo dei job con i database di sistema. In seguito si potrebbe creare un servizio web ed effettivamente distribuire posti di lavoro piuttosto che i lavoratori fare il lavoro duro se stessi, ma per il momento continueremo con il principio KISS (Keep it Simple, Stupid!).

Quindi, consente di creare tre mySQL tabelle a che fare con posti di lavoro. Questi saranno `lavoro`, `jobRecords` e `jobResults`.

tavolo di lavoro Qui sto usando SQL amici una grande alternativa poco a phpMyAdmin solo perché è più facile da installare su CentOS (per gli altri vedi: 10 grandi alternative a phpMyAdmin )

Questa tabella si compone di 5 campi semplici,

  • id: Identificare in modo univoco il lavoro
  • Nome: Potrebbe essere un cliente di riferimento, o un qualsiasi numero di altri identificatori
  • Stato: è necessario sapere dove il lavoro è a, per esempio
    • 0: Non iniziato
    • 1: Raccolto
    • 2: Completato
  • started_by: Chi ha iniziato a fare il lavoro? Questo non è del tutto necessario, ma è un bello avere. Io suggerirei di tracciamento lavoratori dai loro indirizzi IP sulla rete
  • started_at: Quando il lavoratore iniziare il lavoro? Tracciando i lavori che non hanno completato entro quantità X di tempo sappiamo che abbiamo bisogno di raccogliere ancora una volta il lavoro e avviare l'elaborazione di un altro lavoratore. I lavoratori possono interrompere l'elaborazione / go offline per qualsiasi numero di ragioni, mancanza di corrente, crash, perdita di rete, ecc

E 'facile come questo tavolo potrebbe essere esteso con alcuni campi aggiuntivi per consentire il monitoraggio delle statistiche, una colonna di tempo finale per vedere quanto tempo il lavoro ha avuto, un contatore per vedere quanti lavoratori prese il posto di lavoro (ovviamente questo deve tendono a 1), la priorità di lavoro, la lista può continuare a lungo. In scenari più complessi di lavoro sarebbe possibile specificare la quantità di memoria il lavoratore avrebbe bisogno di accedere a (e quindi utilizzare solo i lavoratori adatti), o anche che tipo di lavoratore sarebbe necessario.

Consente di aggiungere un paio di lavori di esempio:

esempio i lavori

La tabella successiva è ancora abbastanza semplice da capire, questi sono i nostri registri di lavoro. Esse sono legate alla tabella principale di posti di lavoro da una colonna `jobs_id`. Il make up di questa tabella molto dipende dai dati che avete bisogno di fornire ai propri lavoratori, consente di fare un esempio molto semplice in cui abbiamo quattro colonne:

  • id: ID del record
  • name: nome di persona
  • indirizzo: indirizzo Person
  • jobs_id: l'ID di lavoro che questo disco è legata alla

La terza tabella e finale consiste in una tabella dei risultati, ha più o meno allo stesso compongono la nostra tabella i record e con l'aggiunta di alcune colonne potrebbero essere parte della tabella record:

  • job_record_id: Link il risultato al tavolo di lavoro
  • risultato: I dati dei risultati

... E questo è tutto ciò che serve per il controllo del lavoro! (Anche se a un livello molto elementare) Nel mio caso ho fatto a un altro tavolo dove si trovava miei dati da elaborare, ma questo potrebbe altrettanto facilmente essere un file, i parametri per eseguire codice di simulazione, è il nome.

Selezione di un lavoro

Come affermato precedentemente, i lavoratori faremo del nostro gestione dei lavori per noi, per ora, quindi tutto quello che dobbiamo fare è veramente trovare un lavoro che ha bisogno di elaborazione e ottenere le informazioni. Come lo facciamo? Bene scegliere i nostri criteri di selezione di lavoro e cercano un lavoro, in SQL ho fatto la seguente:

  1. Prendete tutti i processi che non sono contrassegnati come completo ma dal nostro lavoratore e ripristinarle (__ME__ sostituire con un identificatore, più semplice sarebbe indirizzo IP):
      UPDATE `lavoro` SET `status` = 0 dove `status` = 1 `E` started_by = __ME__; 
  2. Utilizzando i nostri criteri di selezione di lavoro, selezionare un lavoro e dire al sistema di controllo che il lavoratore se ne occupa:
      UPDATE `lavoro` SET `status` = 1, `started_by = __ME__`, `started_at` = NOW () DOVE `status` = 0 O
     (`Status` = 1 `E` started_at> DATE_SUB (NOW (), INTERVAL ORA X)) ORDER BY `id` ASC; 

    Afferrando i lavori che non hanno prodotto risultati in quantità X di tempo ci assicuriamo che tutti i lavori vengono eseguiti in caso di un lavoratore crash o andare AWOL.

  3. Avanti afferrare i dettagli di posti di lavoro seguita dagli stessi record:
      SELECT * FROM `lavoro` WHERE `started_by` __ME__ = LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Al termine del lavoro inseriamo i nostri dati di risultato e di segnare il lavoro più completo. Ricorda come i lavori possono suspend / resume in ogni momento consentire una certa robustezza nello script. Potrebbe essere che il compito sospende a metà strada attraverso l'aggiornamento del sistema di controllo del lavoro, in modo da controllare il numero di record in un lavoro e il numero di risultati salvati nel sistema di controllo del lavoro sarebbe una mossa saggia.

Inoltre, mentre questo dimostra come i lavori possono essere selezionati e gestiti da un SQL-query cornice che in realtà dovrebbe essere astraendo il vostro lavoro di controllo in modo che se si decide di passare ad usare un servizio web, un file system basato su XML , o qualsiasi altro numero di sistemi non influenzerà il codice sopra di esso.

Lavoro di configurazione

L'aspetto da considerare è la dimensione del lavoro e di configurazione. Giocando con la configurazione di lavoro si può trovare un ottimo equilibrio tra velocità, processo di replica, e affidabilità. Prendete un paio di scenari ofa:

  1. Lavori prendere 1 giorno ciascuno a correre: questo significa che il tuo lavoratori hanno bisogno di 15 giorni per ogni processo di lavoro (si ricordi il 10% della potenza per 2/3rds del tempo). Questo chiaramente non è un saggio di configurazione, la tua dimensione del lavoro è troppo grande! Ci vorrebbe almeno il doppio del tempo per ottenere un lavoro elaborato il lavoratore deve andare AWOL iniziale (tempo di prendere che non ha restituito un risultato più il tempo di ritrattamento). In un ideale che avresti avuto almeno un lavoro pieno facilmente eliminato entro la fine di ogni lungo periodo di inattività, in questo modo si mantiene il ticchettio di posti di lavoro più e nel peggiore caso un posto di lavoro avrebbe preso due giorni per il primo processo dovrebbe andare dispersi.
  2. Lavori prendere 1 minuto per eseguire: Questo significa che i vostri dipendenti impiegano circa 15 minuti per eseguire ogni lavoro. Anche se questo può inizialmente sembrare ideale, si guadagna ulteriori elaborazioni lavoro durante l'ora di pranzo, coffee break, incontri, ecc questo scenario gravano su altre aree del sistema e presenta i suoi problemi. Per esempio, in primo luogo la configurazione / elaborazione rapporto tempo sta per andare a destra verso il basso, perdendo così l'efficienza del sistema. La rete sta per essere costantemente in streaming informazioni sul lavoro al personale frustrante vari lavoratori che sono dong il loro lavoro quotidiano. Sei anche andando a mettere più pressione sul vostro server l'elaborazione dei processi in quanto deve servire fuori un sacco di piccoli pezzi di lavoro su base regolare. Infine, in questa situazione se il server di lavoro va giù che si vuole creare un registro enorme ritorno di opera incompiuta, mentre più posti di lavoro potrebbe di continuare il trattamento beatamente ignaro che il server di lavoro era in difficoltà.

In realtà non ci sarà alcuna configurazione quello ideale per la configurazione della rete, molto dipende dalle risorse disponibili, i tipi di lavoro, i requisiti di turnaround lavoro a tempo, la capacità di rete, e così via. Tuttavia alcune linee guida potrebbe essere:

  • Lavori di dimensioni in modo che ogni lavoratore può ottenere attraverso almeno 3-4 lavori in un periodo di 15 ore (il più lungo periodo di probabile tempo di inattività)
  • Gioca con la dimensione del lavoro in modo che i tempi di configurazione diventa piuttosto insignificante rispetto al tempo di elaborazione (tenendo conto del punto precedente).
  • Se un processo non si completa in doppio della quantità di tempo (forse meno) ci si aspetta di completare lo supporre che la sua AWOL andato e avviare l'elaborazione con un altro lavoratore. Ciò significa che potrebbe essere necessario attendere fino a tre volte la lunghezza normale di un lavoro per il completamento (forse più a lungo se il lavoro successivo fallisce). Si consiglia di ridurre questo tempo, ma attenzione a non ridurre troppo come si può iniziare a duplicare le operazioni di elaborazione su base regolare.
  • Lavori dovrebbero essere indipendenti dei requisiti di fuori quanto più possibile. Il server di lavoro, ad esempio, deve essere contattato all'inizio e alla fine di ciascun lavoro.
  • Non saturare la rete, questo avrà due effetti negativi, il personale durante il giorno si trova utilizzando la rete frustrante e problemi possono essere sperimentati con connessioni in timeout un problema che potrà solo peggiorare, come si scala la griglia.
  • Assicurarsi che i lavori possono essere eseguiti sul vostro lavoratori. Se i processi diventano troppo spazio di memoria di lavoro intensivo o intensivo del disco partirà l'interruzione e l'unica cosa che noterete è un calo nel numero di lavori elaborati senza alcun vero motivo.

Risultati Invio di un lavoro

Nel presentare i risultati di un lavoro, è importante verificare che i risultati non siano stati presentati da un altro lavoratore, soprattutto se il lavoratore corrente è stato sospeso per qualche tempo.

Quando i risultati sono presentati in modo che il numero di risultati corrisponde al numero di record all'interno del processo.

Come detto in precedenza, e non possono essere più enfatizzato, costruire la tolleranza ai guasti nel recupero di posti di lavoro e presentazione dei risultati. I lavoratori possono (e molto probabilmente) entrare in modalità di sospensione al più scomodo di volte e questo ha bisogno di essere soddisfatti. Inoltre ancora una volta rendere astratta la vostra presentazione risultati aiuteranno soddisfare i futuri cambiamenti al sistema di controllo di lavoro molto più facile da affrontare.

Riassunto

In questo sezionali abbiamo guardato a ciò che un server di controllo del lavoro deve fare e come ottenere un sistema di base creato. Abbiamo discusso di come recuperare un lavoro dal sistema di controllo e come configurare al meglio i lavori per ottenere il massimo del nostro sistema per ufficio griglia. Per finire, un paragrafo o due alla presentazione di risultati al server di controllo del lavoro è stato presentato.

  • Un server di controllo del lavoro gestisce i lavori e assicura che tutte le unità di lavoro sono stati completati
  • Astraendo il tuo lavoro selezionare / presentazione dei risultati possiamo cambiare la tecnologia del server di controllo senza problemi molto
  • Configura il tuo lavoro per garantire che vengano eseguiti in modo rapido ed efficiente, senza mettere troppa pressione sulla vostra infrastruttura di rete, e senza duplicazione di compiti di elaborazione su base regolare.
  • Assicurarsi di costruire la tolleranza ai guasti e checking errore nella vostra routine, i lavoratori possono sospendere e riprendere e il più scomodo di volte. Ricordati di controllare se i risultati sono già stati presentati da un altro lavoratore.

La prossima volta

Nella parte 3 creeremo la nostra macchina virtuale di elaborazione e impostare le nostre macchine finestre per diventare inattivo lavoratori a tempo parziale.

Ufficio Grid Computing con gli ambienti virtuali - Parte 5

Da , Venerdì 4 Dicembre, 2009 11:03

Introduzione

Io lavoro in una società dove eseguire i processi di elaborazione batch di molti milioni di record di dati ogni giorno e ho pensato di recente su tutte le macchine che si siedono attorno ad ogni e ogni giorno non fare nulla per diverse ore. Non sarebbe bello se potessimo usare queste macchine per sostenere la potenza di elaborazione del nostro sistema? In questa serie di articoli ho intenzione di guardare i potenziali benefici di impiegare un ufficio griglia con ambienti virtualizzati.

Nella Parte 4 abbiamo esaminato l'uso di strumenti per assicurare che stiamo eseguendo l'ultima versione delle fonti di codice e dati in modo che i risultati ottenuti sono 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 si fa e una cosa sola è punto di riferimento il sistema attuale! Non importa quello che dicono i colleghi su quanto lavoro in più il vostro sistema sta andando a fare se non si hanno numeri a sostegno di questo vostro garanzie sono nulla. Così,

  • il numero di record puoi processo attualmente? Al giorno? Per ora?
  • Quanto tempo ci vuole di solito prendere per girare un lavoro?
  • Quanto più capacità hai?

Ci sono anche altre domande:

  • Se il server di elaborazione (o uno dei server di elaborazione) va giù come saranno le conseguenze per le vostre capacità, vi è paralizzato?
  • Quali vantaggi si spera / aspettano di ottenere da un sistema a griglia?
  • Le vostre macchine per ufficio in grado di eseguire i lavori?
  • I vostri (o può essere convertito le offerte di lavoro) per lavorare in questo stile di esecuzione?

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

Deployment

Il mio suggerimento sarebbe quello di pop nel week-end ufficio uno eseguire tutte le installazioni e la configurazione. Fatelo subito prima vacanza di due settimane e lasciare così povero altri cap per affrontare le conseguenze ... forse non ...

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

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

Conserva sempre la valutazione comparativa, anche dopo che tutte le distribuzioni sono fatti. Verificare come gli aggiornamenti nuovo codice influenzare la velocità del vostro sistema, controllare tutti i lavoratori sono reporting e l'elaborazione dei processi. Lentamente (molto lentamente) incrementare la vostra configurazione di lavoro per ottenere il meglio dal vostro lavoratori e di rete.

Stop!

Che cosa succede se si desidera interrompere la vostra lavoratori in esecuzione a un certo momento? Sono tutti là fuori in esecuzione, rigenerante, e facendo del loro meglio per elaborare i dati come insetti affamati. La risposta può sembrare ovvia, ma il suo valore aggiunto nel caso in cui la sua trascurato. Basta modificare lo script di elaborazione con un'uscita (0) or die () o qualche altra istruzione per uccidere il vostro processo di elaborazione. Una ragione importante per cui cerchiamo sempre di aggiornare allo script più recenti 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 metodologie. Ho letto un sacco di articoli, tutorial e utilizzati vari strumenti per impostare e monitorare quello che stava succedendo. In nessun caso sono andato fuori e saturi di un ufficio tutto con il traffico e non ho avuto accesso ad un normale PC membri dello staff per vedere come le prestazioni host è stato colpito.

Il mio sistema manifestazione è stata davvero molto umile. Ho usato il mio desktop regolarmente impostato come un server di controllo dei job. Su questo avevo installato mySQL server installato impostato come un master in replica, PHP , Â e SVN collegati attraverso apache (per l'accesso via lavoratore VM).

Poi ho creato una macchina CentOS lavoratore su VirtualBox su un portatile di 6 anni windows XP. Ho impostato le attività pianificate, come specificato dopo aver copiato la VM sulla macchina e lasciarlo andare.

La macchina virtuale è stato creato con PHP, sovversione, e mySQL. Ho controllato un ramo chiamato 'lavoratore' dal mio controllo del lavoro repository server e fatto in modo che potrebbe essere aggiornato con 'svn update'. Poi ho configurato mysql come una schiava e controllato che i dati è stata la replica da mySQL sul server di controllo di lavoro fino al lavoratore VM. Dopo tutto questo ho configurato lo script bash e il processo di cron.

Il mio script di elaborazione fondamentalmente è andato sulla falsariga 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 spaccare il nome da uno spazio (es. nome, mezzo, cognome)
  • Ripetuto questo processo 1.000 volte

Ogni lavoro ha richiesto circa 20 minuti per eseguire. Ad un certo punto ho aperto diverse copie della VM lavoratore sul portatile finestre a guardare i lavori di essere controllato 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 dei job. Quando si riprende l'uso portatile ci fosse un ritardo di circa 30-60 secondi, questa è una discreta quantità di tempo e di personale dovrebbero essere resi consapevoli che la loro macchina può mettere in pausa per un breve periodo al ritorno alla macchina. Macchine più recenti non possono avere una pausa di questa lunga. Il vantaggio della quantità di trattamento effettuato con queste macchine durante i periodi di inattività sarebbe più che superano membri dello staff dover attendere un breve periodo (diciamo 1 minuto) per arrivare alla loro macchine di un mattino (Mi capita spesso di aspettare più a lungo che questo per un Windows Defender aggiornamento avvenga) a condizione che fossero messi al corrente di questo (tempo utile per prendere un caffè del mattino!).

Nel complesso mi sento fiducioso che mi hanno dimostrato le tecnologie che potrebbero essere utilizzati per creare un tale sistema. Ho dimostrato che tale sistema funziona su un (molto) su piccola scala e con ancora un po 'la sperimentazione 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 se qualcun altro lo fa.

Conclusioni / Valutazione

Il passo successivo sarebbe quello di ottenere effettivamente un esempio reale e iniziare a implementare un sistema di questo tipo all'interno di un ambiente di ufficio e vedere cosa succede. Chiedere un business di impegnarsi per questo senza una società pista sfolgorante per provare la tecnologia e l'efficacia può essere un po 'difficile. Griglia / Distributed computing è molto popolare sia alcuni 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 del genere nelle mie ricerche che potrebbero essere implementato all'interno di un ambiente di ufficio.

Ho creato un sistema fondamentalmente libera utilizzando software open source per lo più aperta e strumenti disponibili in quasi tutti gli uffici. Le tecnologie sono state fondamentalmente 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 a griglie di calcolo ufficio che è potente, a basso costo, Â e scalabile al tempo stesso.

Una volta che il sistema è attivo e funzionante non c'è quasi fine alla quantità di personalizzazioni e miglioramenti si possono fare. Per esempio le statistiche / analisi comparativa può essere facilmente aggiunto che mostra il valore di un tale sistema ogni giorno. Le 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 sul funzionamento di un sistema di rete in ufficio. La soluzione qui presentata non necessariamente funziona in tutte le situazioni, ma deve essere adattabile per consentire di ottenere il trattamento dei dati effettuato mediante la vostra soluzione.

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













Tema di Panorama Themocracy

15 visitatori online
10 ospiti, 5 bot, 0 utenti
Max visitatori oggi: 16 alle 02:02 UTC
Questo mese: 16 alle 2011/01/09 02:02 UTC
Quest'anno: 130 a 28-03-2011 22:40 UTC
Tutti i tempi: 130 28-03-2011 alle 10:40 UTC