Categorie: Grid Computing

Kantoor Grid Computing met behulp van virtuele omgevingen - Deel 4

Door , vrijdag 04 december 2009 23:59

Introductie

Ik werk in een bedrijf waar lopen we een groot aantal batch-taken die worden verwerkt miljoenen records van de gegevens elke dag en ik heb onlangs na te denken over alle machines die zitten elke dag niets doen voor meerdere uren. Zou het niet goed zijn als we zouden kunnen gebruiken die machines voor de verwerking kracht van onze systemen te versterken? In deze reeks artikelen ga ik kijken naar de potentiële voordelen van het gebruik van een kantoor rooster met behulp van gevirtualiseerde omgevingen.

In deel 3 hebben we onze virtuele machine en het opzetten van Windows-machines te worden idle-time werknemers.

Het uitvoeren van de laatste code

Het is onvermijdelijk dat na het maken van uw werknemers business logica zal veranderen, bugs worden gevonden, zal sneller meer efficiënte code te produceren waardoor het verlaten van uw werknemers zat rond de verwerking van gegevens met behulp van oude stinkende code . Hoe kunnen we ervoor zorgen dat wij altijd de nieuwste en beste versie van onze verwerking van scripts gebruiken?

Er zijn een paar zeer eenvoudig eenvoudige manieren kunnen we dit doen, de truc is echter om de verwerking van de macht en het netwerkverkeer te verminderen om dit te bereiken. Laten we beginnen met de eenvoudigste oplossingen en langzaam het over een paar iteraties te verbeteren.

De eerste methode zou zijn om gewoon verbinding te maken met ons werk Control Server (via samba, FTP, of iets dergelijks) en trek de laatste versie van de code. Niet erg efficiënt, maar het zal de klus te klaren. Laten we verbeteren dat enigszins, wat over het creëren van een rsync script en het gebruik van dat elke keer dat in plaats daarvan? Als alternatief hoe zit het zetten onze nieuwste verwerking script tot subversie het controleren van de code in eerste instantie en dan gewoon updaten van onze code op elke run ( svn update )?

Op het einde konden we eindigen met een bash script (geroepen door cron elke 10 minuten), die ziet er zo simpel als dit:

  #! / Bin / sh
 Als ps ax | grep-v grep | grep php > / dev / null
 dan
     echo "Job is op dit moment verwerkt, afslag"
 anders
     echo "Job niet wordt uitgevoerd, nu beginnen"
     cd / pad / naar / werken / copy
     svn update
     php yourJobProcessingScript.php
 fi 

Nu kunnen we er zeker van zijn dat met elke run we zeker zijn de laatste code die wordt uitgevoerd. We zijn ervoor zorgt dat dit door een aanpassing van onze code base elke keer voeren we een run en het verminderen van het netwerkverkeer door alleen de overdracht van het bestand verschillen tussen ons netwerk.

In mijn demonstratie setup, ik deed precies zoals hierboven beschreven. Subversion is geïnstalleerd op mijn werk de verwerking van de server en ik gewoon trok de laatste code van een "werknemer" tak met behulp van 'svn update'. Ik heb ook nog een versie nummer tag op mijn verwerking script dat de database terug als deel van de resultaten terug te keren. Op deze manier kon ik zien dat mijn code werd elke keer als ik mijn koffer gekopieerd naar de werknemer tak dat wil zeggen dat ik zeker was de laatste verwerking script draait bijgewerkt.

Met behulp van de meest recente gegevens

Als uw baan verwerking maakt gebruik van gegevensbronnen dan op een bepaald moment deze zullen ook worden bijgewerkt. Tenzij u contact op met uw gegevensbronnen op een zeer onregelmatige basis je gaat om uw netwerk te overspoelen met het verkeer zo snel uw werknemers beginnen te lopen om alles tot stilstand. Voor mijn oplossing die ik besloten dat ik zou willen om te bewegen mijn gegevensbronnen met mijn VM's.

Houd je paard er! Wat gebeurt er als mijn gegevens bronnen HUGE? Nou dit is echt een kwestie van hoeveel data hebben we het? Het kan meer rendabel om een extra grotere harde schijf te installeren in elke machine dan om een extra verwerking server kopen. Dit is een kwestie van budget en is aan het bedrijf om te beslissen. Het misschien dat uw gegevens bronnen zijn zo groot dat het is gewoon ondoenlijk om die hoeveelheid gegevens bij te houden in uw werknemer machines. In dat geval wat zou je doen? Wel kunnen we kijken naar het bellen van een lokale data server, maar dit kan leiden tot problemen met het netwerk. In dit geval is een grid-systeem zoals dit kan worden onrealistisch te nemen in uw kantooromgeving. Het kan ook zijn dat je kunt kijken naar alternatieve lopen strategieën, bijvoorbeeld alleen het roepen van uw werknemers tussen twintig en 6 uur per nacht en / of smoren gegevensbron verzoeken.

Moving on laten we zeggen onze bronnen oplopen tot 100 GB aan gegevens. Nou ja dat is nogal wat data om rond het netwerk te bewegen op een update. Hoe zouden we ervoor zorgen dat we de laatste kopie van de gegevens zijn in dit geval? Rsync is een mogelijkheid, maar persoonlijk vind ik door het uitvoeren van uw meest recente gegevens de bron op uw werk de verwerking van de server en het instellen van deze zich als een meester in het replicatie (met een mooie lange bak log) kan de weg te gaan zijn:

replicatie Door elk van uw werknemers als een slaaf van de job control server updates voor uw gegevensbronnen zal mooi trickle down om uw werknemers zonder een enorme toename in netwerk-activiteit (dat wil zeggen, tenzij u een enorme data-update en al je medewerkers kick in in een keer). Dit heeft voordelen ten opzichte van rsync in dat u niet een lange pauze voor elke job, gelijk als de database-updates, de mysql daemon op uw werknemer zal voortdurend geactualiseerd zijn gegevens tijdens de verwerking doorgaat.

Dit is hoe ik mijn demonstratie-server. Voor het instellen van de replicatie volgde ik de gids op de MySQL site ( Het opzetten van replicatie ) en binnen 20 minuten had ik mijn inital werknemer repliceren van de job control servers dataset. Voor elke extra werknemer van de replicatie-instellingen en het proces werkte elke keer wanneer de VM werd gekopieerd.

Overzicht

In dit gedeelte van het artikel hebben we gekeken naar hoe gemakkelijk en pijnloos het is om de verwerking van code up-to-date door using rsync of subverion (SVN) om het werk te doen en het netwerkverkeer te verminderen op hetzelfde time. We hebben ook besproken hoe om uw gegevensbron informatie up-to-date te houden door het te laten doorsijpelen aan elk van uw werknemers. Zo kunnen we ruimte ervoor te zorgen dat we gelijke tred houden met business logica en informatie in ons kantoor draagconstructie. Er zullen uiteraard tal van alternatieven voor het uitvoeren van deze taken, maar hier waren twee simpele voorbeelden om te laten zien hoe makkelijk een oplossing te komen.

Volgende keer

In het laatste deel van deze serie, toepasselijke naam deel 5 , bespreken we de implementatie van dit systeem. Ik zal een samenvatting van wat er is geleerd en wat ik wist te creëren.

Kantoor Grid Computing met behulp van virtuele omgevingen - Deel 1

Door , vrijdag 04 december 2009 23:23

Introductie

Ik werk in een bedrijf waar lopen we een groot aantal batch-taken die worden verwerkt miljoenen records van de gegevens elke dag en ik heb onlangs na te denken over alle machines die zitten elke dag niets doen voor meerdere uren. Zou het niet goed zijn als we zouden kunnen gebruiken die machines voor de verwerking kracht van onze systemen te versterken? In deze reeks artikelen ga ik kijken naar de potentiële voordelen van het gebruik van een kantoor rooster met behulp van gevirtualiseerde omgevingen.

Als PHP developer ga ik tools die ik gebruik elke dag, namelijk, Linux, gebruik mySQL , PHP, VirtualBox en Subversion (SVN). Maar ik hoop dat deze gids zal aanpassen aan andere talen en technologieën net zo goed.

De oplossing die ik te bieden zal zeer losjes gebaseerd op het type van de verwerking zouden we moeten er echter te bereiken dit kan niet waar zijn door de hele artikel als ik dingen veranderen voor eenvoud, of om meer interessante gebruiksscenario's te produceren.

Deze gevirtualiseerde omgevingen zal draaien op Windows-machines, omdat dit is wat de meerderheid van de kantoren uit te voeren. De verwerking dat de kantoormachines niet mag bemoeien met de medewerkers met behulp van die machines, zou vergen geen onderhoud aan de machine, en gemakkelijk inzetbaar om nieuwe machines als ze beschikbaar zijn. Ook mag nieuwe virtuele machines vereisen geen extra configuratie, omdat dit sterk de schaalbaarheid en het gemak waarmee de grid systeem kan uitgebreid worden vermindert.

Daarom implementeren een Office-Computing Grid?

Ten eerste denk je misschien, waarom niet gewoon gebruik maken van een cloud computing resources, zoals Amazon's EC2-platform ? Nou, de redenen kunnen zijn meerdere, bijvoorbeeld:

  • Je zal niet toevertrouwen bepaalde gegevens aan een cloud computing-omgeving
  • Je kunt niet stellen bepaalde gegevens in een cloud computing omgeving voor juridische redenen (bijvoorbeeld gegevens het verlaten van het land), mogelijk om juridische redenen, bijvoorbeeld NHS records.
  • U wilt bewaren uw processing units te dicht bij en hebben volledige controle over de hardware
  • U niet beschikt over het project middelen om cloud instances draaien
  • Uw kantoor heeft geen verbinding met het internet en dus haar niet mogelijk om een ​​wolk het gebruik van hulpbronnen
  • Je houdt niet van regen, wolken suggereren regen, dus je blijft uit de buurt

Ik weet zeker dat de lijst zou kunnen doorgaan, maar ik denk dat dat genoeg is voor nu.

Voordelen van een Office-Computing Grid

Nou, laat sommige wiskunde (en in echte fysica stijl kunt maken wat vegen aannames). Stel je hebt grote vlezige verwerking server 100 opdrachten per dag draaien. In uw kantoor heb je 50 machines die zijn inactieve 16 uur per dag, elk van deze machines is 10% zo krachtig als je stevige verwerking verbreken. (Alle resultaten zijn hier afgerond op de prestaties te verhogen onderschatten).

