Posts tagged: virtual

Oficina de Grid Computing utilitzant entorns virtuals - Part 3

Per , divendres 4 desembre 2009 23:37

Introducció

Jo treballo en una empresa on ens trobem molts llocs de treball de processament per lots de milions de registres de dades cada dia i he estat pensant recentment sobre totes les màquines que se sentin al voltant de cada dia sense fer res durant diverses hores. No seria bo si poguéssim utilitzar aquestes màquines per reforçar la capacitat de processament dels nostres sistemes? En aquest conjunt d'articles que vaig a veure els beneficis potencials de l'ocupació d'una oficina de la xarxa utilitzant entorns virtualitzats.

A la part 2 ens fixem en els llocs de treball d'un servidor s'executen, i la quantitat de llocs de treball s'ha de configurar per tal d'aconseguir la major quantitat de processament mentre garanteix que cada treball es processa sens falta.

Configuració del seu treballador - o servidor LIMP

El següent pas en el procés és la creació dels seus treballadors virtuals. Per això vaig a utilitzar una instal · lació de CentOS usant VirtualBox. Vaig a instal · lar MySQL i PHP al servidor, també conegut com una coixesa (Nux Li, m ySQL, P HP) Servera (que pot haver fet que el nom de dalt).

  • Instal · lar VirtualBox en la seva màquina Windows (seguir l'enllaç)
  • Descarregar i instal · lar CentOS (versió actual 5.3) dins d'una màquina virtual creada

No té sentit que m'anava a la qual probablement hi ha 1,000 's de gran tutorials per aquí (bé, aquí està un: Crear i Managing màquina virtual amb VirtualBox CentOS ). El punt important a assenyalar és que suposo que vaig trucar a la meva màquina virtual GridMachine.

Pel que fa a les meves opcions de virtualització del client i el sistema operatiu vagi no hi ha cap raó convincent gran per a cada elecció. VirtualBox és una cosa que jo faig servir a la meva màquina de casa i amb el suport dels tres principals sistemes operatius. Vaig triar CentOS com un sistema operatiu estable, la bona i jo el faig servir al meu propi servidor web. Jo sóc un gran creient en les eines adequades per al treball (encara que estic aplicant la «utilització més ràpida i més fàcil per a vostè" mentalitat d'aquí), així que si el sistema operatiu X s'executa el codi més ràpid i més eficient l'ús que, en lloc :)

És important destacar que assegurar-se que la seva màquina virtual utilitza DHCP, en cas contrari per a cada màquina virtual nova hauria de ser configurat per separat, que és una cosa que no want.By mitjançant DHCP no cal configurar la xarxa de forma individual per a les màquines dels treballadors, DHCP lliurarà a adreces IP per a vostè. Per tant vostè pot copiar la seva màquina virtual de l'oficina sense haver de preocupar de com configurar cada un d'ells cap amunt (això millora l'escalabilitat i disminueix l'administració dels treballadors).

El procés que s'hauria de tractar d'aconseguir seria la d'obtenir una nova màquina física, instal · lació de VirtualBox, i després més o menys implementar la imatge virtual sense necessitat de molt més. Podria ser savi per configurar tots els seus treballadors en una subxarxa diferent perquè pugui almenys veure quantes màquines s'estan executant. També haurà de configurar les seves màquines en un contracte d'arrendament a llarg o il · limitat permís DHCP.

Com executar els treballs en el treballador

Aquesta és una àrea interessant i hi ha diversos mètodes vàlids per al processament de llocs de treball del treballador. Aquí només vaig a parlar sobre els dos més evidents:

  • Perpètuament d'executar la seqüència: Un script, ja sigui un script de shell, o un script PHP s'executa un cop al treballador i s'executa com a part d'un bucle infinit. He descomptat aquest mètode com un xoc de la seqüència de comandaments i, potencialment, els treballadors deixaran de funcionar sense algun tipus d'intervenció.
  • L'execució de script basat en cron: cada X minuts el dimoni cron s'inicia una crida a la seqüència de comandaments perquè funcioni. Sense algunes comprovacions que això podria donar lloc a moltes moltes còpies de la seqüència de comandaments de funcionament dels treballadors.

La meva decisió va ser anar amb cron s'inicia un script de shell cada minutes. 10 El meu script realitza les següents tasques:

  1. Obtingui una llista de processos i grep això per a 'php'. Si no el troba i després continueu.
  2. Truqui al seu codi de treball, en el meu cas això seria quelcom basat PHP
  3. Guió treballador acaba la seva carrera
  4. Llest per anar de nou a la convocatòria corresponent al costat

El meu script bash es veu una mica com el següent:

  #! / Bin / sh
 si ps ax | grep-v grep | grep php> / dev / null
 llavors
     echo "El treball s'està processant, la sortida"
 més
     echo "El treball no s'executa, comença ara"
     php yourJobProcessingScript.php
 fil 

Nota: el ressò del són gairebé completament inútil, però pot ajudar a la propera persona que vingui a tractar de modificar-los.

Amb això conclou la posada en marxa de la màquina virtual de treball, ràpid, simple i fàcil de copiar a cada nova peça de maquinari que es rep. La 'intel · ligència' del sistema de xarxa realment no és visualitzada en el sistema operatiu, el seu tot a veure amb el codi creat per realitzar tasques, la configuració del treball, i en assegurar-se que el treball s'executi en el cas (és a dir, quan el host està inactiu ).

Configuració de Windows per inicialitzar els treballadors

La primera tasca és treballar en el ordre necessària per a executar la màquina virtual des de la línia d'ordres de Windows. Si teniu VirtualBox a la ubicació per defecte i que ha cridat al seu treballador GridMachine l'ordre necessària per carregar fins a la seva treballador és:

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

No obstant això, per a executar l'script en una 'cap' de l'Estat hem de fer servir:

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

Això iniciarà la màquina virtual sense la interfície gràfica d'usuari i permetre que es guardi l'estat amb gràcia. El segon argument s'apaga RDP pel que no entra en conflicte amb Windows RDP, o li donarà un missatge sobre l'escolta al port 3389. El nom de màquina virtual entre majúscules i minúscules!

A continuació, hauràs de configurar les finestres tancades per començar la nostra màquina virtual dels treballadors una vegada que la màquina ha estat inactiva. Per fer això (en Windows XP) hauràs d'anar a Inici -> Tots els programes -> Accessoris -> Eines del sistema -> Tasques programades de la següent manera:

les tasques programades

Després feu clic a "Afegeix tasca programada" seguit per vagi a afegir un programa a mida. Aneu a la seqüència de comandaments VBoxManage i premeu D'acord. Programeu la seva tasca per a qualsevol de les opcions (anem a canviar això en un minut) i continuar. Després de saltar la següent pantalla de Windows li demanarà que es vol executar aquesta tasca, m'agradaria suggerir ja sigui "Administrador" o crear un nou usuari privilegiat. Recordeu que no volem interferir en el compte personal de sèrie en la màquina en qualsevol moment. Feu clic a Següent i comprovar les opcions mostren avançades per a aquesta tasca.

Per al final de la caixa de text d'execució afegir el nostre "startvm GridMachine 'cadena i assegurar que només s'executen quan es connecti es deixa sense marcar. Visita a la tasca de programació que ve i canviar la programació de baixar a l'opció 'quan està en repòs ", seleccioneu la quantitat de temps que li agradaria que la màquina sigui inactiu abans de passar a la següent pestanya.

Finalment desmarqueu la opció que diu aturar la tasca si s'ha estat executant X quantitat de temps, però no marca l'opció per aturar la tasca si la màquina ja no és ociosa.

programar

Això és tot llavors per a la configuració del host de Windows!

Resum

En aquesta part hem posat en marxa una màquina virtual perquè actuï com un treballador, així com la manera com ens truqui i executar els nostres scripts de processament de treballs (per a mi un script PHP). A partir d'aquí veurem com crear les nostres còpies de Windows per posar en marxa la màquina virtual en la manera de cap quan l'ordinador estigui inactiu, i guardar el seu estat quan l'usuari torna a la utilització de la màquina. Esperem que en aquest moment estàs veient el fàcil que és instal · lar aquest sistema i està ansiós per aconseguir alguns experiments es va!

La propera vegada

En la Part 4 estarem buscant en l'ús d'eines per assegurar-se que està executant la darrera versió de les fonts de codi i les dades perquè els resultats obtinguts són sempre al dia amb la informació de negoci i la lògica.

Oficina de Grid Computing utilitzant entorns virtuals - Part 1

Per , divendres 4 desembre 2009 23:23

Introducció

Jo treballo en una empresa on ens trobem molts llocs de treball de processament per lots de milions de registres de dades cada dia i he estat pensant recentment sobre totes les màquines que se sentin al voltant de cada dia sense fer res durant diverses hores. No seria bo si poguéssim utilitzar aquestes màquines per reforçar la capacitat de processament dels nostres sistemes? En aquest conjunt d'articles que vaig a veure els beneficis potencials de l'ocupació d'una oficina de la xarxa utilitzant entorns virtualitzats.

Com PHP desenvolupador que vaig a utilitzar les eines que utilitzo cada dia és a dir, Linux, MySQL , PHP, VirtualBox i Subversion (SVN). No obstant això espero que aquesta guia s'adaptarà a altres idiomes i les tecnologies igual de bé.

La solució que proporcioni serà molt vagament basada en el tipus de processament que anàvem a necessitar per assolir però això no pot ser veritat tot l'article que vaig a canviar les coses per la simplicitat, o per produir escenaris d'ús més interessants.

Aquests entorns virtualitzats es poden executar en màquines Windows ja que això és el que la majoria de les oficines de córrer. El tractament que les màquines d'oficina no ha d'interferir amb el personal amb aquestes màquines, que no requereixen manteniment en la màquina, i ser de fàcil desplegament de noves màquines a mesura que estiguin disponibles. A més, les noves màquines virtuals no requereix cap configuració addicional ja que això redueix en gran manera l'escalabilitat i la facilitat amb què es pot ampliar el sistema de xarxa.

Per què implementar una xarxa de computació d'oficina?

En primer lloc vostè pot estar pensant, per què no utilitzar un recurs de computació en el núvol com plataforma EC2 d'Amazon ? Bé, les raons poden ser diverses, per exemple:

  • No va a confiar a certes dades a un entorn de cloud computing
  • No es pot posar certes dades en un entorn de cloud computing per raons legals (per exemple, dades d'abandonar el país), el que podria, per raons legals, per exemple, registres de l'NHS.
  • Vostè vol mantenir les seves unitats de processament de tancament i tenir un control total sobre el maquinari massa
  • No té els fons del projecte a executar instàncies de núvols
  • La seva oficina no té una connexió a Internet i per tant, que no és possible utilitzar un recurs de núvols
  • No t'agrada la pluja, els núvols suggereixen la pluja, per tant, mantenir-se ben lluny

Estic segur que la llista podria continuar, però crec que és suficient per ara.

Avantatges d'una xarxa de computació d'Office

Bé, anem a fer alguns les matemàtiques (i en cert estil de la física li permet fer algunes suposicions d'escombrat). Imagina que tens gran servidor de processament fornit córrer 100 llocs de treball per dia. A la seva oficina té 50 màquines que estan inactius 16 hores al dia, cadascuna d'aquestes màquines és de 10% tan poderós com el processament de Sever fornit. (Tots els resultats aquí s'arrodoneixen a subestimar augment de rendiment).

Per tant, una màquina d'energia * 10% * 2/3 = 0,067 és a dir, el temps de processament d'un escriptori en el temps d'inactivitat podria processar 6 llocs de treball complets per dia.

Si ara escalar això es requereixen 15 ordinadors d'escriptori d'inactivitat per realitzar tasques de la major quantitat per dia que el servidor de processament principal ho fa.

Així doncs, a la nostra oficina de simulació de 50 màquines podríem augmentar la nostra capacitat de processament d'1 servidor de fins a 4 servidors de processament complet, o podríem estar processant 400 llocs de treball per dia en lloc de 100.

Noteu, la inversió en nou maquinari de l'empresa acaba d'augmentar la seva capacitat de processament per lots 4 vegades! Potencialment, vostè va a augmentar el seu consum d'energia, sinó de la majoria d'entorns d'oficina que he estat a les màquines en general a l'esquerra en la nit de totes maneres, de manera que podria veure això com una iniciativa verda.

Altres avantatges també significa que la inversió en nou (o actualitzat) servidors de processament pot ser retardada si les seves màquines d'oficina són suficients i que a mesura que millora la potència de les seves màquines d'oficina de la seva xarxa d'oficines es torna més poderosa de forma automàtica.

Tecnologies

El que vostè necessita? (O més correctament, què puc utilitzar):

  • Màquines d'oficina Idle (en el meu cas un recanvi vell ordinador portàtil Windows XP)
  • VirtualBox (o un altre programari de client de virtualització)
  • Una màquina virtual amb PHP, MySQL running executant un sistema operatiu de tall cap avall, vaig a trucar a aquests servidors meva coixesa :)
  • Els treballs s'executin
  • Servidor de treball (pot ser una altra màquina virtual en algun lloc)

Treballs típics

Els tipus de treballs que aquest sistema està dissenyat per funcionar és el següent:

  • Sistema rep una llista de dades sobre els que hem de coincidir i retornar els resultats
  • La coincidència consisteix en la comprovació / buscar diverses fonts de dades (bastant estàtic)
  • Els resultats de les fonts de dades poden requerir una major validació, la fusió, el control de fonts de dades addicionals en resposta als resultats
  • Les dades es retornen amb els registres que coincideixen, plenament validada i processada
  • Cada registre dins d'un treball és independent de la resta

Així que, bàsicament estem veient els treballs en execució que requereixen d'una barreja de cerques de bases de dades i alguns processament de nombres, un escenari bastant típic en un entorn empresarial.

Solucions de xarxes no només són avantatjoses per realitzar tasques d'aquest tipus. Bàsicament, qualsevol procés que pot ser dividit en unitats independents es poden executar en paral · lel. Veure aquesta wikipedia per veure exemples i més informació: Grid Computing , però un parell d'exemples famosos són Seti @ Home i BIONC . Existeixen marcs per al funcionament de les xarxes de computació, i aquests estan bé val la pena analitzar.

Què podem fer?

Al final d'aquests articles espere demostrar que el desplegament d'una xarxa d'oficina no ha de ser molt costós o que consumeix temps. Vaig a parlar:

  • Configuració del sistema de control de treball, configuració del treball
  • Creació d'una màquina de processament virtual corresponent
  • Com configurar el sistema en una màquina Windows
  • Vetllar per que utilitzeu l'últim codi i les dades
  • Implementació i avaluació comparativa
  • Amb vista al futur

Vaig a ser la construcció (ok he construït, a continuació, per escriure això) una aplicació d'exemple per posar a prova els conceptes en un equip local amb Windows XP i el meu 'GridMachine' màquina virtual. El meu servidor de control de treball serà la meva màquina principal que corre Fedora 11 .

Això és de cap manera la intenció de demostrar un sistema complet de treball robusta, el seu significat més d'una manifestació i discussió de mostrar que aquestes coses es pot aconseguir en un espai de temps raonablement curt ia un baix cost. Si us plau, no dubti a enviar els seus comentaris, correccions o millores i faré el meu millor esforç per mantenir aquest article actualitzat per a que coincideixi.

La propera vegada

A la part 2 vaig a començar a mirar en el sistema de control de treball, i buscar en la quantitat de llocs de treball s'ha de configurar per tal d'aconseguir la major quantitat de processament mentre garanteix que cada treball es processa sens falta.

Oficina de Grid Computing utilitzant entorns virtuals - Part 2

Per , divendres 4 desembre 2009 23:23

Introducció

Jo treballo en una empresa on ens trobem molts llocs de treball de processament per lots de milions de registres de dades cada dia i he estat pensant recentment sobre totes les màquines que se sentin al voltant de cada dia sense fer res durant diverses hores. No seria bo si poguéssim utilitzar aquestes màquines per reforçar la capacitat de processament dels nostres sistemes? En aquest conjunt d'articles que vaig a veure els beneficis potencials de l'ocupació d'una oficina de la xarxa utilitzant entorns virtualitzats.

A la part 1 em va donar una visió general del sistema i les tecnologies que utilitzarà, així com es discuteix algunes de les possibles raons per les quals es vol crear una xarxa d'oficines.

Control de Tasques

Si vostè estarà executant treballs llavors vostè va a necessitar una certa manera de gestionar-los. El seu sistema de control de treballs (en el seu servidor de treball) ha de ser molt ben pensat, fins i tot abans d'intentar executar una xarxa d'oficines. Així, en primer lloc, quines són les tasques d'un sistema de control de treball:

  • Repartir llocs de treball a petició dels treballadors
  • Digueu als treballadors quin tipus de treballs s'executin
  • Seguiment dels treballs
  • Assegureu-vos que els treballs només s'executarà un cop
  • Proporcionar les dades d'ocupació als treballadors, o almenys els digui on aconseguir-

El sistema també ha de ser extensible, una solució que funciona per ara en un sol cas pot ser ampliat per executar diversos tipus de llocs de treball com el negoci veu la pena en una solució de xarxa. Per exemple, els treballs poden tenir prioritats, més d'un tipus de treball pot existir (és a dir, les bases de codi de diversos), amb el temps fins i tot es pot executar diverses màquines diferents dels treballadors que estan optimitzats per a cada tipus de treball (tot i que es mou lluny del treballador "genèric idea). Sempre intento pensar en el futur, quan el desenvolupament de sistemes, una visió a curt termini pot conduir a la frustració a llarg termini i el temps de desenvolupament major.

Servidor de tasques de

Anem a necessitar un lloc per controlar els nostres llocs de treball a partir, aquest ha de ser l'únic sistema de la xarxa que té un localitzador de recursos fixos, ja sigui una adreça IP, nom d'amfitrió, l'adreça URL (usant DNS intern), etc Això és perquè els treballadors han de saber on buscar feina, els treballadors necessiten per trobar el sistema de control de treballs (no el sistema de control de treball de trobar als treballadors).

El servidor de treball en si no té realment una tasca complicada (en un sistema bàsic de tota manera), cal emmagatzemar una llista de llocs de treball, repartir llocs de treball, rebre els resultats, i posteriorment emmagatzemar per a la seva posterior recuperació. Com aquestes parts (per exemple, 'mà llocs de treball ") es defineixen poden ser molt bàsiques. Més endavant podem ampliar el sistema per incloure una interfície d'administració per afegir, editar, eliminar, suspendre llocs de treball, però això està més enllà d'aquest exercici.

No hi ha cap raó que sigui llavors quan el seu servidor de treball no pot ser una màquina virtual s'executa al servidor de processament principal, sempre que no drena massa recursos de la mateixa. El servidor de treball però cal una alta disponibilitat, si es cau en un divendres a la nit perdràs un cap de setmana de tractament, el que podria costar-li un parell de setmanes de temps de processament (en comparació amb el servidor de processament principal només) . És possible que vulgueu considerar la possibilitat del seu servidor de treball en un entorn d'equilibri de càrrega d'alta disponibilitat.

Configuració bàsica

La configuració bàsica del nostre servidor de treball consistirà en el que estic trucant a un dels meus servidors Bizkit (que és Linux Li, m ySql, P HP). El codi que s'executa en els treballadors thea realment esbrinar quins llocs de treball que es pot executar mitjançant la interacció amb bases de dades amb l'ús de sistemes de control. Més endavant es podria crear un servei web i la mà en realitat a llocs de treball en lloc de tenir als treballadors fer la feina dura sí, però per ara seguirem utilitzant el principi KISS (Keep It Simple, Stupid!).

Per tant, anem a crear tres mySQL per fer front a les taules de llocs de treball. Aquests seran llocs de treball ``, `jobRecords`, i `jobResults`.

llocs de treball de taula Aquí estic usant SQL Buddy una gran alternativa a poc a phpMyAdmin només perquè és més fàcil d'instal · lar en CentOS (perquè altres vegin: 10 grans alternatives a phpMyAdmin )

Aquesta taula es compon de 5 camps simples,

  • Identificació: identificar en forma única el treball
  • Nom: Podria ser una referència client, o qualsevol nombre d'altres identificadors
  • Estat: Cal saber on és el treball és menys, per exemple,
    • 0: No s'ha iniciat
    • 1: Recollit
    • 2: Completa
  • started_by: Qui ha començat a fer la feina? Això no és del tot necessari, però és un agradable de tenir. Et suggereixo que els treballadors de seguiment per la seva adreça IP a la xarxa
  • started_at: Quan el treballador iniciar el treball? Mitjançant el seguiment dels treballs que no hagin completat dins de X quantitat de temps que sabem que necessitem per recollir el treball de nou i començar a processar per un altre treballador. Els treballadors podrien aturar el processament / go en línia per a qualsevol nombre de raons, falta de llum, accident, pèrdua de xarxa, etc

És fàcil com aquesta taula es pot ampliar amb alguns camps addicionals per permetre el seguiment de les estadístiques, una columna de temps d'arribada per veure quant temps va prendre el treball, un comptador per veure quants treballadors va prendre el lloc de treball (òbviament, això té que tendeixen a 1), prioritat del treball, la llista pot seguir i seguir. En els escenaris de treball més complexos seria possible passar la quantitat de memòria que el treballador hauria de tenir accés a (i per tant, només utilitzen els treballadors adequats), o fins i tot quin tipus de treballador es requereix.

Permet afegir unes poques ocupacions exemple:

llocs de treball d'exemple

La taula següent de nou és bastant senzill d'entendre, aquests són els nostres registres de treballs. Estan vinculats a la taula de treball principal per una columna de `jobs_id`. La composició d'aquesta taula depèn molt de les dades que necessita per proveir els seus treballadors, farem un exemple molt simple, on tenim quatre columnes:

  • Identificació: Identificació de l'expedient
  • Nom: Nom de la persona
  • Direcció: Direcció de la Persona
  • jobs_id: 'Identificador de treball que aquest disc està lligat a

La taula de la tercera i última consisteix en una taula de resultats, es té molt el mateix constitueixen com la nostra taula de registres, i amb l'addició d'algunes columnes podria ser part de la taula de registres:

  • job_record_id: Vincular el resultat a la taula de treball
  • Resultat: Les dades dels resultats

... I això és tot el que necessites per al control del treball! (Encara que a un nivell molt bàsic) En el meu cas estic assenyalar a una altra taula on les meves dades en el procés es troba, però això podria fàcilment un arxiu d'estat, els paràmetres per a executar codi de simulació, el que sigui.

Selecció d'un lloc de treball

Com es va esmentar anteriorment, els treballadors a fer la nostra gestió de treball per a nosaltres, per ara, així que tot el que hem de fer realment és trobar una feina que necessita tractament i obtenir la informació. Com fem això? Bé triar als nostres criteris de selecció d'ocupació i buscar feina, en SQL vaig fer el següent:

  1. Prengui tots els llocs de treball que no estan marcats com completa, però des del nostre treball i recuperar els (substituïu ME__ __ amb un identificador més fàcil, seria l'adreça IP):
     UPDATE `jobs` SET `status` = 0 WHERE `status` = 1 AND `started_by` = __ME__; 
  2. Using our job selection criteria, select a job and tell the control system that this worker is dealing with it:
     UPDATE `jobs` SET `status` = 1, `started_by` = __ME__, `started_at` = NOW() WHERE `status` = 0 OR
    (`status` = 1 AND `started_at` > DATE_SUB(NOW(), INTERVAL X HOUR)) ORDER BY `id` ASC; 

    By grabbing jobs that haven't returned results in X amount of time we ensure that all jobs are run in the event of a worker crashing or going AWOL.

  3. Next grab the jobs details followed by the records themselves:
     SELECT * FROM `jobs` WHERE `started_by` = __ME__ LIMIT 1;
    SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Upon completion of the job we insert our result records and mark the job as complete. Remember as jobs can suspend/resume at any time allow for some robustness in your script. It might be that the task suspends half way through updating the job control system, so checking the number of records in a job and the number of results saved back to the job control system would be a wise move.

In addition, whilst this demonstrates how jobs can be selected and managed from an SQL-query frame you should really be abstracting your job control so that if you decide to switch to using a web service, a file based system, XML , or any other number of systems it will not affect the code above it.

Job Configuration

The next aspect to consider is job size and configuration. By playing with job configuration we can strike an excellent balance between speed, process replication, and reliability. Take a couple of scenarios:

  1. Jobs take 1 day each to run: This means that your workers need 15 days to process each job (remember 10% of the power for 2/3rds of the time). This is clearly not a wise configuration, your job size is way too big! It would take at least double the time to get a job processed should the initial worker go AWOL (time to pick up that it hasn't returned a result plus reprocessing time). In an ideal you'd have at least one full job easily cleared by the end of each long idle period, that way you keep the jobs ticking over and at worst case a job would take two days to process should the first go missing.
  2. Jobs take 1 minute to run: This means that your workers take about 15 minutes to run each job. Whilst this may initially seem ideal, you gain additional work processing during lunch time, coffee breaks, meetings, etc this scenario puts strain on other areas of your system and introduces its own problems. For example, firstly your setup/processing time ratio is going to go right down, therefore losing system efficiency. Your network is going to be constantly streaming job information to the various workers frustrating staff who are dong their day to day work. You're also going to put more strain on your job processing server as it has to dish out lots and lots of small pieces of work on a regular basis. Lastly, in this situation if your job server goes down you're going to create a huge back log of uncompleted work whereas bigger jobs could of continued processing blissfully unaware that the job server was experiencing difficulties.

In reality there will be no one ideal configuration for your grid setup, much depends on the available resources, types of job, job turnaround time requirements, network capability, and so on. However some guidelines would be:

  • Size jobs so that each worker can get through at least 3-4 jobs in a period of 15 hours (the longest likely idle time period)
  • Play with the job size so that setup time becomes fairly insignificant compared to the processing time (bearing in mind the above point).
  • If a job doesn't complete in double the amount of time (maybe less) you expect it to complete it assume that its gone AWOL and start processing it with another worker. This means you may have to wait up to three times the normal length of a job for it to complete (possibly longer if the subsequent job fails). You may want to reduce this time, but be careful not to reduce it too much as you may start duplicating processing tasks on a regular basis.
  • Jobs should be independent of outside requirements as much as possible. The job server, for example, should only be contacted at the start and end of every job.
  • Don't saturate your network, this will have two negative effects, your daytime staff will find using the network frustrating and problems may be experienced with connections timing out a problem that will only get worse as you scale your grid.
  • Ensure jobs can run on your workers. If jobs become too memory intensive or disk space intensive jobs will start aborting and the only thing you'll notice is a drop in number of jobs processed with no real reason why.

Submitting Results of a Job

When submitting the results of a job it is important to check that results have not been submitted by another worker, especially if the current worker has been dormant for some time.

When results are submitted ensure that the number of results matches the number of records within the job.

As stated previously, and can not be over emphasised, build fault tolerance into job retrieval and results submission. The workers can (and most likely will) go into suspend mode at the most inconvenient of times and this needs to be catered for. Also once again abstracting away your results submission will help cater for future changes to your job control system much easier to deal with.

Resum

In this section we have looked at what a job control server needs to do and how to get a very basic system set up. We discussed how to retrieve a job from the control system and how best to configure jobs to get the most our of your office grid system. To finish, a paragraph or two on submitting results back to the job control server was presented.

  • A job control server manages jobs and ensures that all work units are completed
  • By abstracting your job select/results submission we can change the technology of the control server without much problems
  • Configure your jobs to ensure that they are run quickly and efficiently without putting too much pressure on your network infrastructure, and without duplicating processing tasks on a regular basis.
  • Ensure that you build fault tolerance and error checking into your routines, workers can suspend and resume and the most inconvenient of times. Remember to check if results have already been submitted by another worker.

Next time

A la part 3 anem a crear la nostra màquina virtual de processament i establir les nostres màquines Windows per convertir-se en treballadors a temps d'inactivitat.

Oficina de Grid Computing utilitzant entorns virtuals - Part 5

Per , divendres 4 desembre 2009 23:03

Introducció

Jo treballo en una empresa on ens trobem molts llocs de treball de processament per lots de milions de registres de dades cada dia i he estat pensant recentment sobre totes les màquines que se sentin al voltant de cada dia sense fer res durant diverses hores. No seria bo si poguéssim utilitzar aquestes màquines per reforçar la capacitat de processament dels nostres sistemes? En aquest conjunt d'articles que vaig a veure els beneficis potencials de l'ocupació d'una oficina de la xarxa utilitzant entorns virtualitzats.

En la Part 4 es va observar l'ús d'eines per assegurar que s'està executant la última versió de les fonts de codi i les dades perquè els resultats obtinguts són sempre al dia amb la informació de negoci i la lògica.

Prèvia al desplegament

Abans d'implementar el sistema de xarxa, si hi ha una cosa que fer i una sola cosa és comparar vostre sistema! No importa el que diuen els seus col · legues sobre la quantitat de treball extra que el seu sistema farà si no és que tingui els números per donar suport al que les seves garanties no són res més. Així,

  • nombre de registres que pot processar en l'actualitat? Per dia? Per hora?
  • Quant de temps solen trigar a fer la volta un lloc de treball?
  • Quant més la capacitat té?

També hi ha preguntes addicionals:

  • Si el seu servidor de processament (o un dels servidors de processament) es cau, com afecta això a les seves capacitats, estarà paralitzat?
  • Quins avantatges espera / espera obtenir d'un sistema de xarxa?
  • Són les seves màquines d'oficina capaç d'executar els treballs?
  • Està vostè (o pot ser convertida llocs de treball) per wrok en aquest estil de córrer?

El principal punt últim és portar un temps en qualsevol canvi d'aquesta envergadura. Actualitzeu el codi de processament per treballar amb la nova metodologia de referència, un cop més. És possible que configurar el servidor de processament per executar una màquina virtual, després del seu processament de tots els servidors acaba de ser un altre treballador (només un molt poderós relativament). Deixeu que el nou procés per resoldre.

Desplegament

El meu suggeriment seria fer esclatar a l'oficina d'un cap de setmana realitzar totes les instal · lacions i la configuració. És això just abans de quinze dies de vacances i deixar per a un altre pobre home per fer front a les conseqüències potser no ......

Implementació d'un sistema com aquest ha de ser lenta. Tot i ser relativament fàcil de configurar aquest sistema afectarà a la infraestructura de tota l'oficina (i el digital). En primer lloc, llançar un parell de màquines al mateix temps, el tràfic de monitor de xarxa, com els amfitrions dels treballadors realitzen en el dia a dia. Potser haureu de modificar la configuració del seu treball en resposta a les troballes.

Un cop el sistema s'ha assentat amb unes poques màquines (diguem el 10% de totes les màquines d'oficina, és a dir, 5) mantenir la vigilància del trànsit de xarxa i màquina host de referència performance. Següent de nou, ara s'ha de processar els treballs d'un 33% més que els seus punts de referència en primer lloc. Comproveu això és així, o que ets si més no en aquest estadi. Si no és així, investigar el que està passant abans de seguir endavant. Repetiu aquest cicle fins que feliçment han totes les màquines d'oficina funcionant sense matar rendiment de la màquina individual o de mòlta de la xarxa a un punt mort.

En tot moment mantingui l'avaluació comparativa, fins i tot després de totes les implementacions es fan. Consulteu com les noves actualitzacions de codi afecten la velocitat del seu sistema, comprovi tots els treballadors estan informant i realitzar tasques. A poc a poc (molt lentament) Increment de la configuració del seu treball per obtenir el millor dels seus treballadors i de la xarxa.

Atura't!

Què passa si vostè vol evitar que els seus treballadors s'executin en algun moment? Tots ells estan corrent per aquí, la regeneració, i fent tot el possible per processar les dades com els insectes famolencs. La resposta pot semblar obvi, però val la pena afegir en cas del seu passat per alt. Només cal editar el script de processament amb una sortida (0) or die () o una altra declaració de matar al seu treball de processament. Una raó important per la qual sempre intentem actualitzar a l'última seqüència de comandaments de processament abans de córrer!

Demostració del sistema

Per escriure aquesta sèrie d'articles curts que he creat una xarxa molt petita per demostrar les tecnologies i metodologies. He llegit un munt d'articles, tutorials, i utilitza diverses eines per configurar i monitoritzar el que estava passant. De cap manera he sortit i saturat d'una oficina sencera amb el trànsit i ni he tingut accés a un personal permanent dels membres de PC per veure com el rendiment d'acollida es va veure afectada.

El meu sistema de demostració era molt humil per cert. Vaig utilitzar el meu escriptori normal de configurar com un servidor de control de treball. En aquesta havia instal · lat MySQL server instal · lat configura com un mestre en la replicació, PHP , Â i SVN vinculats a través d' apatxe (per l'accés a través de VM dels treballadors).

Llavors va crear una màquina de treball CentOS en VirtualBox a un fill de 6 anys portàtil amb Windows XP. Puc configurar les tasques programades com s'especifica després de copiar la màquina virtual a la màquina i la va deixar anar.

La màquina virtual es va crear amb PHP, la subversió, i mySQL. Vaig revisar una branca anomenada "treballador" del meu repositori de control de treball de servidors i es va assegurar que podria ser actualitzada amb 'svn update'. A continuació he de instal · lar MySQL com un esclau i comprovar que les dades es replica de MySQL al servidor de control de treball fins a la màquina virtual dels treballadors. Després de tot això he de instal · lar el script i el treball de cron.

El meu script de processament, bàsicament, es va anar al llarg de les línies d'aquest material (molt simple):

  • Llegir al camp Nom
  • Va comptar el nombre de noms similars en una taula de la font d'informació que obri en la màquina virtual
  • Va comptar el nombre de noms que l'anterior però la divisió del nom per espais (és a dir, nom, mitjà, cognom)
  • Repeteix aquest procés 1.000 vegades

Cada lloc de treball va prendre aproximadament 20 minuts per córrer. En un moment vaig obrir diverses còpies de la màquina virtual de treball al 'ordinador portàtil finestres i va observar als llocs de treball pot realitzar la sessió per cadascuna de les adreces IP dels treballadors. En aquest punt, també va confirmar que la replicació es reiniciarà.

Deixar l'ordinador portàtil al ralentí com a resultat un treballador de començar a realitzar tasques des del servidor de control de treball. En reprendre l'ús de l'ordinador portàtil es va produir un retard d'uns 30-60 segons, es tracta d'una bona quantitat de temps i el personal hauria de ser conscients que el vostre ordinador permet fer una pausa per un curt temps en tornar a la màquina. Les noves màquines no poden tenir una pausa d'aquest temps. El benefici de la quantitat de processament realitzat per aquestes màquines durant períodes d'inactivitat que més que compensen els membres del personal han hagut d'esperar un període curt (per exemple 1 minut) en arribar a les seves màquines del matí (jo sovint esperar més que això per a un Windows Defensar actualitzar a tenir lloc), sempre que es van fer conscients (temps útil per prendre un cafè al matí!).

En general em sento segur que m'han demostrat les tecnologies que es podrien utilitzar per crear aquest sistema. He demostrat que aquest sistema funciona en una escala de (molt) petita i amb una mica més l'experimentació podria ser ampliat a utilitzar els recursos de les màquines d'una oficina. Si no arriben al punt de fer això jo estaria molt interessat en saber / veure si algú més ho fa.

Conclusions i avaluació

El següent pas lògic seria fer que un exemple del món real i començar a implementar un sistema com aquest dins d'un entorn d'oficina i veure què passa. Demanar-li a un negoci que es comprometin a això sense una companyia d'obrir camins per provar la tecnologia i l'eficàcia pot ser una mica difícil. Grid / computació distribuïda és molt popular entre alguns cercles és i té algunes aplicacions de grans dimensions (BIONC, SETI @ home, Folding @ Home, etc.) No obstant això, trobar un format més petit i simple sistema com aquest en les meves recerques que hauran de posar en marxa dins d'un entorn d'oficina.

He creat un sistema bàsicament gratuïts utilitzant programari de codi obert i les eines disponibles en gairebé qualsevol oficina. Les tecnologies van ser demostrades i mostrar bàsicament per realitzar i treballar com s'esperava. Espero que demostren que amb el treball no és molt i amb una configuració molt simple que vostè pot implementar una xarxa d'oficines del sistema de computació que és de gran abast, una barata i escalable, tot alhora.

Quan el sistema està en marxa i funcionant gairebé no hi ha fi a la quantitat de personalització i millores que pot fer. Per exemple les estadístiques / avaluació comparativa es poden afegir fàcilment que mostra el valor d'aquest sistema cada dia. Les noves màquines es poden afegir de forma ràpida i amb la mateixa facilitat i quan arriben amb les actualitzacions per al maquinari existent reforçar la seva potència de processament.

Espero que hagis gaudit de la lectura d'aquesta sèrie d'articles i el seu fet pensar en el funcionament d'un sistema de xarxa d'oficines. La solució que aquí es presenta no necessàriament funcionarà en totes les situacions, però ha de ser adaptable perquè pugui obtenir el seu processament de dades es van realitzar amb la seva pròpia solució.

Si us plau, no dubti a enviar els seus comentaris, correccions o millores i faré el meu millor esforç per mantenir aquest article actualitzat per a que coincideixi.













Panorama Theme by Themocracy

5 visitors online now
4 persones, 1 bots, 0 usuari
Capacitat màxima de visitants d'avui: 10 a les 01:30 UTC
Aquest mes: 26 a 2012.04.04 22:27 UTC
Aquest any: 69 a 2012.02.27 09:56 UTC
All time: 130 at 28-03-2011 10:40 pm UTC