Categoria: Linux

Oficina de Computació Grid utilitzant entorns virtuals - Part 4

Per Lloyd Watkin Steven , 04 de desembre divendres 2009 23:59

Introducció

Jo treballo en una empresa on correm molts llocs de treball de processament per lots milions de registres de dades cada dia i he estat pensant sobre tots els equips que se sentin al voltant de cada un i 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 aquesta sèrie 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 creem la nostra màquina de procés virtual i configurar les màquines de les finestres per convertir-se en treballadors a temps inactiu.

L'execució de l'últim codi

És inevitable que després de crear la lògica empresarial els treballadors canviarà, els errors es troben, més eficient codi més ràpid es produirà el que deixa als seus treballadors es van asseure al voltant de processament de dades mitjançant codi de mala olor d'edat . Llavors, com ens assegurem que sempre estem utilitzant l'última i millor versió d'scripts de processament?

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

El primer mètode seria simplement connectar-se al nostre servidor de control de treball (a través de samba, FTP, o similar) i tiri cap avall la darrera versió del codi. No és molt eficient, però farà la feina. Anem a millorar aquesta cosa, què hi ha de la creació d'un script de rsync i amb què cada vegada que en el seu lloc? D'altra banda el de posar la nostra última seqüència de transformació en la subversió revisant el codi al principi i després simplement actualitzant el nostre codi en cada sèrie ( 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
 a continuació,
     echo "El treball està processant, la sortida"
 més
     echo "El treball no s'executa, comença ara"
     cd / ruta / de / treball / còpia
     svn update
     php yourJobProcessingScript.php
 fil 

Ara podem estar segurs que amb cada sèrie definitivament estem executant la darrera versió del codi. Estem garantint d'aquesta mitjançant l'actualització de la nostra base de codi cada vegada que realitzem una carrera i la reducció de trànsit de la xarxa només la transferència de les diferències d'arxius a través de la nostra xarxa.

En el meu programa d'instal lació de demostració, ho vaig fer exactament com abans. La subversió s'ha instal lat en el meu servidor de processament de la tasca i jo simplement va treure el darrer codi de branca en un "treballador" amb "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 plantilla de resultats. D'aquesta manera vaig poder veure que el meu codi s'està actualitzant cada vegada que he copiat el meu tronc en la branca dels treballadors, és a dir que jo era definitivament l'execució del script darrera transformació.

Usant les dades més recents

Si el processament de la tasca fa ús de fonts de dades a continuació, en algun moment aquests seran actualitzats també. A menys que vostè truqui al seu fonts de dades de forma molt poc freqüent que va a inundar la xarxa amb un 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 traslladar el meu fonts de dades amb els meus màquines virtuals.

Mantingui vostè està cavalls allà! I si les meves fonts de dades són enormes? Bé, això és realment un cas de la quantitat de dades estem parlant? Pot ser més rendible que instal lar una unitat de disc dur addicional més gran en cada màquina de comprar un servidor de processament addicional. Aquesta és una qüestió de pressupost i correspon a l'empresa a decidir. És el millor que les seves fonts de dades són tan grans que és només factible per mantenir aquesta quantitat de dades en les seves màquines de treball. En aquest cas, què faries? Bé, podia mirar a trucar a un servidor de dades locals, però això podria causar problemes a la xarxa. En aquest cas, un sistema de xarxa d'aquest tipus pot arribar a ser poc realista que inclogui en el seu entorn d'oficina. També pot ser que vostè pot mirar en altres estratègies d'execució, per exemple, només trucant als seus treballadors 8 PM-06 PM totes les nits i / o limitació de peticions de dades d'origen.

Passant diguem que la nostra quantitat de dades de fonts de 100 Gb de dades. Bé, sí que és una mica de dades per moure's 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 dipòsit a llarg agradable) podria ser el camí a seguir:

replicació En establir cada un dels seus treballadors com un esclau de les actualitzacions del servidor de control de treball a les fonts de les seves dades tinguin un efecte positiu molt bé als seus treballadors sense un augment enorme en l'activitat de la xarxa (és a dir a menys que realitzi una actualització de dades enormes i tots els seus treballadors puntada a al mateix temps). Això té avantatges sobre rsync en què no tindria una llarga pausa abans de cada treball, com les actualitzacions de base de dades, 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 les instruccions en el lloc de MySQL ( Configuració de la replicació ) i en 20 minuts vaig tenir al meu treballador Inicial reproduir el control del treball conjunt de dades de servidors. Per cada treballador addicional de la configuració de la replicació i el procés de treball cada vegada que la màquina virtual s'ha copiat.

Resum

En aquesta secció de l'article que hem vist el fàcil i indolor que és mantenir el codi de processament fins a la data mitjançant rsync Usant una o subverion (SVN) per fer la feina i reduir el trànsit de xarxa en el mateix time. També discutim com per mantenir la seva informació de la font de dades fins a la data pel que li arribin a cadascun dels seus treballadors. Així, zona que permet que mantinguem amb la lògica de negocis i informació en el nostre sistema de xarxa d'oficina. Òbviament hi haurà un gran nombre d'alternatives per a realitzar aquestes tasques, però en aquest cas van ser dos exemples senzills per mostrar 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 discutir el desplegament d'aquest sistema. Vaig a resumir el que s'ha après i el que he aconseguit crear.

Oficina de Computació Grid utilitzant entorns virtuals - Part 3

Per Lloyd Watkin Steven , 04 de desembre divendres 2009 23:37

Introducció

Jo treballo en una empresa on correm molts llocs de treball de processament per lots milions de registres de dades cada dia i he estat pensant sobre tots els equips que se sentin al voltant de cada un i 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 aquesta sèrie 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 vam veure els llocs de treball d'un servidor s'executarà, i quants llocs de treball s'ha de configurar per tal d'aconseguir la major quantitat de processament, mentre de garantir que cada lloc de treball es processa sense falta.

Configuració del seu treball - o servidor NETES

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 amb VirtualBox. Vaig a instal lar MySQL i PHP al servidor, també conegut com una coixesa (Li Linux, m ySQL, HP P) Servera (jo pugui haver fet el nom dalt).

  • Instal lació de VirtualBox al sistema Windows (seguir l'enllaç)
  • Descarregui i instal CentOS (versió actual 5.3) dins d'una màquina virtual creada

No té sentit que em aquest probablement hi ha 1,000 's de les grans classes particulars per aquí (bé, aquí va una: Creació i Managing màquina virtual amb VirtualBox CentOS ). El punt important que cal assenyalar és que suposo que vaig trucar al meu GridMachine màquina virtual.

Pel que fa a les meves opcions de virtualització de client i el sistema operatiu vagi no hi ha gran raó de pes 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 bon sistema operatiu estable i el faig servir al meu propi servidor web. Sóc un gran creient en les eines adequades per al treball (encara que estic demanant l'«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 ús que en el seu lloc:)

És important assegurar-se que la seva màquina virtual utilitza DHCP, en cas contrari per a cada màquina virtual de nou haurà de ser configurat per separat que és una cosa que no want.By mitjançant DHCP no cal configurar els paràmetres de xarxa de forma individual per a les màquines dels treballadors, DHCP mà d'IPs per a vostè. Per tant vostè pot copiar el seu màquina virtual sobre l'oficina sense haver de preocupar sobre la configuració de cada un cap amunt (això millora la escalabilitat i redueix l'administració dels treballadors).

El procés que han de tractar d'aconseguir seria la d'obtenir una màquina física nova, instal 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às de configurar els equips en un contracte d'arrendament a llarg o il limitat concessió DHCP.

Com executar treballs en el treballador

Aquesta és una àrea interessant i hi ha diversos mètodes vàlids per als treballs de transformació en el treballador. Aquí només vaig a parlar dels dos més obvis:

  • Perpètuament executar l'script: Un script, ja sigui un script de shell o un script PHP s'executa una vegada al treballador i s'executa com a part d'un bucle infinit. He descomptat aquest mètode com un accident de la seqüència de comandaments i, potencialment, als seus treballadors deixaran de funcionar sense algun tipus d'intervenció.
  • execució Cron guió basat: Cada X minuts el dimoni cron s'inicia una crida a la seqüència de comandaments per a que funcioni. Sense alguna comprovació d'això podria portar a moltes còpies de la seqüència d'ordres de treball en execució.

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

  1. Obtenir una llista de processos i grep això per a 'php'. Si no el troba i després continuï.
  2. Truqui al seu codi de treball, en el meu cas això seria una cosa basat en PHP
  3. script treballador acaba la seva execució
  4. A punt 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 grep-v |> grep php / dev / null
 a continuació,
     echo "El treball està processant, la sortida"
 més
     echo "El treball no s'executa, comença ara"
     php yourJobProcessingScript.php
 fil 

Nota: els ecos són gairebé completament inútil, però pot ajudar a la pròxima persona que ve a tractar de editar-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' de la xarxa de distribució realment no és visualitzada en el sistema operatiu, el seu tot a veure amb el codi creat als treballs de procés, la configuració del treball, i en assegurar-se que el treball s'executa en el cas (és a dir, quan l'amfitrió està inactiu ).

Configuració de Windows per als treballadors d'iniciació

La primera tasca és treballar en l'ordre necessari per a executar la màquina virtual des de la línia d'ordres de Windows. Si has instal lat VirtualBox en la ubicació predeterminada i ha nomenat el seu GridMachine treballador llavors la comanda necessari per carregar al seu treballador és:

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

No obstant això, per a executar l'script en un 'cap' de l'Estat hem d'usar:

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

Això iniciarà la màquina virtual sense la interfície gràfica d'usuari i li permeten guardar l'estat de gràcia. El segon argument s'apaga RDP per la qual cosa no entra en conflicte amb les finestres RDP, o donar-li un missatge sobre l'escolta en el port 3389. El nom de la màquina virtual es distingeixen majúscules i minúscules!

A continuació, haureu de configurar les finestres per donar inici a la nostra màquina virtual dels treballadors una vegada que la màquina ha estat inactiva. Per fer això (a Windows XP) que necessita per 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 de vagi a afegir un programa a mida. Anar a la seqüència de comandaments VBoxManage i feu clic a 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 de les finestres de pantalla següent us demanarà que voleu executar aquesta tasca, m'agradaria suggerir o "Administrador" o crear un nou usuari privilegiat. Recordeu que no volem interferir en el compte personal de sèrie a la màquina en qualsevol moment. Feu clic a les opcions de mostrar el següent i comprovar avançades per a aquesta tasca.

Fins al final de la caixa de text executar afegir 'startvm' GridMachine la nostra cadena i assegurar que funcionin únicament quan es connecti es deixa sense marcar. Visiteu el següent horari de treball i el canvi horari de la caiguda fins a l'opció 'quan estigui inactiu, seleccioneu la quantitat de temps que desitja que la màquina s'espera abans de passar a la següent pestanya.

Finalment desmarqueu l'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.

horari

Això és tot després de la configuració del host de Windows!

Resum

En aquesta part hem creat una màquina virtual perquè actuï com un treballador, així com la forma en què ens truqui i executar scripts de processament de la tasca (per a mi un script PHP). Des d'aquí veurem com crear les nostres còpies de Windows per posar en marxa la màquina virtual en mode de cap quan l'equip queda lliure, i guardar el seu estat quan l'usuari es reprèn l'ús de la màquina. Esperem que en aquest moment estàs veient el fàcil que és crear un sistema i estan ansiosos per obtenir alguns experiments es va!

La propera vegada

A la part 4 estarem buscant en l'ús d'eines per assegurar que s'està executant la darrera versió de les dades i codis font perquè els resultats obtinguts són sempre al dia amb el negoci de la informació més recent i la lògica.

Oficina de Computació Grid utilitzant entorns virtuals - Part 1

Per Lloyd Watkin Steven , 04 de desembre divendres 2009 23:23

Introducció

Jo treballo en una empresa on correm molts llocs de treball de processament per lots milions de registres de dades cada dia i he estat pensant sobre tots els equips que se sentin al voltant de cada un i 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 aquesta sèrie 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 ús cada dia és a dir, Linux, MySQL , PHP, VirtualBox i Subversion (SVN). No obstant això Espero que aquesta guia s'han d'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 aconseguir això pogués no ser veritat a través de tot l'article que vaig a canviar les coses per a la simplicitat, o per a produir escenaris d'ús més interessant.

Aquests entorns virtualitzats s'executen en màquines Windows ja que això és el que la majoria de les oficines d'execució. El tractament que les màquines d'oficina no ha d'interferir amb el personal amb aquestes màquines, que no requereixen de manteniment a 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 han d'exigir cap tipus de configuració addicional, ja que redueix en gran mesura la escalabilitat i la facilitat amb què el sistema de xarxa pot ser ampliat.

Per què implementar una oficina de Grid Computing?

En primer lloc vostè pot estar pensant, per què no utilitzar un recurs de Cloud Computing com Amazon EC2 plataforma ? Doncs les raons podrien ser diverses, per exemple:

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

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

Avantatges d'una Oficina de Grid Computing

Bé, anem a fer alguna cosa de matemàtiques (i en certa estil de la física li permet fer algunes suposicions d'escombrat). Imagini que té gran servidor de processament fornit executant 100 llocs de treball per dia. En la seva oficina té 50 màquines que estan en repòs 16 hores al dia, cada una d'aquestes màquines és de 10% tan poderós com el processament del seu fornit tallar. (Tots els resultats aquí estan arrodonits per augmentar el rendiment subestimar).

Així, una màquina * 10% * d'energia 02/03 temps = 0,067 és a dir, una transformació d'escriptori en el temps d'inactivitat podria procés de sis llocs de treball per jornada.

Si ara escala això es requereixen 15 ordinadors d'escriptori ociosa per a processar tants llocs de treball per dia com el principal servidor de processament és el.

Així, a la nostra oficina pretendre de 50 màquines que podria augmentar la nostra capacitat de processament d'un 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 que, tot inversió en maquinari nou a la seva companyia 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 solen quedar a la nit al dia de totes maneres, de manera que podria veure això com una iniciativa ecològica.

Altres avantatges també significa que la inversió en nous (o actualització) servidors de processament es pot retardar si els seus màquines d'oficina són suficients i que a mesura que millora la potència de les seves màquines de l'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è jo faig servir):

  • Inactiu màquines d'oficina (en el meu cas un ordinador portàtil de recanvi velles finestres XP)
  • VirtualBox (o qualsevol altre programari de client de virtualització)
  • Una màquina virtual amb PHP, MySQL running executant un reduït sistema operatiu, estic trucant a aquests NETES servidors de la meva:)
  • Llocs de treball per executar
  • Servidor de treball (pot ser una altra màquina virtual en algun lloc)

Típica d'Ocupació

Els tipus de llocs de treball que s'ha dissenyat aquest sistema funcioni és la 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ó / buscant diversos (força estàtica) de fonts de dades
  • Els resultats de les fonts de dades poden requerir una major validació, la fusió, el control de les fonts de dades addicionals en resposta als resultats
  • Les dades es retornen amb els registres coincidents, completament validats i processats
  • Cada registre en un lloc de treball és independent de la resta

Així que bàsicament estem buscant a executar treballs que requereixen una combinació de cerques de bases de dades i alguns càlculs numèrics, un escenari bastant típica en un entorn empresarial.

solucions Grid no només són avantatjoses per al processament de treballs d'aquest tipus. Bàsicament, qualsevol procés que pot ser dividit en unitats independents es poden executar en paral lel. Veure aquesta wikipedia 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 ben val la pena analitzar.

Què anem a aconseguir?

Al final d'aquests articles espero demostrar que la implementació d'una xarxa d'oficina no té per què ser enormement car o el temps. Vaig a parlar:

  • Configuració del sistema de control de treball, la configuració del treball
  • Creació d'un adequat processament de la màquina virtual
  • Com configurar el sistema en una màquina Windows
  • Assegurar que utilitzeu la darrera versió del codi i les dades
  • Implementació i l'avaluació comparativa
  • De cara al futur

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

Això no és pas la intenció de demostrar un sistema totalment funcional robusta, el seu significat més d'una manifestació i discutir que demostra que aquestes coses es pot aconseguir en un espai relativament curt de temps ia un baix cost. Si us plau, no dubteu a enviar-nos els seus comentaris, correccions o millores i faré el meu millor esforç per mantenir aquest article actualitzat a partit.

La propera vegada

A la part 2 vaig a començar per mirar el sistema de control de treball, i buscar la forma en què els treballs s'ha de configurar per tal d'aconseguir la major quantitat de processament, mentre de garantir que cada lloc de treball es processa sense falta.

Oficina de Computació Grid utilitzant entorns virtuals - Part 2

Per Lloyd Watkin Steven , 04 de desembre divendres 2009 23:23

Introducció

Jo treballo en una empresa on correm molts llocs de treball de processament per lots milions de registres de dades cada dia i he estat pensant sobre tots els equips que se sentin al voltant de cada un i 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 aquesta sèrie 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 treballs

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

  • Lliuri els treballs a petició dels treballadors
  • Informe als treballadors quin tipus de llocs de treball per executar
  • Seguiment dels treballs
  • Assegureu-vos que els treballs només s'executen una vegada
  • Proporcionar les dades del treball als treballadors, o si més no dir-los on aconseguir-

El sistema també ha de ser extensible, una solució que funciona per ara en un sol cas pot ampliar-se per executar diversos tipus de llocs de treball com l'empresa considera que el valor en una solució de xarxa. Per exemple, l'ocupació pot tenir prioritats, més d'un tipus de treball poden existir (és a dir, diverses bases de codi), amb el temps fins i tot es pot executar diverses màquines diferents treballadors que estan optimitzades per a cada tipus de treball (tot i que s'allunyi del "treballador genèric 'idea). Sempre intento pensar en el futur quan els sistemes en desenvolupament, una visió a curt termini pot conduir a la frustració a llarg termini i el temps de desenvolupament més gran.

Servidor de tasques de

Anem a necessitar un lloc per al control dels nostres llocs de treball de, aquest ha de ser l'únic sistema en la casella que té un localitzador de recursos fixos, ja sigui una adreça IP, nom de host, l'adreça URL (usant DNS intern), etc Això és degut a els treballadors necessiten saber on buscar feina, els treballadors necessiten per trobar el sistema de control de treballs (no el sistema de control de treball 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, lliurar treballs, rebre els resultats, i posteriorment emmagatzemar per a la posterior recuperació. Com aquestes parts (per exemple, "lliurar l'ocupació") es defineixen poden ser molt bàsiques. Més tard es pot estendre el sistema per incloure una interfície d'administració per afegir, editar, eliminar, suspendre els treballs, però això està més enllà d'aquest exercici.

No hi ha motiu llavors que el servidor de treball no podia ser una màquina virtual que s'executa al servidor de procés principal, sempre que no drena massa recursos d'ella. El servidor de treball però es necessita d'alta disponibilitat, si es cau en un divendres a la nit vostè va a perdre un cap de setmana de tractament, el que podria costar-li un parell de setmanes de temps de processament (en comparació amb el servidor principal de processament sol) . É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 NETES (és a dir Li Linux, ySql m, HP P). 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 el treball del sistema de control. Més endavant es podria crear un servei web, i de fet reparteixen llocs de treball en lloc que els treballadors fan la feina dura sí, però per ara seguirem utilitzant el principi KISS (Keep it simple, estúpid!).

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

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

Aquesta taula es compon de 5 camps simples,

  • Identificació: identificar en forma única la feina
  • Nom: Podria ser una referència del client, o qualsevol nombre d'altres identificadors
  • Situació: Vostè necessita saber que el treball és, per exemple,
    • 0: No ha començat
    • 1: Recollit
    • 2: Completat
  • started_by: Qui va començar a fer la feina? Això no és del tot necessari, però és bo tenir. Et suggereixo que el seguiment dels treballadors 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 hem de recollir el treball de nou i començar a processar per un altre treballador. Els treballadors podrien deixar de processar / go en línia per a qualsevol nombre de raons, manca d'energia elèctrica, accidents, pèrdua de xarxa, etc

És fàcil com aquest quadre podria 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 la feina, un comptador per veure quants treballadors va prendre el treball (òbviament això ha de tendeixen a 1), la prioritat del treball, la llista pot seguir i seguir. En escenaris més treball complex que seria possible especificar la quantitat de memòria que el treballador tindria accés a (i per tant, només l'ús adequat de treballadors), o fins i tot quin tipus de treballador es requereix.

Anem a afegir un exemple alguns treballs:

llocs de treball exemple

A la taula següent de nou és molt senzill d'entendre, aquestes són les nostres fitxes de treball. Estan vinculats a la taula de treball principal per una columna `jobs_id». La composició d'aquest quadre depèn molt de les dades que ha de proporcionar als seus treballadors, anem a fer un exemple molt simple, on tenim quatre columnes:

  • Identificació: Identificació del registre
  • Nom: el nom de la persona
  • adreça: La direcció de la persona
  • jobs_id: 'Identificador de treball que aquest registre està vinculat a

La taula de la tercera i última consisteix en una taula de resultats, té molt de la mateixa marca fins que la taula de registres, i amb l'addició d'algunes columnes poden ser part de la taula de registres:

  • job_record_id: Vincular el resultat a la taula de treball
  • resultat: El resultat de les dades

... 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 en què les meves dades per a processar es troba, però això podria fàcilment un arxiu d'estat, els paràmetres per executar el codi de simulació, el que sigui.

Selecció d'un treball

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

  1. Prengui ofertes d'ocupació que no estan marcats com completa, però des del nostre treball i recuperar els (__ME__ substituir amb un identificador més fàcil, seria l'adreça IP):
      UPDATE `treballs` SET `estat` = 0 WHERE `estat` = 1 `I` = started_by __ME__; 
  2. Utilitzant els criteris de selecció de treballs, seleccioneu una feina i dir-li al sistema de control que aquest treballador es tracta que:
      UPDATE `treballs` SET `estat` = 1, `started_by` = __ME__, `started_at` = NOW () en cas d '«estat» = 0 O
     («Estat» = 1 `I` started_at> DATE_SUB (NOW (), INTERVAL X HORA)) ORDER BY `id` ASC; 

    Per l'acaparament de llocs de treball que no han donat resultats en X quantitat de temps que ens assegurem que tots els treballs s'executen en el cas d'un treballador de xocar o anar sense permís.

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

Un cop finalitzat el treball d'inserir els nostres registres de resultats i marca el treball el més complet. Recordeu que els treballs poden suspendre / reprendre en qualsevol moment, permetre certa solidesa en el seu guió. Pot ser que la tasca suspèn la meitat del camí a través de l'actualització del sistema de control de treball, així que comprovar el nombre de registres en un lloc de treball i el nombre de resultats de tornar a guardar al sistema de control de treball seria un encert.

A més, si bé aquest treball es mostra com es poden seleccionar i administrar des d'una consulta de SQL marc que realment ha abstreure el seu control sobre el treball de manera que si vostè decideix passar a utilitzar un servei web, basat en un sistema d'arxius, XML , o qualsevol altre nombre de sistemes que no afectarà el codi per sobre d'ella.

Treball de configuració

El següent aspecte a considerar és la grandària del treball i la configuració. En jugar amb la configuració de treball que pot aconseguir un alt equilibri entre la velocitat, el procés de replicació, i la fiabilitat. Prendre un parell idea escenaris:

  1. Treballs tenir un dia cada un per executar: Això significa que els seus treballadors necessiten 15 dies per a processar cada lloc de treball (recordeu que el 10% de l'energia per 2/3rds de l'hora). Això clarament no és una configuració de savis, la mida del seu treball és massa gran! Es necessitaria com a mínim el doble de temps per aconseguir un treball processat si el treballador s'absenten sense permís inicial (temps per recollir que no ha tornat un resultat més el temps de reprocessament). En un ideal que tindria com a mínim un treball de jornada completa fàcilment aclarit pel final de cada període d'inactivitat, d'aquesta manera a mantenir els llocs de treball ralentí i en pitjor dels casos un treball prendria dos dies per al procés si el primer van a faltar.
  2. Treballs prendre un minut per córrer: Això significa que els seus treballadors prenen uns 15 minuts per a executar cada treball. Tot i que aquest principi pot semblar ideal, el guany de procés de treball addicional durant l'hora de dinar, coffee break, reunions, etc aquest escenari posa tensió en altres àrees del vostre sistema, presenta els seus propis problemes. Per exemple, en primer lloc la configuració de la seva proporció de temps de processament anirà a la dreta cap avall, per tant perdre l'eficiència del sistema. La xarxa serà constant flux d'informació d'ocupació als treballadors de diversos funcionaris frustrant que dong seu treball diari. Vostè també posarà més pressió en el seu treball com a servidor de processament que ha de repartir munts i munts de petites peces de treball sobre una base regular. Finalment, en aquesta situació si el seu servidor de treball cau crearà un registre de gran part de darrere que el treball no major de llocs de treball podria continuació de la tramitació 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 seva xarxa, molt depèn dels recursos disponibles, els tipus de treball, els requisits del treball temps de resposta, capacitat de xarxa, i així successivament. No obstant això, algunes directrius serien:

  • Mida de llocs de treball perquè cada treballador pot obtenir a través d'almenys 3-4 llocs de treball en un període de 15 hores (el més llarg període de temps d'inactivitat probable)
  • Juga amb la grandària del treball perquè el temps d'instal lació es converteix en bastant insignificant en comparació amb el temps de processament (tenint en compte el punt anterior).
  • Si un treball no acaba en el doble de la quantitat de temps (potser menys) que espera que es completi assumeix que la seva 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 treball perquè es completi (possiblement més si el treball no posterior). És possible que vulgueu reduir aquest temps, però aneu en compte de no reduir massa ia vostè pot començar a duplicar les tasques de processament en una base regular.
  • Els treballs han de ser independents de les necessitats fora de la mesura del 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ò té dos efectes negatius, el seu personal durant el dia es troba amb la xarxa de frustració i problemes es poden experimentar amb les connexions s'esgoti el temps un problema que només va a empitjorar a mesura que escala de 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 de treball intensiu o intensiu del disc començarà a avortar i l'únic que notarà és una gota en el nombre de treballs processats sense veritable raó.

Lliurament dels resultats d'un treball

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

Quan els resultats s'envia a assegurar que el nombre de resultats coincideix amb el nombre de registres en el treball.

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 és que) entrar en mode de suspensió en l'inconvenient de la majoria de vegades i això ha de ser atesos. A més, una vegada més abstraient la seva presentació resultats ajudaran a atendre als futurs canvis en el seu sistema de control de treball molt més fàcil de tractar.

Resum

En aquesta Secció hem vist el que un servidor de control de treballs ha de fer i com aconseguir un sistema molt bàsic establert. Parlem de com recuperar un treball des del sistema de control i 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ó de resultats al servidor de control de treball es va presentar.

  • Un servidor de control de tasques administra els treballs i assegura que totes les unitats de treball es completen
  • En abstreure el treball de seleccionar / submissió resultats podem canviar la tecnologia del servidor de control sense problemes molt
  • Configuri el seu treball per assegurar-se que s'executi de forma ràpida i eficaç sense posar massa pressió sobre la seva infraestructura de xarxa, i sense duplicar tasques de processament en una base regular.
  • Assegureu-vos de construir la tolerància a fallades i checking error en les seves rutines, els treballadors poden suspendre i reprendre i l'inconvenient de la majoria de vegades. Recordeu, per comprovar si els resultats ja han estat presentades per un altre treballador.

La propera vegada

A la part 3 anem a crear la nostra màquina de procés virtual i configurar les finestres de les nostres màquines per convertir-se en treballadors a temps inactiu.

Oficina de Computació Grid utilitzant entorns virtuals - Part 5

Per Lloyd Watkin Steven , 04 de desembre divendres 2009 23:03

Introducció

Jo treballo en una empresa on correm molts llocs de treball de processament per lots milions de registres de dades cada dia i he estat pensant sobre tots els equips que se sentin al voltant de cada un i 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 aquesta sèrie d'articles que vaig a veure els beneficis potencials de l'ocupació d'una oficina de la xarxa utilitzant entorns virtualitzats.

A la part 4 es va observar l'ús d'eines per assegurar que estem executant la darrera versió de les fonts de dades i codi, de manera que els resultats obtinguts estan sempre al dia amb el negoci de la informació més recent i la lògica.

Pre-implementació

Abans d'implementar el seu sistema de xarxa si hi ha una cosa que fer i una sola cosa és comparar el seu sistema actual! No importa el que diuen els seus col.legues sobre la quantitat de treball extra el sistema farà a no ser que tingui els números que ho recolzin les seves garanties no són una altra cosa. Per tant,

  • nombre de registres que pot processar en l'actualitat? Per dia? Per hora?
  • Quant de temps sol prendre al seu torn al voltant d'un treball?
  • Quant més capacitat té?

També hi ha preguntes addicionals:

  • Si el vostre servidor de processament (o un dels servidors de processament) es cau, com afecta això a les seves capacitats, serà paralitzat?
  • Quins avantatges esperança / espera aconseguir d'un sistema de xarxa?
  • Són les seves màquines d'oficina capaç d'executar els treballs?
  • Si la teva (o pot ser convertit llocs de treball) per a treballar en aquest estil de córrer?

L'últim gran punt és portar un temps en una modificació important com aquest. Actualitzeu el seu codi de processament per a treballar amb la nova metodologia, nou punt de referència. És possible configurar el servidor de processament per a executar una màquina virtual, després de tot el servidor de processament serà només un altre treballador (a només una molt poderosa relativament). Deixeu que el nou procés per resoldre.

Implementació

El meu suggeriment seria fer esclatar a l'oficina d'un cap de setmana de realitzar totes les instal.lacions i posada en marxa. Feu això just abans de quinze dies de vacances i deixar una pobra cap altres per fer front a les conseqüències no ... potser ...

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

Una vegada que el sistema s'ha instal lat amb unes poques màquines (diguem el 10% de totes les màquines d'oficina, és a dir, 5) mantenir el seguiment del tràfic de xarxa i equip amfitrió performance. següent punt de referència de nou, ara hauria de ser processant els treballs d'un 33% més que els seus punts de referència en primer lloc. Comproveu això és així, o que està almenys en aquest estadi. Si no és així, investigar el que està passant abans de continuar. Repetiu aquest cicle fins que feliçment tenen totes les màquines d'oficina funcioni sense matar rendiment de la màquina individual o rectificat la seva xarxa a un punt mort.

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

¡Alto!

Què passa si vostè vol deixar als seus treballadors que s'executi en algun moment? Tots ells estan per aquí corrent, regenerar, i fent el seu millor esforç per processar les dades com els insectes famolencs. La resposta pot semblar òbvia, però la seva pena afegir per si de cas seus veïns. 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 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 m'he sortit i saturada d'una oficina amb tot el tràfic 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ó va ser molt humil per cert. Vaig utilitzar el meu escriptori normal de configurar com un servidor de control de treball. En aquesta hi havia instal lat MySQL server instal lat configurat com un mestre en la replicació, PHP , Â i SVN vinculats a través d' apache (per a l'accés dels treballadors a través de VM).

Llavors va crear un equip de treball CentOS en VirtualBox en un 6 anys d'edat finestres portàtil XP. Puc configurar les tasques programades com s'especifica després de copiar la màquina virtual en l'equip i deixar-lo anar.

La màquina virtual es va crear amb PHP, la subversió, i mySQL. Vaig revisar una branca anomenada «treballador» dels meus servidors de tasques de control de dipòsit i es va assegurar que podria actualitzar-se amb 'svn update'. La propera instal lació 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 aquest muntatge que la seqüència de comandaments bash i la tasca.

El meu script de procés, bàsicament, va ser al llarg de les línies d'aquest (cosa molt simple):

  • Llegir en el camp de nom
  • Va explicar el nombre de noms similars en una taula de la font de dades que posseeixi sobre la màquina virtual
  • Va explicar el nombre de noms que l'anterior però la divisió del nom per espais (és a dir, nom, segon, cognom)
  • Va repetir aquest procés 1.000 vegades

Cada treball va prendre aproximadament 20 minuts en executar-se. En un moment vaig obrir diverses còpies de la màquina virtual de treball a l'ordinador portàtil finestres i observar els treballs serà marcat per cada una de les adreces IP dels treballadors. En aquest punt, també va confirmar que la replicació es reiniciarà automàticament.

Deixar l'ordinador portàtil a ralentí com a resultat un treballador comença a processar els treballs 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. màquines més recents no poden tenir una pausa de tant de temps. El benefici de la quantitat de tractaments realitzats per aquestes màquines durant períodes d'inactivitat que més que compensen els membres del personal que ha d'esperar un curt període de temps (diguem 1 minut), en arribar a les seves màquines del matí (que sovint esperar més que això per a un Windows Defensar actualització a tenir lloc), sempre i quan es van fer conscients d'aquest moment (d'utilitat per a 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 (molt) petit i amb una mica més experimentat podria ampliar utilitzar els recursos de les màquines d'una oficina. Si no arribar al punt de fer això jo estaria molt interessat a saber / veure si algú més ho fa.

Conclusions / Avaluació

El següent pas obvi seria la d'obtenir realment un exemple del món real i començar a implementar un sistema d'aquest tipus 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. Xarxa / computació distribuïda és molt popular és alguns cercles i té algunes aplicacions de grans dimensions (BIONC, SETI @ Home, Folding @ Home, etc.) No ho vaig fer, però, trobar una escala més petita i simple sistema com aquest en els meus recerques que podria ser llançat dins d'un entorn d'oficina.

He creat un sistema bàsicament gratis amb el programari de codi obert i sobretot les eines disponibles en gairebé qualsevol oficina. Les tecnologies es va demostrar, bàsicament, i mostrar el resultat de portar a terme i funciona com s'esperava. Espero que demostren que amb no molta feina i amb una configuració molt simples que poden implementar una xarxa d'oficines del sistema de càlcul que és de gran abast, barats, A i escalable, tot al mateix temps.

Una vegada que el sistema està funcionant gairebé no hi ha fi a la quantitat de personalització i millores que pot fer. Per exemple les estadístiques i avaluacions comparatives es poden afegir fàcilment mostrant el valor d'aquest sistema tots els dies. Les noves màquines es poden afegir de forma ràpida i fàcil a mesura que arriba amb millores en el maquinari existent reforçar el seu poder 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'oficina. La solució que aquí es presenta no necessàriament funciona en totes les situacions, però s'han d'adaptar perquè pugui obtenir el seu processament de dades realitzat amb la seva pròpia solució.

Si us plau, no dubteu a enviar-nos els seus comentaris, correccions o millores i faré el meu millor esforç per mantenir aquest article actualitzat a partit.

[Avís] pid nen XXXX sortida de senyal de violació de segment (11)

Per Lloyd Watkin Steven , 11 d'octubre diumenge 2009 18:09

Si vostè ha actualitzat recentment PHP o Apache que potser ve en contra de la qüestió del seu servidor web tornar les pàgines en blanc, i de llançar missatges d'error en els seus registres sense idea de per què, aquí hi ha una manera possible per solucionar ...

He tingut aquest problema un parell de vegades recentment, després de l'actualització d'Apache o PHP en una màquina virtual. La primera vegada em vaig adonar de l'error que simplement van tornar a una còpia de seguretat de la meva màquina virtual, però la segona vegada que em vaig adonar que hauria d'examinar la qüestió.

La primera vegada em vaig adonar de la qüestió algunes de les meves pàgines web estaven sent atesos com arxius en blanc mentre els altres treballaven absolutament bé. Després d'algunes investigacions que va prendre nota que Apache estava escrivint a / var / log / http / error_log amb el missatge repeatidly:

[Avís] pid nen XXXX sortida de senyal de violació de segment (11)

No cal anar per adjudicar en línia, i la majoria de les pàgines sobre això camí lliure per a res. Dit això, reduït el problema a PHP estavellar en intentar innecessaris llibreries dinàmiques.

Pel que fa al meu php.ini (/ etc / php.ini) li vaig comentar a terme totes les biblioteques dinàmic carregat en la planificació de comentar de nou en la mesura necessària. Els dos que vaig haver de prendre on pdo.so i mysql . així.

Una vegada que aquests es van eliminar totes les meves pàgines web estaven sent atesos molt bé, igual que abans de PHP / actualització d'Apache.

Wi-fi a Acer 5002 WLMI en Linux (Fedora 11)

Per Watkin Lloyd Steven , el dissabte 11 de juliol 2009 21:48

Com he passat unes hores d'avui sense accés a Internet que vaig pensar que seria millor aconseguir aquest escrit perquè la pròxima vegada em embolic al meu ordinador portàtil fins que la informació sigui fàcil d'arreglar.

Bàsicament per obtenir els controladors sense fil de treball per a un Acer 5002 WLMI hauràs d'utilitzar B43-fwcutter. Les instruccions es poden trobar aquí: Linux Ràdio B43 .

Fàcil una vegada que la informació es troba.













Panorama Tema per Themocracy

13 usuaris on-line ara
8 persones, contra els robots d'5, 0 membres
Nombre màxim de visitants d'avui: 17 a les 12:28 UTC
Aquest mes: 26 a 2011.07.05 12:35 UTC
Aquest any: 130 en 2011.03.28 22:40 UTC
Tot el temps: 130 en 2011.03.28 22:40 UTC