Ja, een machine * 10% vermogen * 2 / 3 keer = 0,067 wil zeggen een desktop verwerking in idle time proces 6 volledige banen per dag.

Als u nu schaal dit tot het duurt 15 idle desktops om zoveel mogelijk banen per dag proces als uw belangrijkste verwerking server doet.

Dus in ons alsof kantoor van 50 machines die wij kunnen verhogen onze processing power van een server tot en met 4 volledige verwerking van servers, of we kunnen de verwerking van 400 arbeidsplaatsen per dag in plaats van 100.

Merk op, want geen investeringen in nieuwe hardware van uw bedrijf heeft zojuist verhoogde zijn batch processing capaciteit 4 keer! Potentieel je gaat om uw stroomverbruik te verhogen, maar de meeste kantooromgevingen Ik ben al naar machines zijn over het algemeen links op 's nachts toch, dus je kon zien dit als een groen initiatief.

Andere voordelen ook betekenen dat de investeringen in nieuwe (of aangepast) verwerking servers kan worden vertraagd als je kantoormachines toereikend zijn en dat als je het verbeteren van de kracht van uw kantoormachines uw kantoor net wordt krachtiger automatisch.

Technologieën

Wat u nodig hebt? (Of beter gezegd wat heb ik gebruik):

  • Idle kantoormachines (in mijn geval een reserve oude Windows XP laptop)
  • VirtualBox (of een andere virtualisatie client-software)
  • Een virtuele machine met PHP, MySQL running het runnen van een gekapt OS, ik bel mijn slappe deze servers:)
  • Jobs te lopen
  • Job server (kan een andere virtuele machine ergens)

Typische Jobs

De aard van de jobs die dit systeem is ontworpen om te draaien is als volgt:

  • Systeem ontvangt een lijst met gegevens waarop we nodig hebben om match en terug te keren resultaten
  • Matching houdt in het controleren van / zoeken verschillende (vrij statisch) gegevensbronnen
  • Resultaten van gegevensbronnen kan verdere validatie, samenvoegen, de controle van aanvullende gegevens bronnen in reactie op de resultaten
  • Data is terug met overeenkomende records, volledig gevalideerd en verwerkt
  • Elke record in een baan is onafhankelijk van de rest

Dus eigenlijk zijn we op zoek bij het runnen van banen die een mengsel van database lookups en sommige aantal het kraken, een vrij typisch scenario in een zakelijke omgeving vereisen.

Grid-oplossingen zijn niet alleen voordelig zijn voor de verwerking van banen van dit type. In principe kan iedere methode die kan worden opgesplitst in zelfstandige eenheden worden uitgevoerd in parallel. Zie deze wikipedia voor voorbeelden en meer informatie: Grid Computing , maar een paar van de bekendste voorbeelden zijn Seti @ Home en BIONC . Er zijn kaders voor het uitvoeren van computer-grids, en deze zijn zeker de moeite waard op zoek naar.

Wat gaan we bereiken?

Tegen het einde van deze artikelen hoop ik aan te tonen dat de implementatie van een kantoor netwerk niet hoeft te worden enorm duur of tijdrovend. Ik ga om te bespreken:

  • Het opzetten van de baan controlesysteem, job configuratie
  • Het creëren van een juiste verwerking ervan virtuele machine
  • Hoe het systeem instellen op een windows machine
  • Zorgen voor je de laatste code en de gegevens met behulp van
  • Implementatie en benchmarking
  • Vooruit te kijken

Ik zal bouwen (ok ik gebouwd, toen schreef), een voorbeeld aanvraag in bij de concepten testen op een lokale machine met Windows XP en mijn 'GridMachine' virtuele machine. Mijn job control server zal mijn grootste machine die draait worden Fedora 11 .

Dit is op geen enkele manier bedoeld om een ​​volledig werkend robuust systeem te tonen, zijn betekende meer van een demonstratie en het bespreken waaruit blijkt dat deze dingen kunnen worden bereikt in een redelijk korte tijd en tegen weinig kosten. Aarzel niet om mij eventuele opmerkingen, correcties of verbeteringen en ik zal mijn best doen om dit artikel aan te passen bijgewerkt te houden.

Volgende keer

In deel 2 zal ik beginnen door te kijken naar het werk controlesysteem, en kijk hoe banen moeten worden geconfigureerd om de grootste hoeveelheid van de verwerking te bereiken tegelijkertijd voor te zorgen dat elke opdracht wordt verwerkt zonder mankeren.

Kantoor Grid Computing met behulp van virtuele omgevingen - Deel 2

Door , vrijdag 04 december 2009 23:23

Introductie

Ik werk in een bedrijf waar lopen we een groot aantal batch-taken die worden verwerkt miljoenen records van de gegevens elke dag en ik heb onlangs na te denken over alle machines die zitten elke dag niets doen voor meerdere uren. Zou het niet goed zijn als we zouden kunnen gebruiken die machines voor de verwerking kracht van onze systemen te versterken? In deze reeks artikelen ga ik kijken naar de potentiële voordelen van het gebruik van een kantoor rooster met behulp van gevirtualiseerde omgevingen.

