Inlägg taggade: svn

Office Grid Computing använder virtuella miljöer - Del 4

Genom att , fredag ​​4 dec 2009 11:59

Införandet

Jag arbetar i ett företag där vi köra många batchjobb behandla miljontals skivor av data varje dag och jag har funderat nyligen om alla de maskiner som sitter runt varje dag gör ingenting i flera timmar. Skulle det inte vara bra om vi kunde använda dessa maskiner för att stärka processorkraften i våra system? I denna uppsättning artiklar jag kommer att titta på de potentiella fördelarna med att anställa ett kontor galler med virtualiserade miljöer.

I del 3 har vi skapat vår virtuella maskin och konfigurera Windows maskiner för att bli idle deltidsarbetande.

Köra den senaste koden

Oundvikligen har skapat dina anställda affärslogik kommer att förändras, kommer buggar hittas kommer snabbare och mer effektiv kod produceras vilket lämnar dina arbetare satt runt bearbeta data med hjälp av gamla illaluktande kod . Hur då ser vi till att vi alltid du använder den senaste och bästa versionen av våra bearbetning skript?

Det finns några mycket enkla enkla sätt vi kunde göra detta, tricket är dock att minska processorkraft och nätverkstrafik för att uppnå detta. Låt oss börja med den enklaste av lösningar och förbättra den långsamt under ett par iterationer.

Den första metoden skulle vara att helt enkelt ansluta till vårt jobb styrning server (via samba, FTP, eller liknande) och dra ner den senaste versionen av koden. Inte mycket effektiv, men det kommer att göra jobbet. Låt oss öka på den något, vad sägs om att skapa en rsync manus och använda det varje gång istället? Alternativt kan det om att sätta vår senaste bearbetning skriptet i subversion kolla koden initialt och sedan bara uppdatera vår kod på varje körning ( svn update )?

Till slut kunde vi sluta med en bash skript (kallas av cron var 10 minuter) som ser så enkelt så här:

  #! / Bin / sh
 om PS AX | grep-v grep | grep php > / dev / null
 därefter
     echo "Job närvarande bearbetar, avfart"
 annars
     echo "Job inte körs, starta nu"
     cd / sökväg / till / arbetar / kopiering
     svn uppdatering
     php yourJobProcessingScript.php
 fi 

Nu kan vi vara säkra på att för varje gång vi definitivt kör den senaste koden. Vi säkerställer detta genom att uppdatera vår kodbas varje gång vi gör en körning och minska nätverkstrafiken genom att endast överföra filer skillnaderna mellan vårt nätverk.

I min demonstration Setup gjorde jag precis som ovan. Subversion installerades på mitt jobb behandling server och jag helt enkelt drog senaste koden från en arbetstagare filial med hjälp av "svn update '. Jag lade också till en tagg versionsnummer till min behandling manus som återvände till databasen som en del av resultaten avkastning. På så sätt kunde jag se att min kod var att uppdateras varje gång jag kopierade min stammen till den anställde grenen, dvs att jag var definitivt kör den senaste bearbetningen skriptet.

Med de senaste uppgifterna

Om ditt jobb bearbetning utnyttjar datakällor därefter vid någon tidpunkt dessa kommer att uppdateras också. Om du ringa dina datakällor på ett mycket ovanligt basis du kommer att översvämma ditt nätverk med trafik så snart som dina anställda börjar köra föra allt till ett stillastående. För min lösning jag bestämde att jag vill flytta mina datakällor runt med mina virtuella maskiner.

Håll du hästar där! Vad händer om jag datakällor är enorma? Ja detta är verkligen ett fall av hur mycket data vi talar? Det kan vara mer kostnadseffektivt att installera en extra större hårddisk i varje maskin än att köpa en ytterligare bearbetning server. Detta är en fråga om budget och är upp till verksamheten att avgöra. Det kanske att dina datakällor är så stora att det bara omöjligt att hålla den mängd data i din arbetsdatorer. I så fall vad skulle du göra? Jo vi kunde se på att ringa en lokal dataserver, men detta kan orsaka problem med nätverket. I detta fall ett rutnät system som detta kan bli orealistiskt att inkludera i din kontorsmiljö. Det kan också vara så att du kan titta på alternativa kör strategier, till exempel endast ringa dina arbetare från 20:00 till 06:00 varje kväll och / eller strypning dataförfrågningar källa.

Flytta på låt säga vår datakällor uppgår till 100 GB data. Jo det är en hel del uppgifter att röra sig nätverket på en uppdatering. Hur skulle vi se till att vi har den senaste versionen av data i detta fall? Rsync är en möjlighet, men personligen tycker jag genom att köra din senaste datakällan på ditt jobb behandling server och ställa upp detta som en mästare i replikering (med en fin lång bin log) kan vara vägen att gå:

replikation Genom att ställa alla dina anställda upp som en slav till servern jobb kontroll uppdateringar till dina datakällor kommer sippra ned fint för de anställda utan en enorm ökning av aktiviteten inom nätverket (dvs om du gör en enorm uppgifter uppdateringen och alla dina anställda sparka in på en gång). Detta har fördelar jämfört med rsync i att du inte skulle få en lång paus före varje jobb, som databasuppdateringar den MySQL kommer demonen på din arbetstagaren kontinuerligt uppdatera sina data medan behandlingen fortsätter.

Detta är hur jag in min demonstration server. För att ställa in replikering jag följde guiden på mySQL platsen ( Upprättande replikering ) och inom 20 minuter hade jag min initial arbetstagaren replikera kontroll över arbetet servrar dataset. För varje ytterligare arbetstagare replikering inställningar och process fungerade varje gång när VM kopierades.

Sammanfattning

I detta avsnitt av artikeln har vi tittat på hur enkelt och smärtfritt det är att hålla din processkod uppdaterad med using rsync eller subverion (SVN) att göra arbetet och minska nätverkstrafiken på samma time. Vi diskuterade också hur att hålla din information om datakällan up-to-date genom att låta den sippra ner till alla dina anställda. Således har vi området se till att vi håller jämna steg med affärslogik och information i vårt kontor bärverk. Det kommer naturligtvis att vara otaliga alternativ till att utföra dessa uppgifter, men här fanns två enkla exempel för att visa hur lätt en lösning är att komma med.

Nästa gång

I den sista delen av denna serie, passande namnet del 5 , kommer vi att diskutera utbyggnaden av detta system. Jag sammanfattar vad som har lärt sig och vad jag lyckats skapa.

Office Grid Computing använder virtuella miljöer - Del 1

Genom att , fredag ​​4 dec 2009 11:23

Införandet

Jag arbetar i ett företag där vi köra många batchjobb behandla miljontals skivor av data varje dag och jag har funderat nyligen om alla de maskiner som sitter runt varje dag gör ingenting i flera timmar. Skulle det inte vara bra om vi kunde använda dessa maskiner för att stärka processorkraften i våra system? I denna uppsättning artiklar jag kommer att titta på de potentiella fördelarna med att anställa ett kontor galler med virtualiserade miljöer.

Som en PHP utvecklare jag kommer att använda verktyg som jag använder varje dag, nämligen Linux, mySQL , PHP, VirtualBox och Subversion (SVN). Men jag hoppas att denna guide kommer anpassa sig till andra språk och tekniker lika bra.

Lösningen ger jag kommer att vara mycket löst baserad på den typ av behandling vi skulle behöver för att uppnå men detta kanske inte är sant genom hela artikeln som jag kommer att ändra saker och ting för enkelhetens skull, eller för att producera mer intressanta användning scenarier.

Dessa virtualiserade miljöer kommer att köras på Windows-maskiner eftersom det är vad majoriteten av kontor köras. De behandlingar som den kontorsmaskiner inte ska störa personalen att använda dessa maskiner bör kräver inget underhåll på maskinen och vara lätt att sättas på nya maskiner när de blir tillgängliga. Dessutom bör nya virtuella maskiner kräver ingen ytterligare konfiguration eftersom det kraftigt minskar skalbarhet och lätthet med vilken nätet kan förlängas.

Varför Distribuera ett Office Computing Grid?

Först kanske du tänker, varför inte bara använda en resurs cloud computing som Amazons EC2-plattform ? Väl anledningarna kan vara flera, till exempel:

  • Du kommer inte överlåta vissa uppgifter till ett moln datormiljö
  • Du kan inte ställa vissa data i ett cloud computing miljö för juridiska skäl (t.ex. uppgifter att lämna landet), eventuellt av juridiska skäl, t.ex. NHS poster.
  • Du vill behålla dina processenheter stänga och har full kontroll över hårdvaran för
  • Du har inte projektmedel för att köra moln instanser
  • Ditt kontor har inte en anslutning till Internet och därför det är inte möjligt att använda ett moln resurs
  • Du gillar inte regn, moln föreslår regn, därför du håller borta

Jag är säker på listan skulle kunna fortsätta, men jag tror det räcker för nu.

Fördelar med ett Office Computing Grid

