Posts tagged: virtual

Ufficio Grid Computing con gli ambienti virtuali - Parte 3

Con , Venerdì 4 Dicembre, 2009 23:37

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.

Nella parte 2 abbiamo visto i posti di lavoro di un server verrà eseguito, e come posti di lavoro dovrebbe essere configurato in modo da ottenere la massima quantità di elaborazione, assicurando nel contempo che ogni lavoro viene elaborato a colpo sicuro.

Impostazione del lavoratore - o server LIMP

Il passo successivo nel processo è quella di creare i vostri collaboratori virtuali. Per questo ho intenzione di utilizzare un installazione di CentOS utilizzando VirtualBox. Ho intenzione di installare mySQL e PHP sul server, noto anche come LIMP (Nux Li, m ySQL, P HP) Servera (forse ho fatto quel nome in alto).

  • Installare VirtualBox sulla vostra macchina Windows (segui link)
  • Scaricare e installare CentOS (versione attuale 5.3) all'interno di una macchina virtuale creata

Non ha senso che io vada a questo c'è probabilmente 1,000 's di tutorial grandi là fuori (ok, eccone uno: Creazione e Managing CentOS macchina virtuale in VirtualBox ). Il punto importante da notare suppongo è che ho chiamato la mia macchina virtuale GridMachine.

Per quanto riguarda le mie scelte di virtualizzazione client e il sistema operativo va non c'è grande motivo convincente per ogni scelta. VirtualBox è una cosa che uso sul mio computer di casa ed è supportato dai tre principali sistemi operativi. Ho scelto CentOS come la sua un buon sistema operativo stabile e lo uso sul mio server web. Sono un grande sostenitore degli strumenti giusti per il lavoro (anche se sto applicando 'utilizzare il più veloce e più facile per te' mentalità qui), quindi se il sistema operativo X eseguito il codice più veloce ed efficiente utilizzo che invece :)

È importante assicurarsi che la VM utilizza DHCP, altrimenti per ogni nuova macchina virtuale dovrebbe essere configurato separatamente che è qualcosa che non want.By utilizzando DHCP non abbiamo bisogno di configurare le impostazioni di rete singolarmente per macchine worker, DHCP consegnerà out IP per voi. Pertanto è possibile copiare la macchina virtuale per l'ufficio, senza preoccuparsi di impostare ognuna up (questo migliora la scalabilità e riduce l'amministrazione lavoratore).

Il processo si dovrebbe cercare di raggiungere sarebbe quello di ottenere una nuova macchina fisica, installare VirtualBox, e quindi più o meno distribuire l'immagine virtuale senza molto altro. Potrebbe essere saggio impostare tutti i lavoratori su una sottorete diversa in modo da poter almeno vedere quante macchine sono in esecuzione. Avrete anche bisogno di impostare le macchine su un contratto di locazione a lungo o indeterminato lease DHCP.

Come eseguire i lavori del lavoratore

Questo è un settore interessante e ci sono diversi metodi validi per l'elaborazione dei processi del lavoratore. Qui mi limiterò a discutere i due più evidenti:

  • Perennemente in esecuzione script: script, sia esso uno script di shell, o uno script PHP viene eseguito una volta il lavoratore e viene eseguito come parte di un ciclo infinito. Ho scontato questo metodo come un crash dello script e potenzialmente i lavoratori cesseranno di funzionare senza un qualche tipo di intervento.
  • L'esecuzione di script basato su Cron: ogni X minuti il ​​demone cron prende il via una chiamata allo script per ottenere le cose. Senza alcun controllo questo potrebbe portare a molte molte copie della vostra corsa lavoratore script.

La mia decisione era quella di andare con cron che prende il via uno script di shell ogni 10 minutes. mio script shell esegue le seguenti operazioni:

  1. Ottenere un elenco dei processi e grep questo per 'php'. Se non lo trova e poi continua.
  2. Chiamate il vostro codice di lavoro, nel mio caso questo sarebbe qualcosa di PHP base
  3. Script di Worker completa la sua corsa
  4. Pronti a partire di nuovo alla prossima chiamata appropriata