In deel 1 heb ik een overzicht van het systeem en technologieën zal ik gebruik maken besproken, evenals enkele van de mogelijke redenen waarom je zou willen naar een kantoor netwerk te creëren.

Job Control

Als je gaat worden uitgevoerd banen dan zul je een manier om ze te beheren nodig hebben. Jouw taak besturingssysteem (op uw werk server) moet echt goed worden doordacht voordat zelfs maar te proberen om een ​​kantoor netwerk draaien. Dus in de eerste plaats, wat zijn de taken voor een job control systeem:

  • Hand out banen op verzoek van werknemers
  • Vertel werknemers wat voor soort banen uit te voeren
  • Track jobs
  • Zorg ervoor dat alleen banen worden eenmaal uitgevoerd
  • Bieden job data voor de werknemers, of op zijn minst vertellen waar om het te krijgen

Het systeem moet ook uitbreidbaar, een oplossing die nu werkt in een enkel geval kan worden uitgebreid naar verschillende soorten taken uit te voeren als het bedrijfsleven ziet de waarde in een raster oplossing. Bijvoorbeeld, banen kunnen prioriteiten te winnen, meer dan een soort taak kan bestaan ​​(dat wil zeggen meerdere code bases), uiteindelijk kan je zelfs draaien op verschillende machines werknemer die zijn geoptimaliseerd voor elk type van werk (hoewel dat niet af te stappen van de 'generieke werknemer 'idee). Probeer altijd na te denken over de toekomst bij het ontwikkelen van systemen, kan een korte termijn visie leiden tot een langere termijn frustratie en uitbreiding van de ontwikkelingshulp tijd.

Job Server

We gaan ergens nodig hebben om onze banen controle van, dient dit te worden het enige systeem in uw netwerk, dat een vaste Resource Locator is, zijn dat een IP-adres, hostnaam, URL (met behulp van interne DNS), enz. Dit komt omdat de werknemers moeten weten waar hij moet zoeken naar een baan, werknemers moeten om de klus te controlesysteem (niet de taak besturingssysteem vindt de werknemers) te vinden.

De baan server zelf niet echt een ingewikkelde taak hebben (in een basissysteem ieder geval), moet het een lijst van taken op te slaan, met de hand uit banen, resultaten te ontvangen, en vervolgens op te slaan voor later gebruik. Hoe deze onderdelen (zoals de 'hand out jobs') worden gedefinieerd kunnen erg basic. Later kunnen we het systeem uitbreiden tot een administratie-interface toe te voegen, te bewerken, te verwijderen, te schorsen banen, maar dat wordt niet deze oefening nemen.

Er is geen enkele reden dan dat het je baan server niet kon worden een virtuele machine draaien binnen uw belangrijkste verwerkende server voorwaarde dat het niet te veel middelen afvoer van. De job-server heeft echter nodig een hoge beschikbaarheid, als het gaat neer op een vrijdag avond ga je een heel weekend van de verwerking te verliezen, mogelijk kost je een paar weken ter waarde van de verwerking van de tijd (in vergelijking met uw belangrijkste verwerking server alleen) . Wilt u misschien overwegen om uw werk-server op een load balanced omgeving voor hoge beschikbaarheid.

Basic Setup

De basis set-up voor onze job server zal bestaan ​​uit wat ik bellen naar een van mijn slappe servers (dat is Li nux, m ySql, P HP). De code draait op thea werknemers ook daadwerkelijk uit te werken welke taken het kan draaien door interactie met de job besturingssysteem databases. Later konden we creëren een web service en eigenlijk uitdelen banen in plaats van de arbeiders doen het harde werk zelf, maar voor nu zullen we blijven maken van de KISS-principe (Keep It Simple, Stupid!).

Dus, laat creëren drie mySQL tafels om te gaan met banen. Deze worden `baan`, `jobRecords` en `jobResults`.

Jobs tafel Hier ben ik met behulp van SQL Buddy een grote kleine alternatief voor phpMyAdmin , alleen maar omdat het makkelijker te installeren op CentOS (voor anderen te zien: 10 Great alternatieven voor phpMyAdmin )

Deze tabel bestaat uit 5 eenvoudige velden,

  • id: een unieke identificatie van de baan
  • naam: Kan een klant referentie, of een aantal andere identificatiegegevens worden
  • Status: Je moet weten waar de baan is, bv
    • 0: Niet gestart
    • 1: opgepikt
    • 2: Voltooid
  • started_by: Wie is er begonnen met het doen van de baan? Dit is niet helemaal nodig, maar is een mooie aanvulling zijn. Ik stel voor het bijhouden van werknemers door hun IP-adres op je netwerk
  • started_at: Wanneer heeft de werknemer start van de baan? Door het bijhouden van taken die nog niet zijn afgerond binnen X tijd weten we dat we nodig hebben op te halen de baan opnieuw te beginnen en de verwerking door een andere werknemer. Werknemers zouden stoppen met het verwerken / offline gaan voor een aantal redenen, stroomuitval, crash, netwerk verlies, etc.

