Posts tagged: per lots

Oficina de Grid Computing utilitzant entorns virtuals - Part 4

Per , divendres 4 desembre 2009 23:59

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 3 que hem creat la nostra màquina de processament virtual i configurar màquines de les finestres per esdevenir treballadors a temps d'inactivitat.

Executar l'últim codi

Inevitablement, després de crear la lògica empresarial els treballadors canviarà, els insectes es troba, el codi més ràpid i eficient es produeix el que deixa als seus treballadors es van asseure al voltant de processament de dades mitjançant codi de olorós vell . Llavors, com ens assegurem que sempre estem usant la versió més recent i més gran dels nostres scripts de processament?

Hi ha unes quantes formes senzilles molt fàcil que podríem fer això, el truc, però, és reduir la potència de processament i tràfic de la xarxa per aconseguir això. Anem a començar amb el més simple de les solucions i millorar a poc a poc durant un parell d'iteracions.

El primer mètode seria simplement connectar al nostre servidor de control de treball (a través de samba, FTP, o similar) i baixar l'última versió del codi. No és molt eficient, però farà el treball. Millorarem en això una mica, què hi ha de la creació d'un script de rsync i l'ús que cada vegada que en el seu lloc? D'altra banda què hi ha de posar la nostra última seqüència de comandaments de transformació en la subversió revisant el codi al principi i després només l'actualització del nostre codi en cada cursa ( svn update )?

Al final, podria acabar amb un script bash (anomenat per cron cada 10 minuts), que sembla tan simple com això:

  #! / 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"
     cd / camí / a / treball / còpia
     svn update
     php yourJobProcessingScript.php
 fil 

Ara podem estar segurs que amb cada carrera que definitivament estem executant el codi més recent. Estem garantint la present mitjançant l'actualització de la nostra base de codi de temps tots i cadascun portem a terme una carrera i la reducció de trànsit de la xarxa transferint únicament les diferències d'arxius a través de la nostra xarxa.

En la meva configuració de demostració, ho vaig fer exactament com abans. Subversion s'ha instal · lat en el meu servidor de processament de la tasca i simplement va treure l'última versió del codi d'un "treballador" Poder utilitzar 'svn update'. També he afegit una etiqueta de nombre de versió del meu script de transformació que va ser retornat a la base de dades com a part de la devolució de resultats. D'aquesta manera vaig poder veure que el meu codi s'actualitza cada vegada que he copiat el meu tronc en la branca dels treballadors, és a dir que jo estava definitivament d'executar la seqüència de processament més avançada.

Utilitzant les últimes dades

Si el processament de la tasca fa ús de les fonts de dades a continuació, en algun moment aquests seran actualitzat també. A menys que vostè truqui a les seves fonts de dades sobre una base molt poc freqüent que va a inundar la xarxa amb el trànsit tan aviat com els treballadors començaran a portar tot a un punt mort. Per a mi solució, vaig decidir que m'agradaria moure les meves fonts de dades amb els meus màquines virtuals.

Mantingui ets cavalls allà, què passa si les meves fonts d'informació són enormes? Bé, això realment és un cas de quantitat de dades que estem parlant? Pot ser més rendible instal · lar una addicional en el disc dur de major capacitat en cada màquina de comprar un servidor de processament addicional. Es tracta d'una qüestió de pressupost i correspon a l'empresa per decidir. És potser que les seves fonts de dades són tan grans que és només factible per mantenir aquesta quantitat de dades en les màquines dels seus treballadors. En aquest cas, què faries? Bé podríem considerar trucar a un servidor de dades local, però això podria causar problemes a la xarxa. En aquest cas un sistema de reixeta tal com això pot arribar a ser poc realista per incloure en el seu entorn d'oficina. També pot ser que vostè pot mirar en altres estratègies d'execució, per exemple, només trucar als seus treballadors 8 p.m.-06 a.m. cada nit i / o de limitació de les sol · licituds d'origen de dades.