Il mio script bash sembra qualcosa di simile al seguente:

  #! / 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"
     php yourJobProcessingScript.php
 fi 

Nota: l'eco sono quasi completamente inutile, ma può aiutare la prossima persona che arriva per cercare di modificarle.

Con questo si conclude il set up della macchina virtuale lavoratore, rapido, semplice e facile da copiare ogni nuovo pezzo di hardware che si riceve. Il 'bravura' del sistema di rete in realtà non è visualizzato nel sistema operativo, è tutto a che fare con il codice creato per i lavori di processo, la configurazione del processo, e nel fare in modo che il processo viene eseguito quando appropriato (cioè quando l'host è inattivo ).

Configurazione di Windows per inizializzare lavoratori

Il primo compito è quello di lavorare il comando necessario per eseguire la macchina virtuale da linea di comando di Windows. Se hai installato VirtualBox nel percorso predefinito e hai chiamato il lavoratore GridMachine allora il comando necessario per caricare il tuo lavoro è la seguente:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

Tuttavia, per eseguire lo script in uno stato 'senza testa' abbiamo bisogno di usare:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxHeadless.exe"-startvm GridMachine - VRDP = off 

Verrà avviata la macchina virtuale senza l'interfaccia grafica e permettono di salvare lo stato con garbo. Il secondo argomento si spegne RDP in modo che non entri in conflitto con le finestre RDP, o dare un messaggio relativo in ascolto sulla porta 3389. Il nome della macchina virtuale è case sensitive!

Quindi, abbiamo bisogno di impostare le finestre fino a dare il via la nostra VM lavoratore una volta che la macchina è rimasta inattiva. Per fare questo (in Windows XP) devi andare Start -> Tutti i programmi -> Accessori -> Utilità di sistema -> Operazioni pianificate come di seguito:

le operazioni pianificate

Successivamente clicca su 'Aggiungi operazione pianificata' seguito da Sfoglia per aggiungere un programma personalizzato. Passare il vostro script VBoxManage e fare clic su ok. Programmare il vostro compito per una qualsiasi delle opzioni (cambieremo questo in un minuto) e continuare. Dopo aver saltato la schermata successiva vi chiederà finestre che si desidera eseguire questo compito, io suggerirei o 'Administrator' o la creazione di un nuovo utente privilegiato. Ricorda che non vogliamo interferire con l'account personale di serie sulla macchina in qualsiasi punto. Fare clic su Avanti e verificare le opzioni delle presentazioni avanzate per questa operazione.

Alla fine della casella di testo run aggiungere il nostro 'startvm GridMachine' string e garantire che funzionano solo quando l'accesso viene lasciato spuntata. Visita la pianificazione di successiva e modificare la pianificazione di discesa l'opzione 'a riposo', scegliere la quantità di tempo che desideri la macchina può rimanere inattivo prima di passare alla scheda successiva.

Infine, deselezionare l'opzione in cui si afferma interrompere l'attività se è stato in esecuzione una quantità X di tempo, ma non selezionare l'opzione per interrompere l'operazione se la macchina non è più inattiva.

programmare

Che è poi per la configurazione host Windows!

Riassunto

In questa parte abbiamo creato una macchina virtuale di agire come un lavoratore, così come il modo in cui noi chiamiamo ed eseguire i nostri script di trasformazione di posti di lavoro (per me uno script PHP). Da qui si guarda a come impostare le nostre copie di Windows per avviare la macchina virtuale in modalità headless quando il computer diventa inattivo, e salvare il suo stato quando l'utente riprende l'uso della macchina. Speriamo a questo punto si sta vedendo come è semplice creare un tale sistema e sono prurito per ottenere alcuni esperimenti da soli andando!

La prossima volta

In parte 4 ci troveremmo di fronte a utilizzare gli strumenti per garantire che si sta eseguendo la versione più recente delle fonti di codice e dati, in modo che i risultati ottenuti siano sempre up-to-date con le ultime informazioni di business e la logica.

Ufficio Grid Computing con gli ambienti virtuali - Parte 1

Con , Venerdì 4 Dicembre, 2009 11:23

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.

Come PHP developer 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 fornirà sarà molto liberamente ispirato al tipo di lavorazione che avevamo bisogno per raggiungere ciò però non può essere vero l'articolo per intero, come farò cambiare le cose per la semplicità, o per produrre scenari di utilizzo più interessanti.

Questi ambienti virtualizzati verrà eseguito su macchine windows in quanto questo è ciò che la maggior parte degli uffici eseguire. Il trattamento che le macchine per ufficio non dovrebbe interferire con il personale l'utilizzo di tali macchine, dovrebbe richiedere alcuna manutenzione alla macchina, ed essere facilmente utilizzabile a nuove macchine man mano che diventano 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 della griglia può essere esteso.

Perché Distribuire un Grid Computing Office?

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

  • Non si affiderà determinati dati in un ambiente di cloud computing
  • Non puoi inserire determinati dati in un ambiente di cloud computing per motivi legali (ad esempio, dati di lasciare il paese), potenzialmente per motivi legali, ad esempio documenti NHS.
  • Si desidera mantenere le unità di elaborazione chiudere e avere il pieno controllo l'hardware troppo
  • Non hai i fondi del progetto di eseguire istanze di cloud
  • Il vostro ufficio non ha una connessione a internet e quindi la sua non è possibile utilizzare una risorsa nuvola
  • Non ti piace la pioggia, le nuvole suggeriscono pioggia, quindi si tiene ben lontano

Sono sicuro che l'elenco potrebbe continuare, ma penso che basta per ora.

Vantaggi di una Grid Computing di Office

Beh, lascia fare un po 'di matematica (e in vero stile fisica permette di fare alcune ipotesi radicali). Immaginate di avere grande beefy del server che esegue l'elaborazione di 100 lavori al giorno. In ufficio si dispone di 50 macchine che sono al minimo 16 ore al giorno, ognuna di queste macchine è del 10% potente come il sever di elaborazione beefy. (Tutti i risultati qui sono arrotondati a sottovalutare aumento delle prestazioni).

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

Se ora questa scala ci vogliono fino a 15 desktop folli per elaborare i processi come molti al giorno, come il server di elaborazione principale fa.

Quindi, nel nostro ufficio finta di 50 macchine potremmo aumentare il nostro potere di trasformazione dal 1 server fino a 4 server di elaborazione completi, o potremmo essere l'elaborazione di 400 lavori al giorno invece di 100.

Avviso, per nessun investimento in hardware nuovo la 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 di ufficio sono stato a macchine sono generalmente lasciati durante la notte in ogni caso, così si potrebbe vedere questa come iniziativa verde.

Altri vantaggi anche significare che gli investimenti in nuove (o aggiornato) server di elaborazione può essere ritardato se le macchine d'ufficio sono sufficienti e che, come si migliora la potenza delle vostre macchine d'ufficio la griglia ufficio diventa più potente automaticamente.

Technologies

Quello che vi serve? (O più correttamente ciò che ho usato):

  • Macchine per ufficio Idle (nel mio caso un ricambio vecchio Windows XP laptop)
  • VirtualBox (o un altro software di virtualizzazione client)
  • Una macchina virtuale con PHP, mySQL running l'esecuzione di un taglio verso il basso OS, sto chiamando questi miei server Limp :)
  • Offerte di lavoro per l'esecuzione
  • Server di lavoro (può essere un'altra macchina virtuale da qualche parte)

Offerte di lavoro tipici

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

  • Sistema riceve un elenco di dati su cui dobbiamo corrispondere e restituire risultati
  • Corrispondenza consiste nel verificare / ricerca diversi (abbastanza statica) fonti di dati
  • I risultati provenienti da fonti di dati può richiedere un'ulteriore conferma, la fusione, la verifica di ulteriori fonti di dati in risposta ai risultati
  • I dati vengono restituiti con i record corrispondenti pienamente convalidati e trasformati
  • Ogni record all'interno di un lavoro è indipendente dal resto

Quindi, fondamentalmente stiamo guardando l'esecuzione di lavori che richiedono una miscela di ricerche nei database e qualche scricchiolio numero, uno scenario abbastanza tipico in un ambiente aziendale.

Le soluzioni di rete non sono solo vantaggioso per l'elaborazione dei lavori di questo tipo. In sostanza, qualsiasi processo che può essere suddivisa in unità indipendenti possono essere eseguiti in parallelo. Vedere questo wikipedia per esempi ed ulteriori 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 costoso o estremamente dispendioso di tempo. Io vado a discutere:

  • Impostazione del sistema di controllo di lavoro, configurazione del processo di
  • Creare una macchina virtuale idoneo trattamento
  • Come impostare il sistema su una macchina Windows
  • Garantire che stai usando l'ultima codice e dati
  • Distribuzione e benchmarking
  • Guardando al futuro

Sarò edificio (ok ho costruito, poi scrisse questo) una applicazione di esempio per testare i concetti su una macchina locale con 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 è in alcun modo lo scopo di dimostrare un sistema completamente funzionante robusta, il suo significato più di una dimostrazione e la discussione mostrando che queste cose può essere raggiunto in uno spazio di tempo ragionevolmente breve e con poca spesa. Non esitate a inviarmi commenti, correzioni o miglioramenti e farò del mio meglio per mantenere questo articolo aggiornato alla corrispondenza.

La prossima volta

In parte 2 inizierò guardando il sistema di controllo del lavoro, e in che modo i posti di lavoro dovrebbe essere configurato in modo da ottenere la massima quantità di elaborazione, assicurando nel contempo che ogni lavoro viene elaborato a colpo sicuro.

Ufficio Grid Computing con gli ambienti virtuali - Parte 2

Con , Venerdì 4 Dicembre, 2009 11:23

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.

Nella Parte 1 ho dato una panoramica del sistema e delle tecnologie userò così come discusso alcune delle possibili motivazioni per cui si vorrebbe creare una griglia ufficio.

Lavoro di controllo

Se avete intenzione di essere in esecuzione i lavori allora stai andando avere bisogno di un modo per gestirli. Il sistema di controllo di lavoro (sul server di lavoro) deve essere molto 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:

  • Distribuire posti di lavoro su richiesta di lavoratori
  • Dillo lavoratori che tipo di lavori da eseguire
  • Tenere traccia dei lavori
  • Assicurarsi che i lavori vengano eseguiti una volta sola
  • Fornire i 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 ad eseguire diversi tipi di lavori come l'azienda vede il valore in una soluzione griglia. Ad esempio, i lavori possono avere priorità, più di un tipo di processo può esistere (ovvero basi di codice diversi), eventualmente si può anche eseguire più macchine worker differenti che sono ottimizzati per ogni tipo di lavoro (anche se questo si allontana dal 'operaio generico 'idea). Cerca sempre di pensare al futuro nello sviluppo di sistemi, di una visione a breve termine può portare a frustrazione a lungo termine e tempi di sviluppo maggiore.

Job Server

Stiamo andando a bisogno di un posto di controllare i nostri lavori da, questo dovrebbe essere l'unico sistema in rete che ha una fissa resource locator, che sia un indirizzo IP, nome host, URL (con DNS interno), ecc Questo è perché I lavoratori hanno bisogno di sapere dove cercare lavoro, i lavoratori hanno bisogno di trovare il sistema di controllo del lavoro (non il sistema di controllo del lavoro a trovare i lavoratori).

Il server di posti di lavoro in sé in realtà non hanno un compito complicato (in un sistema di base comunque), ha bisogno di memorizzare un elenco di posti di lavoro, mano lavoro, ricevere i risultati, e successivamente li memorizza per il successivo recupero. Come queste parti (ad esempio 'mano posti di lavoro') sono definite può essere molto di base. In seguito siamo in grado di estendere il sistema per includere un'interfaccia di amministrazione per aggiungere, modificare, eliminare, sospendere i lavori ma questo è al di là di questo esercizio.

Non vi è alcun motivo quindi che il server di lavoro non potrebbe 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 posti di lavoro però ha bisogno di alta disponibilità, se va giù su un Venerdì sera stai andando a perdere un intero weekend di elaborazione, 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 il 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à costituito da ciò che io chiamo uno dei miei server Bizkit (che è nux Li, m ySql, P HP). Il codice in esecuzione sui lavoratori Thea realmente capire il lavoro che può essere eseguito tramite l'interazione con i database di sistema di controllo dei job. In seguito potremmo creare un servizio web ed effettivamente mano posti di lavoro piuttosto che avere i lavoratori fare il lavoro duro se stessi, ma per ora ci continuare a utilizzare il principio KISS (Keep it Simple, Stupid!).

Quindi, consente di creare tre mySQL tabelle a che fare con posti di lavoro. Questi saranno i `posti di 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 è composta da 5 campi semplici,

  • id: Identificare in modo univoco il lavoro
  • Nome: Potrebbe essere un riferimento per la clientela, o un qualsiasi numero di altri identificatori
  • Status: Hai bisogno di sapere dove il lavoro è, ad 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 dei lavoratori dai loro indirizzi IP sulla rete
  • started_at: Quando il lavoratore avviare il lavoro? Tenendo traccia di lavoro che non hanno completato entro quantità X di tempo sappiamo che abbiamo bisogno di far salire il lavoro ancora una volta e avviare l'elaborazione da 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 permettono di tracciare le statistiche, una colonna tempo finale per vedere quanto tempo il lavoro ha preso, un contatore per vedere quanti lavoratori raccolto il lavoro (ovviamente questo deve tendere alla 1), la priorità del lavoro, l'elenco può continuare a lungo. In scenari di lavoro più complessi sarebbe possibile specificare la quantità di memoria il lavoratore avrebbe avuto bisogno (e quindi utilizzare solo i lavoratori adatti), o anche che tipo di lavoratore sarebbe necessario.

Consente di aggiungere un lavoro alcuni esempi:

esempio di lavoro

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

  • id: ID del record
  • name: nome della persona
  • Indirizzo: indirizzo della persona da
  • jobs_id: L'ID del lavoro che questo record è legata alla

Il tavolo terza e finale consiste di una tabella di risultati, ha la stessa trucco come nostro tavolo record, e con l'aggiunta di alcune colonne potrebbero essere parte del record della tabella:

  • job_record_id: Collegare il risultato al tavolo di lavoro
  • risultato: i dati dei risultati

... E questo è tutto il necessario per il controllo dei job! (Anche se ad un livello molto elementare) Nel mio caso sto indicando 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 detto in precedenza, i lavoratori faremo la nostra gestione dei lavori per noi, per ora, quindi tutto quello che dobbiamo fare davvero è trovare un lavoro che necessita di trattamento e ottenere le informazioni. Come facciamo questo? Bene scegliere i nostri criteri di selezione di lavoro e di cercare lavoro, in SQL ho fatto la seguente:

  1. Prendete tutti i processi che non sono contrassegnati come completa, ma dal nostro lavoratore e ripristinarle (sostituire ME__ __ con un identificatore, più semplice sarebbe indirizzo IP):
      UPDATE `lavoro` SET `status` = 0 WHERE `status` = 1 AND `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 () WHERE `status` OR = 0
     (`Status` = 1 AND `started_at`> DATE_SUB (NOW (), INTERVAL HOUR X)) ORDER BY `id` ASC; 

    Con i lavori afferrare che non hanno restituito risultati in quantità X di tempo ci assicuriamo che tutti i lavori sono eseguiti in caso di un lavoratore crash o andare AWOL.

  3. Avanti afferrare i dettagli posti di lavoro seguiti 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 come completo. Ricordate come posti di lavoro può sospendere / riprendere in qualsiasi 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 di 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 astrarre il controllo del lavoro 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 di sopra di esso.

Job Configurazione

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

  1. Offerte di lavoro prendere 1 giorno ciascuno a correre: Questo significa che i lavoratori hanno bisogno di 15 giorni per elaborare ogni posto di lavoro (ricordate il 10% della potenza per 2/3rds del tempo). Questo chiaramente non è un saggio di configurazione, la dimensione lavoro è troppo grande! Ci vorrebbe almeno il doppio del tempo per ottenere un lavoro elaborato il lavoratore deve prima andare AWOL (tempo di raccogliere che non ha restituito un risultato più tempo ritrattamento). In un ideale che avresti avuto almeno un lavoro a tempo pieno facilmente eliminato entro la fine di ogni lungo periodo di inattività, in questo modo di mantenere i posti di lavoro ticchettio sopra e al peggiore dei casi un lavoro avrebbe preso due giorni per il primo processo dovrebbe andare dispersi.
  2. Offerte di lavoro prende 1 minuto per eseguire: Questo significa che i lavoratori impiegano circa 15 minuti per eseguire ogni lavoro. Anche se questo può inizialmente sembrare ideale, è possibile ottenere ulteriori elaborazioni lavoro durante l'ora di pranzo, coffee break, riunioni, etc questo scenario gravano su altri settori del sistema e presenta i propri problemi. Ad esempio, in primo luogo la configurazione / trasformazione rapporto tempo sta per andare a destra in basso, perdendo così l'efficienza del sistema. La rete sta per essere costantemente informazioni sul processo di streaming per il personale i vari lavoratori frustrante che sono dong il loro lavoro quotidiano. Stai andando anche a mettere più pressione sul vostro server processo di elaborazione in quanto deve servire fuori un sacco di piccoli pezzi di lavoro su base regolare. Infine, in questa situazione se il server va giù di posti di lavoro che stai andando a creare un log enorme dietro il lavoro non completato, mentre più grandi posti di lavoro potrebbe di trattamento continuato beatamente inconsapevoli che il server di lavoro è stato in difficoltà.

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

  • Lavori dimensioni in modo che ogni lavoratore può ottenere attraverso almeno 3-4 posti di lavoro in un periodo di 15 ore (la più lunga del probabile periodo di tempo di inattività)
  • Gioca con la dimensione del lavoro in modo che i tempi di configurazione diventa abbastanza insignificante rispetto al tempo di elaborazione (in considerazione del punto precedente).
  • Se un processo non si completa in doppio la quantità di tempo (forse meno) ci si aspetta di completare la presupporre che il suo AWOL andato e avviare l'elaborazione con un altro lavoratore. Questo 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 non riesce successiva). 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.
  • Offerte di lavoro dovrebbero essere indipendenti al di fuori dei requisiti il ​​più possibile. Il server di lavoro, ad esempio, deve essere contattato all'inizio e alla fine di ogni lavoro.
  • Non saturare la rete, questo avrà due effetti negativi, il personale diurno si trova utilizzando la rete frustrante e problemi possono essere sperimentato con connessioni timeout un problema che potrà solo peggiorare, come si ridimensiona la griglia.
  • Garantire posti di lavoro può essere eseguito su i vostri operai. Se i processi diventano troppo spazio di memoria di lavoro ad alta intensità o disco ad alta intensità inizierà l'interruzione e l'unica cosa che noterete è un calo nel numero dei lavori elaborati senza alcun vero motivo.

Risultati Invio di un lavoro

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

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

Come detto in precedenza, e non può essere superiore a sottolineare, 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 dei tempi e questo deve essere soddisfatti. Inoltre ancora una volta, astraendo 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 molto semplice configurare. 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 dei risultati al server di controllo del lavoro è stato presentato.

  • Un server gestisce il controllo dei job posti di lavoro 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
  • Configurare i processi per assicurare che vengono eseguiti in modo rapido ed efficiente senza mettere troppa pressione sulla vostra infrastruttura di rete, e senza duplicare le operazioni di elaborazione su base regolare.
  • Assicurarsi che si genera tolleranza ai guasti e checking errore nelle vostre routine, i lavoratori possono sospendere e riprendere e il più scomodo dei tempi. Ricordati di controllare se i risultati sono già stati presentati da un altro lavoratore.

La prossima volta

In parte 3 creeremo la nostra macchina virtuale, l'elaborazione e impostare le nostre macchine windows per diventare idle-time.

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

6 visitatori online
5 persone, 1 bot, 0 utenti
Max visitatori oggi: 13 alle 08:46 am UTC
Questo mese: 16 a 2012/01/05 13:02 UTC
Quest'anno: 69 alle 27-02-2012 09:56 am UTC
Tutto il tempo: 130 28-03-2011 alle 10:40 UTC