Het is gemakkelijk hoe deze tafel zou kunnen worden uitgebreid met een paar extra velden om te zorgen voor de statistieken tracking, een eindtijd kolom om te zien hoe lang de baan nam, een teller om te zien hoeveel werknemers pakte de baan (uiteraard moet dit hebben de neiging om 1), job prioriteit, kan de lijst gaan en op. In meer complexe klus scenario's zou het mogelijk zijn om aan te geven hoeveel geheugen de werknemer zou de toegang tot (en dus gebruik alleen geschikte werknemers), of zelfs wat voor soort werknemer nodig zou zijn nodig.

Laten we nog een paar voorbeeld vacatures:

voorbeeld jobs

De volgende tabel weer is vrij eenvoudig te begrijpen, dit zijn onze job records. Ze zijn gekoppeld aan de belangrijkste taken tafel door een kolom `jobs_id`. De make-up van deze tabel is sterk afhankelijk van de gegevens die je nodig hebt om te leveren aan uw medewerkers, laat een zeer simpel voorbeeld, waar we vier kolommen:

  • id: ID van het record
  • Naam: Persoon naam
  • adres: Persoon adres van
  • jobs_id: De functie ID dat dit record is gekoppeld aan

De derde en laatste tabel bestaat uit een tabel met resultaten, het heeft ongeveer dezelfde make-up als onze administratie tafel, en met de toevoeging van een aantal kolommen kan deel uitmaken van de records tabel:

  • job_record_id: Link het resultaat aan de job tafel
  • resultaat: Het resultaat gegevens

... En dat is alles wat je nodig hebt voor het scheppen van controle! (Zij het op een zeer elementair niveau) In mijn geval ben ik wees naar een andere tafel waar mijn gegevens te verwerken was gevestigd, maar dit kan net zo goed een bestand, parameters om simulatie code uit te voeren, noem maar op.

Het selecteren van een job

Zoals eerder vermeld, de arbeiders zullen ons werk het beheer doen voor ons nu, dus alles wat we nodig hebben om echt te doen is het vinden van een baan dat verwerking nodig heeft en krijgt de informatie. Hoe zouden we dit doen? Nou pick onze job selectiecriteria en op zoek naar banen, in SQL ik het volgende gedaan:

  1. Neem een ​​willekeurige opdrachten die niet zijn gemarkeerd als compleet, maar van onze werknemer en opnieuw instellen (vervang __ME__ met een identifier, gemakkelijkste zou IP-adres):
      UPDATE `banen` SET `de status van` = 0 WHERE `de status van` = 1 EN `started_by` = __ME__; 
  2. Met behulp van onze job selectiecriteria, selecteert u een baan en vertellen het controlesysteem dat deze werknemer zich bezig met het:
      UPDATE `banen` SET `de status van` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `de status van` = 0 of
     (`De status van` = 1 EN `started_at`> DATE_SUB (NOW (), INTERVAL X HOUR)) ORDER BY `id` ASC; 

    Door grijpen taken die niet tot resultaten hebben geleid teruggekeerd in X hoeveelheid tijd zorgen we ervoor dat alle opdrachten worden uitgevoerd in het geval van een werknemer crashen of gaan AWOL.

  3. Naast grijp de banen details, gevolgd door de documenten zelf:
      SELECT * FROM `banen` WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Na voltooiing van het werk dat wij voegen ons resultaat records en markeer de taak als voltooid. Herinneren als taken kunnen suspend / resume te allen tijde zorgen voor een aantal robuustheid in uw script. Het kan zijn dat de taak half weg opschort door het updaten van de job control systeem, dus het controleren van het aantal records in een baan en het aantal resultaten opgeslagen in de job control systeem zou een verstandige beslissing is.

Daarnaast, terwijl dit laat zien hoe taken kunnen worden geselecteerd en beheerd vanuit een SQL-query frame dat u moet echt worden abstraheren je baan controle, zodat als je besluit over te stappen naar het gebruik van een web service, een file based systeem, XML , of enige andere aantal systemen zal het geen invloed op de code boven.

Job Configuratie

Het volgende aspect dat aandacht verdient is het werk grootte en de configuratie. Door te spelen met werk configuratie kunnen we slaan een uitstekende balans tussen snelheid, proces-replicatie, en betrouwbaarheid. Neem een ​​paar ofa scenario's:

  1. Jobs neemt een dag per uit te voeren: dit betekent dat uw werknemers moeten 15 dagen om elke taak te verwerken (denk aan 10% van het vermogen voor 2/3e van de tijd). Dit is niet duidelijk een wijs configuratie, je werk maat is veel te groot! Het zou op zijn minst het dubbele van de tijd verwerkte een baan te krijgen moet de eerste werknemer gaan AWOL (tijd op te halen dat het niet een plus opwerking tijd terug). In een ideale zou je op zijn minst een volledige baan gemakkelijk goedgekeurd door het einde van elke lange periode van inactiviteit, op die manier je de banen draaiende en in het ergste geval een baan te behouden zou twee dagen duren proces moet de eerste gaan ontbreekt.
  2. Jobs neemt een minuut te lopen: Dit betekent dat uw werknemers ongeveer 15 minuten te nemen om elke taak uit te voeren. Hoewel dit aanvankelijk ideaal lijkt, moet u extra werkzaamheden verwerken krijgen tijdens de lunch, koffiepauzes, vergaderingen, enz. dit scenario zet druk op andere gebieden van uw systeem en introduceert zijn eigen problemen. Bijvoorbeeld eerst je setup / verwerkingstijd verhouding gaat recht naar beneden te gaan, dus het verliezen van het systeem efficiëntie. Uw netwerk zal worden voortdurend streaming taak informatie aan de verschillende werknemers frustrerend medewerkers die dong hun dagelijkse werk. Je bent ook gaan om meer druk op je werk de verwerking van de server als het moet schotel uit heel veel kleine stukjes van het werk op een regelmatige basis. Ten slotte is in deze situatie als de taak server down gaat ga je een enorme achterstand van het onvoltooide werk dat de grotere banen te creëren kon de aanhoudende verwerking zalig niet van bewust dat de klus server problemen ervaren.