Passant diguem que les nostres dades la quantitat de fonts de 100 Gb de dades. Bé, sí que és una mica de les dades per moure per la xarxa en una actualització. Com ens assegurem que tenim l'última còpia de les dades en aquest cas? Rsync és una possibilitat, però personalment crec que mitjançant l'execució de la seva última font de dades al servidor de processament de la tasca i configurar-lo com un mestre en la replicació (amb un registre de bin ben llarga) podria ser el camí a seguir:

replicació En establir cadascun dels seus treballadors com un esclau de les actualitzacions del servidor de control de treball a les seves fonts de dades tinguin un efecte positiu molt bé als seus treballadors sense un gran augment en l'activitat de xarxa (és a dir, a menys que realitzi una actualització de dades enormes i tots els treballadors entren en joc alhora). Això té avantatges respecte a rsync en què no s'obtindria d'una llarga pausa abans de cada treball, com les actualitzacions de base de dades, el mysql dimoni en el seu treball contínuament actualitzar les seves dades, mentre que el procés continua.

Així és com puc configurar el meu servidor de demostració. Per configurar la replicació He seguit la guia en el lloc de MySQL ( Configuració de la replicació ) i en 20 minuts vaig tenir al meu treballador inital replicar el treball de control de servidors de conjunt de dades. Per cada treballador addicional dels paràmetres de replicació i el procés de treball cada vegada que la màquina virtual s'ha copiat.

Resum

En aquesta secció de l'article, hem vist el fàcil i indolor que és mantenir el codi de processament fins avui per rsync using o subverion (SVN) per fer la feina i reduir el tràfic de xarxa en la mateixa time. També parlem sobre la forma per mantenir la seva informació de la font de dades posada al dia pel que li arribin a cadascun dels seus treballadors. Així, la zona assegurant que complim amb la lògica de negoci i la informació al nostre sistema de xarxa de l'oficina. Hi haurà, òbviament, hi ha diverses alternatives per realitzar aquestes tasques, però aquí són dos exemples simples per demostrar com és fàcil és una solució d'aconseguir.

La propera vegada