Tja, kan göra några matte (och i sann fysik stil kan göra några svepande antaganden). Tänk dig att du har stora biffiga bearbetning server som kör 100 jobb per dag. På kontoret har du 50 maskiner som är tomgång 16 timmar om dagen, är vart och ett av dessa maskiner 10% så kraftfull som din biffiga behandling Sever. (Alla resultat här är rundade underskatta prestandaökning).

Så 1 maskin * 10% effekt * 2/3 tid = 0,067 dvs 1 skrivbordet bearbetning i viloläge tiden kunde bearbeta 6 fulla jobb per dag.

Om du nu skala upp detta tar det 15 lediga skrivbord för att bearbeta så många jobb per dag som din huvudsakliga behandlingen server gör.

Så i vårt låtsas kontor 50 maskiner vi kunde öka vår processorkraft från 1 server upp till 4 fulla bearbetning servrar, eller vi kan behandla 400 jobb per dag istället för 100.

Lägg märke till att inga investeringar i ny hårdvara företaget har just ökat sin batch-bearbetning kapacitet 4 gånger! Potentiellt du kommer att öka din elförbrukning utan från de flesta kontorsmiljöer Jag har varit i maskiner i allmänhet kvar på natten ändå, så du kan se detta som en grön initiativ.

Andra fördelar innebär också att investeringar i nya (eller uppdaterad) bearbetning servrar kan fördröjas om dina kontorsmaskiner är tillräckliga och att när du förbättrar kraften i dina kontorsmaskiner kontoret nätet blir mer kraftfull automatiskt.

Technologies

Vad du behöver? (Eller mer korrekt vad gjorde jag använder):

  • Idle kontorsmaskiner (i mitt fall en extra gammalt Windows XP laptop)
  • VirtualBox (eller en annan virtualisering klientprogram)
  • En virtuell maskin med PHP, MySQL running kör en skära ner OS, jag ringer dessa mina Limp servrar :)
  • Jobb för att köra
  • Job server (kan vara en annan virtuell maskin någonstans)

Typiska jobb

De typer av jobb som detta system är konstruerat att köras är följande:

  • Systemet får en förteckning över uppgifter på vilka vi måste matcha och ger resultat
  • Matchande innebär kontroll / söka flera (ganska statisk) datakällor
  • Resultat från datakällor kan kräva ytterligare validering, sammanslagning, kontroll av ytterligare datakällor som svar till resultat
  • Data tillbaka med matchande poster som är fullt validerade och bearbetas
  • Varje post inom ett jobb är oberoende av de övriga

Så i princip vi tittar på kör jobb som kräver en blandning av databas uppslagningar och några siffertuggande, en ganska typiskt scenario i en företagsmiljö.

Grid lösningar är inte bara fördelaktigt för behandling av arbeten av denna typ. I princip kan varje process som kan delas upp i självständiga enheter köras parallellt. Se denna Wikipedia för exempel och mer information: Grid Computing , men ett par kända exempel är Seti @ Home och BIONC . Det finns ramar för att köra datorer galler, och dessa är väl värda att titta närmare på.

Vad ska vi uppnå?

Vid slutet av dessa artiklar hoppas jag att visa att distribuera ett kontor nätet behöver inte vara enormt dyrt eller tidskrävande. Jag kommer att diskutera:

  • Koppla in systemet kontroll över arbetet, jobbet konfiguration
  • Skapa en lämplig behandling virtuell maskin
  • Hur man ställer in systemet på en Windows-dator
  • Se till att du använder den senaste koden och data
  • Deployment och benchmarking
  • Blickar framåt

Jag är huset (ok jag byggde, så skrev) ett exempel för att testa begreppen på en lokal dator med Windows XP och min "GridMachine" virtuell maskin. Mitt jobb kontrollen servern kommer att vara min huvudsakliga dator som kör Fedora 11 .

Detta är inte på något sätt tänkt att visa en fullt fungerande robust system, innebar det mer av en demonstration och diskutera visar att dessa saker kan uppnås på ett relativt kort tid och till låg kostnad. Du får gärna skicka mig kommentarer, korrigeringar eller förbättringar och jag kommer göra mitt bästa för att hålla den här artikeln uppdateras för att matcha.

Nästa gång

I del 2 kommer jag börja med att titta på jobbet styrsystemet, och se i hur arbete ska konfigureras för att uppnå största möjliga behandling och samtidigt säkerställa att varje jobb behandlas utan att misslyckas.













Panorama Tema av Themocracy

8 besökare online nu
4 personer, 4 bots, 0 medlemmar
Max besökare idag: 56 kl 08:41 am UTC
Denna månad: 56 kl 25-04-2012 08:41 am UTC
I år: 69 vid 27-02-2012 09:56 am UTC
Tiderna: 130 kl 28-03-2011 10:40 UTC