In werkelijkheid zal er geen een ideale configuratie voor uw netwerk setup, veel hangt af van de beschikbare middelen, soorten werk, job doorlooptijd vereisten, netwerk mogelijkheden, en zo verder. Maar een aantal richtlijnen zou zijn:

  • Grootte opdrachten zo, dat elke werknemer kan krijgen door minimaal 3-4 banen in een periode van 15 uur (de langste waarschijnlijk idle time periode)
  • Speel met de opdracht grootte zodat setup-tijd wordt relatief onbelangrijk vergeleken met de verwerkingstijd (rekening houdend met het vorige punt).
  • Als een opdracht niet volledig in het dubbele van de hoeveelheid tijd (misschien minder) je verwachten dat het voltooien ervan uitgaan dat haar verdwenen AWOL en begint de verwerking van het met een andere werknemer. Dit betekent dat u moet wachten tot drie keer de normale lengte van een baan voor het in te vullen (eventueel langer indien de latere job mislukt). U kunt deze tijd te verminderen, maar wees voorzichtig niet te verminderen te veel als je kan beginnen dupliceren de verwerking van taken op een regelmatige basis te zijn.
  • Jobs moet onafhankelijk zijn van externe eisen zo veel mogelijk. De baan server, bijvoorbeeld, mogen alleen worden gecontacteerd aan het begin en einde van elke baan.
  • Niet verzadigen uw netwerk, dit zal twee negatieve gevolgen zal hebben, zal je overdag personeel te vinden met behulp van het netwerk frustrerend en problemen kunnen worden ervaren met aansluitingen time-out een probleem dat alleen maar erger wordt als je schaal van je raster.
  • Zorg ervoor dat taken kunnen uitvoeren op uw werknemers. Als taken worden te geheugen intensieve of schijfruimte intensieve taken start afbreken en het enige wat je zal opvallen is een daling in het aantal banen verwerkt met geen echte reden waarom.

Overleggen van de resultaten van een baan

Bij het indienen van de resultaten van een baan is het belangrijk om te controleren of geen resultaten zijn ingediend door een andere werknemer, zeker als de huidige werknemer slapende al enige tijd.

Wanneer de resultaten worden ingediend ervoor te zorgen dat het aantal resultaten van het aantal records wedstrijden binnen de baan.

Zoals gezegd eerder, en kan niet genoeg worden benadrukt, bouwen fout-tolerantie in de printopdrachten en resultaten onderwerping. De werknemers kunnen (en waarschijnlijk zullen) gaan in de stand-bymodus op de meest ongelegen tijden en dit moet worden gehouden. Ook weer weg te abstraheren uw resultaten inzending zal helpen het oog op toekomstige wijzigingen in uw job control systeem veel eenvoudiger te behandelen.

Overzicht

In deze section hebben we gekeken naar wat een baan control server moet doen en hoe je een zeer fundamentele systeem opgezet. We hebben besproken hoe een baan van het besturingssysteem en de beste manier om banen te configureren om het behouden van uw kantoor grid-systeem te krijgen op te halen. Om af te sluiten, was een paragraaf of twee aan overleggen van de resultaten terug naar de job control server gepresenteerd.

  • Een job control-server beheert banen en zorgt ervoor dat al het werk units zijn afgerond
  • Door te abstraheren van uw taak te selecteren / resultaten indiening kunnen we de technologie van de controle-server zonder veel problemen
  • Stel uw taken om ervoor te zorgen dat ze snel en efficiënt te kunnen werken, zonder te veel druk op uw netwerk infrastructuur, en zonder doublures de verwerking van taken op een regelmatige basis.
  • Zorg ervoor dat u fout-tolerantie-and-error checking in uw routines op te bouwen, kunnen werknemers onderbreken en hervatten en de meest ongelegen tijden. Vergeet niet om te controleren of de resultaten zijn reeds ingediend door een andere werknemer.

Volgende keer

In deel 3 gaan we creëren onze virtuele machine en het opzetten van onze Windows-machines te worden idle-time werknemers.

Kantoor Grid Computing met behulp van virtuele omgevingen - Deel 5

Door , vrijdag 04 december 2009 23:03

Introductie