A la part final d'aquesta sèrie, ben anomenada la part 5 , anem a parlar de la implementació d'aquest sistema. Vaig a resumir el que s'ha après i el que he aconseguit crear.

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 pot per raons legals, per exemple, els 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, diverses bases de codi), 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 `llocs de treball` SET `status` = 0 on `status` = 1 `I` = __ started_by ME__; 
  2. Utilitzant els criteris de selecció de treball, seleccioneu una feina i dir-li al sistema de control que aquest treballador es tracta que:
      UPDATE `llocs de treball` SET `status` = 1, `started_by` = __ ME__, `started_at` = NOW () a on `status` = 0 o
     (`Status` = 1 `I` started_at> DATE_SUB (NOW (), interval d'una hora X)) ORDER BY `id` ASC; 

    Per treballs que anomenen la qual no han retornat els resultats en X quantitat de temps que ens assegurem que tots els treballs s'executen en el cas d'un treballador es caigui o absentar-se sense permís.

  3. A continuació prendre les dades de llocs de treball seguit pels mateixos registres:
      SELECT * FROM `llocs de treball` WHERE `started_by` = __ ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __ JOBID__; 

Un cop finalitzat el treball que inserir els nostres registres de resultats i marcar el treball el més complet. Recordeu que com a llocs de treball es pot suspendre / reprendre en qualsevol moment i permetre certa solidesa en el seu guió. Pot ser que suspèn la tasca a mig camí a través de l'actualització del sistema de control de treballs per comprovar el nombre de registres en un lloc de treball i el nombre de resultats guardats de tornada al sistema de control de treball seria un encert.

A més, si bé això demostra com els treballs es poden seleccionar i gestionar des d'un marc de consulta SQL que realment s'ha de abstreure del seu control sobre el treball de manera que si vostè decideix passar a utilitzar un servei web, un sistema de fitxers basat en XML , o qualsevol altre nombre de sistemes que no afectarà el codi sobre.

Tasca de configuració

El següent aspecte a considerar és la grandària del treball i la configuració. En jugar amb la configuració del treball que es pot aconseguir un excel · lent equilibri entre la velocitat, el procés de replicació, i la fiabilitat. Prengui un parell d'escenaris OFA:

  1. Ofertes de feina prendre 1 cada dia per funcionar: Això significa que els seus treballadors necessiten 15 dies per processar cada lloc de treball (recordeu que el 10% de l'energia per 2/3rds de l'època). Això clarament no és una bona configuració, la mida del seu treball és massa gran! Es necessitaria almenys el doble de temps per aconseguir una feina processat si el treballador s'absenten sense permís inicial (temps per recollir que no ha retornat un resultat més el temps de reprocessament). En un ideal que tindria com a mínim una feina de jornada completa facilitat el clar al final de cada període d'inactivitat, d'aquesta manera a mantenir els llocs de treball marcant més i en el pitjor cas, un treball que prendria dos dies per al procés si el primer faltaran.
  2. Ofertes de feina prendre 1 minut per córrer: Això significa que els seus treballadors dura uns 15 minuts per a executar cada treball. Si bé aquest principi pot semblar ideal, guany de processament de treball addicional durant l'hora de dinar, coffee break, reunions, etc aquest escenari posa la tensió en altres àrees del seu sistema i presenta els seus propis problemes. Per exemple, en primer lloc la configuració de / processament relació de temps anirà a la dreta cap avall, per tant perdre l'eficiència del sistema. La xarxa serà la informació del treball constant de transmissió al personal dels treballadors de diversos frustrants que són dong del seu treball del dia a dia. També vas a posar més esforç en el seu treball com a servidor de processament que ha de repartir un munt de trossos petits de treball sobre una base regular. Finalment, en aquesta situació si el servidor de treball de baixa que vas a crear un registre de nou molta feina sense acabar, mentre que treballs més grans podria, va continuar el processament feliçment ignorant que el servidor de treball estava experimentant dificultats.

En realitat no hi haurà una configuració ideal per a la configuració de la xarxa, molt depèn dels recursos disponibles, els tipus de treball, els requisits de treball de lliurament a temps, la capacitat de la xarxa, i així successivament. No obstant això, algunes pautes serien els següents:

  • Treballs de mida de manera que cada treballador pot obtenir a través de llocs de treball almenys 3-4 en un període de 15 hores (el més llarg període de temps d'inactivitat és probable)
  • Juga amb la grandària del treball de manera que el temps de preparació arriba a ser bastant insignificant en comparació amb el temps de processament (tenint en compte el punt anterior).
  • Si un treball no es completa en el doble de la quantitat de temps (potser menys) que espera que es completi d'assumir que el seu AWOL anat i començar a processar amb un altre treballador. Això significa que vostè pot haver d'esperar fins a tres vegades la longitud normal d'un lloc de treball a que es completi (possiblement més si la feina de fallar). Potser voleu reduir aquest temps, però vés amb compte de no reduir massa com vostè pot començar a duplicar les tasques de processament en una base regular.
  • Ofertes de feina ha de ser independent de les necessitats externes, tant com sigui possible. El servidor de treball, per exemple, només s'ha de contactar a l'inici i al final de cada treball.
  • No saturi la seva xarxa, això tindrà dos efectes negatius, al seu personal durant el dia es troba amb la xarxa de frustració i els problemes es poden experimentar amb les connexions el temps d'espera d'un problema que només empitjorarà a mesura que ampliar la seva xarxa.
  • Assegureu-vos de llocs de treball es pot executar en els seus treballadors. Si els treballs es tornen massa espai de memòria llocs de treball intensius o intensius en el disc començarà a avortar i l'únic que notarà és una caiguda en el nombre de treballs processats sense cap raó real de per què.

Presentació dels resultats d'un treball

En presentar els resultats d'un treball, és important comprovar que els resultats no han estat facilitades per un altre treballador, especialment si el treballador actual ha estat inactiu durant algun temps.

Quan els resultats es presenten assegurar-se que el nombre de resultats coincideix amb el nombre de registres a la feina.

Com es va dir anteriorment, i no està de més insistir, construir la tolerància a fallades en la recuperació de llocs de treball i presentació de resultats. Els treballadors poden (i el més probable) entra en mode de suspensió en el més incòmode de vegades i això ha de ser atesos. També una vegada més, abstraient de la seva presentació resultats ajudaran a atendre els canvis futurs en el sistema de control de treball molt més fàcil de tractar.

Resum

En aquest seccion_a hem vist el que és un servidor de control de treball que ha de fer i com arribar a un sistema molt bàsic establert. Parlem de com recuperar un treball des del sistema de control i de la millor manera de configurar llocs de treball per aprofitar al màxim el nostre sistema de xarxa de la seva oficina. Per finalitzar, un paràgraf o dos sobre la presentació dels resultats de tornada al servidor de control de treball es va presentar.

  • Un servidor de control de treball administra els treballs i assegura que totes les unitats de treball es completen
  • En abstreure la feina de seleccionar o resultats de la presentació podem canviar la tecnologia del servidor de control sense problemes molt
  • Configuri els seus llocs de treball per assegurar-se que s'executi de forma ràpida i eficient, sense posar massa pressió sobre la infraestructura de xarxa, i sense duplicar tasques de processament en una base regular.
  • Assegureu-vos que vostè construeix tolerància a fallades i checking error en les seves rutines, els treballadors poden suspendre i reprendre i el més incòmode dels temps. Recordi que ha de comprovar si els resultats s'han presentat ja per un altre treballador.

La propera vegada

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.

Pre-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 es 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? They are all out there running, regenerating, and trying their best to process data like hungry insects. The answer may seem obvious but its worth adding just in case its overlooked. Simply edit your processing script with an exit(0) or die() or some other statement to kill your processing job. An important reason why we always try to update to the latest processing script before any run!

Demonstration System

In order to write this set of short articles I created a very small grid to demonstrate the technologies and methodologies. I read lots of articles, tutorials, and used various tools to setup and monitor what was going on. By no means have I gone out and saturated a whole office with traffic and nor have I had access to a regular staff members PC to see how host performance was affected.

My demonstration system was very humble indeed. I used my regular desktop set up as a job control server. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

The virtual machine was set up with PHP, subversion, and mySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. After all this I setup the bash script and the cron job.

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Counted the number of similar names in a table from the data source held on the VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. At this point I also confirmed that replication automatically restarted.

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

The next obvious step would be to actually get a real world example and start to deploy a system such as this within an office environment and see what happens. Asking a business to commit to this without a trail blazing company to prove the technology and effectiveness may be a little difficult. Grid/Distributed computing is very popular is some circles and has some large applications (BIONC, SETI@Home, Folding@Home, etc). I did not, however, find a smaller scale and simple system like this in my searches that could be rolled out within an office environment.

I created a basically free system using mostly open source software and tools available in almost any office. The technologies were basically demonstrated and show to perform and work as expected. Hopefully I have show that with not much work and with a very simple setup you can deploy an office grid computing system that is powerful, cheap, and scalable all at the same time.

Once a system is up and running there is almost no end to the amount of customisation and improvements you can make. For example statistics / benchmarking can easily be added showing the worth of such a system every day. New machines can be added quickly and easily as and when they arrive with upgrades to existing hardware bolstering your processing power.

I hope you've enjoyed reading this series of articles and its given you food for thought on running an office grid system. The solution presented here won't necessarily work in all situations but should be adaptable to allow you to get your data processing done using your own solution.

Please feel free to send me any comments, corrections, or improvements and I'll do my best to keep this article updated to match.













Panorama Theme by Themocracy

9 visitors online now
7 guests, 2 bots, 0 members
Max visitors today: 17 at 03:47 am UTC
This month: 26 at 04-04-2012 10:27 pm UTC
This year: 69 at 27-02-2012 09:56 am UTC
All time: 130 at 28-03-2011 10:40 pm UTC