Ik werk in een bedrijf waar lopen we een groot aantal batch-taken die worden verwerkt miljoenen records van de gegevens elke dag en ik heb onlangs na te denken over alle machines die zitten elke dag niets doen voor meerdere uren. Zou het niet goed zijn als we zouden kunnen gebruiken die machines voor de verwerking kracht van onze systemen te versterken? In deze reeks artikelen ga ik kijken naar de potentiële voordelen van het gebruik van een kantoor rooster met behulp van gevirtualiseerde omgevingen.

In deel 4 we gekeken naar gebruik van tools om ervoor te zorgen dat we de laatste versie van de code en gegevensbronnen lopen zo dat de verkregen resultaten zijn altijd up-to-date met de nieuwste zakelijke informatie en logica.

Pre-implementatie

Voor de implementatie van uw netwerk het systeem als er een ding dat je doet en een ding alleen al de benchmark uw huidige systeem! Het maakt niet uit wat je collega's over hoeveel extra werk je systeem gaat doen vertellen, tenzij je nummers van deze back-up van uw garanties zijn niets. Dus,

  • hoeveel records kunt u op dit moment proces? Per dag? Per uur?
  • Hoe lang duurt het normaal gesproken te nemen om te draaien een baan?
  • Hoeveel meer capaciteit hebt u?

Er is ook bijkomende vragen:

  • Als je de verwerking van server (of een van uw verwerking servers) naar beneden gaat hoe zal dit invloed hebben op uw mogelijkheden, wordt u kreupel?
  • Welke voordelen hoop je / verwacht te krijgen van een grid-systeem?
  • Zijn uw kantoor machines die het uitvoeren van de jobs?
  • Zijn uw (of kan u van baan omgezet worden) om te werken in deze stijl van draaien?

Het laatste belangrijke punt is om je tijd te nemen op elke belangrijke verandering als deze. Update uw verwerking van code aan het werk met behulp van de nieuwe methodologie, benchmark opnieuw. Mogelijk set-up van uw verwerking van server naar een virtuele machine te laten draaien, na al uw verwerking server zal gewoon een andere werknemer (alleen een zeer krachtige een relatief). Laat het nieuwe proces om zich te vestigen.

Deployment

Mijn suggestie zou zijn om pop in het kantoor van een weekend alle installaties en installatie uit te voeren. Doe dit net voor vakantie over twee weken en laat zo andere arme vent om te gaan met de gevolgen ... misschien ook niet ...

Implementatie van een systeem als dit moet worden traag. Ondanks dat het relatief eenvoudig op te zetten dit systeem zal invloed hebben op uw hele kantoor infrastructuur (zowel de digitale een). Ten eerste, uit te rollen naar een paar machines in een tijd, monitor netwerkverkeer, hoe de werknemer gastheren uit te voeren op een dag-tot-dag basis. Het kan nodig zijn om uw werk te kunnen veranderen in reactie op uw bevindingen.

Zodra het systeem heeft afgedaan met een paar machines (laten we zeggen 10% van alle kantoormachines, dat wil zeggen 5) houden toezicht op het netwerkverkeer en de host machine performance. Volgende ijkpunt weer, moet je nu de verwerking van 33% meer arbeidsplaatsen dan de eerste benchmarks. Controleer dit zo is, of dat je in ieder geval in deze marge. Zo niet, dan onderzoeken wat er gaande is voordat je verder gaat. Herhaal deze cyclus totdat je gelukkig alle kantoormachines draaien zonder het doden van de individuele prestaties van de machine of slijpen uw netwerk tot stilstand.

Te allen tijde te houden benchmarking, zelfs nadat alle implementaties zijn gemaakt. Controleer hoe de nieuwe code-updates snelheid beïnvloeden van uw systeem, controleer dan alle werknemers rapporteren in en verwerken van orders. Langzaam (heel langzaam) increment uw taak configuratie om het beste uit uw werknemers en het netwerk.

Stop!

Wat als u wilt dat uw werknemers stoppen met draaien op enig moment? Ze zijn er allemaal lopen, regenereren, en proberen hun best om gegevens als hongerige insecten proces. Het antwoord lijkt misschien vanzelfsprekend, maar zijn waarde toe te voegen voor het geval haar over het hoofd gezien. Gewoon bewerken van uw verwerking script met een exit (0) or die () of een andere verklaring aan uw verwerking van job te doden. Een belangrijke reden waarom we altijd proberen om te updaten naar de laatste verwerking script voordat er een run!

Demonstratie System

Om deze set van korte artikelen te schrijven heb ik een heel klein rooster aan de technologieën en methodologieën aan te tonen. Ik lees veel artikelen, tutorials, en gebruikt verschillende tools te installeren en wat er gaande was op de monitor. In geen geval ben ik uitgegaan en verzadigde een heel kantoor met verkeer en noch heb ik toegang had tot een vaste medewerkers pc om te zien hoe gastheer optreden was beïnvloed.

Mijn demonstratie systeem was zeer bescheiden inderdaad. Ik gebruikte mijn reguliere desktop opgezet als een job control server. Op deze had ik geinstalleerd mySQL server geïnstalleerd is opgezet als een meester in replicatie, PHP , Â en SVN met elkaar verbonden door apache (voor toegang via werknemer VM).

Vervolgens heb ik gemaakt een CentOS werknemer machine op VirtualBox op een zes jaar oude Windows XP laptop. Ik setup geplande taken als opgegeven na het kopiëren van de VM op de machine en laat het gaan.

De virtuele machine was opgezet met PHP, subversie, en mySQL. Ik controleerde op een tak met de naam "werknemer" vanuit mijn job control servers repository en zorgde ervoor dat het kan worden bijgewerkt met behulp van "svn update '. Vervolgens heb ik setup MySQL als een slaaf en gecontroleerd of de gegevens was replicatie van MySQL op de job control server down aan de werknemer VM. Na dit alles ik het instellen van de bash script en de cron job.

Mijn verwerking script eigenlijk ging langs de lijnen van deze (zeer eenvoudige dingen):

  • Lees in het naamveld
  • Geteld is het aantal vergelijkbare namen in een tabel van de gegevensbron gehouden op de VM
  • Geteld is het aantal namen als hierboven, maar het splitsen van de naam door spaties (bijv. voornaam, midden, achternaam)
  • Herhaalde dit proces 1000 keer

Elke baan duurde ongeveer 20 minuten te lopen. Op een punt dat ik meerdere exemplaren van de werknemer VM geopend op de ramen laptop en keek toe hoe de banen worden afgevinkt door elk van de werknemer IP-adressen. Op dit punt heb ik ook bevestigd dat de replicatie automatisch opnieuw opgestart.

Het verlaten van de laptop naar stationair resulteerde in een werknemer begint om banen proces vanaf de job control server. Bij het voortzetten van het gebruik van laptop was er een vertraging van ongeveer 30-60 seconden, is dit een redelijke hoeveelheid tijd en personeel zou moeten bewust worden gemaakt dat hun machine kan pauzeren voor een korte tijd bij terugkeer naar de machine. Nieuwere machines kunnen niet een pauze van deze lange. Het voordeel van de hoeveelheid van de verwerking door deze machines tijdens inactieve perioden zou meer dan opwegen tegen medewerkers met een korte periode (bijvoorbeeld 1 minuut) wachten op de aankomst op de machines van een ochtend (ik vaak langer wachten dat dit voor een Windows Defender update plaats te vinden), op voorwaarde dat zij waren op de hoogte van deze (nuttige tijd om een ​​kopje koffie te pakken!).

Overall ik ben ervan overtuigd dat ik de technieken die kunnen worden gebruikt om een ​​dergelijk systeem te creëren gedemonstreerd. Ik heb laten zien dat een dergelijk systeem werken aan een (zeer) kleine schaal en met wat meer experimenteren kan worden opgeschaald gebruik maken van de middelen van de machines een kantoor doet. Als ik niet naar de punt van om dit te doen zou ik erg geïnteresseerd om te weten / zien wanneer iemand anders dat doet.

Conclusies / Evaluatie

De volgende voor de hand liggende stap zou zijn om daadwerkelijk te krijgen een echte wereld voorbeeld en een systeem zoals dit te implementeren binnen een kantooromgeving en zien wat er gebeurt te starten. Vraagt ​​een bedrijf om dit te plegen, zonder een spoor brandende bedrijf om de technologie en de effectiviteit te bewijzen kan een beetje moeilijk. Grid / Distributed computing is zeer populair is sommige kringen en heeft een aantal grote applicaties (BIONC, SETI @ Home, Folding @ Home, etc). Ik heb echter niet, zoek een kleinere schaal en eenvoudig systeem als dit in mijn zoekopdrachten die konden worden uitgerold binnen een kantooromgeving.

Ik heb een in principe vrij systeem met behulp van vooral open source software en tools beschikbaar zijn in vrijwel elk kantoor. De technologieën zijn in principe gedemonstreerd en tonen om te presteren en te werken zoals verwacht. Hopelijk heb ik laten zien dat met niet veel werk en met een zeer eenvoudige setup kun je een kantoor grid computing systeem dat is krachtig, goedkoop, Â en schaalbare allemaal op hetzelfde moment in te zetten.

Zodra een systeem is up and running is er bijna geen einde aan de hoeveelheid maatwerk en verbeteringen die u kunt maken. Bijvoorbeeld statistieken / benchmarking kunnen gemakkelijk worden toegevoegd met de waarde van een dergelijk systeem elke dag. Nieuwe machines kunnen snel en gemakkelijk worden toegevoegd en wanneer ze komen met upgrades voor bestaande hardware versterking van uw processing power.

Ik hoop dat je hebt genoten van het lezen van deze serie artikelen en zijn gegeven aan het denken over het draaien van een kantoor raster-systeem. De oplossing hier gepresenteerde zal niet noodzakelijk werken in alle situaties, maar dient te worden aangepast aan laten u toe om uw gegevens te verwerken gedaan met behulp van uw eigen oplossing.

Aarzel niet om mij eventuele opmerkingen, correcties of verbeteringen en ik zal mijn best doen om dit artikel aan te passen bijgewerkt te houden.













Panorama Thema door Themocracy

6 bezoekers nu online
4 gasten, 2 bots, 0 leden
Max bezoekers vandaag: 18 om 04:13 am UTC
Deze maand: 19 op 19-08-2011 06:09 GMT
Dit jaar: 130 op 28-03-2011 22:40 GMT
All time: 130 op 28-03-2011 22:40 GMT