Inlägg taggade: replikering

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 5

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

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 4 har vi tittat på att använda verktyg för att säkerställa att vi kör den senaste versionen av kod och data källor så att resultaten alltid up-to-date med den senaste affärsinformation och logik.

Pre-Deployment

Innan du distribuerar ditt nätet om det är en sak du gör och en sak bara det är riktmärken ditt nuvarande system! Oavsett vad du säger dina kolleger om hur mycket extra arbete ditt system kommer att göra om du inte har nummer för att backa upp dina garantier är ingenting. Så,

  • hur många poster kan du bearbeta just nu? Per dag? Per timme?
  • Hur lång tid tar det normalt att vända ett jobb?
  • Hur mycket mer kapacitet har du?

Det finns också ytterligare frågor:

  • Om din behandling server (eller en av dina bearbetning servrar) går ner hur kommer detta att påverka dina möjligheter, kommer du att handikappade?
  • Vilka fördelar hoppas du / räkna med att få från ett rutnät system?
  • Är dina kontorsmaskiner kan köra jobb?
  • Är din (eller kan du jobb omvandlas) till wrok i denna stil att köra?

Den sista viktiga punkten är att ta din tid på någon större förändring så här. Uppdatera din processkod att arbeta med den nya metoden, riktmärke igen. Möjligen ställa in din behandling server att köra en virtuell maskin, efter alla dina behandling servern kommer bara att vara en annan arbetare (bara en mycket kraftfull en relativt). Låt den nya processen att lösa.

Deployment

Mitt förslag skulle vara att titta in på kontoret en helg utföra alla installationer och installation. Gör detta precis innan en fjorton dagars semester och lämnar så att andra fattiga kap att ta itu med konsekvenserna ... kanske inte ...

Deployment för ett system som detta måste vara långsam. Trots att det är relativt enkelt att ställa in detta system kommer att påverka hela ditt kontor infrastruktur (såväl den digitala ett). För det första, rulla ut till ett par av maskiner åt gången, bildskärm nätverkstrafik, hur arbetstagare värdarna utföra på en dag till dag. Du kan behöva ändra ditt jobb konfiguration som svar på dina resultat.

När systemet har satt sig med några maskiner (låt säga 10% av alla kontorsmaskiner, dvs 5) Håll trafikövervakning nätverk och värddatorn performance. Nästa riktmärke igen bör du nu behandla 33% fler arbetstillfällen än dina första riktmärken. Kontrollera det är så, eller att du åtminstone i detta Ballpark. Om inte, undersöka vad som händer innan vi går vidare. Upprepa denna cykel tills du gärna har alla kontorsmaskiner igång utan att döda enskilda maskinens prestanda eller slipning ditt nätverk till ett stopp.

Alltid hålla benchmarking, även efter alla installationer görs. Kontrollera hur nya kod uppdateringar påverkar hastigheten på ditt system, kontrollera alla arbetstagare redovisning och bearbetning jobb. Långsamt (långsamt) stega ditt jobb konfiguration för att få ut det bästa av dina arbetare och nätverk.

Stopp!

Vad händer om du vill stoppa dina anställda från att köras någon gång? De är alla där ute som kör, regenerering, och försöker sitt bästa för att bearbeta data som hungriga insekter. Svaret kan tyckas självklart men värt att lägga i fall den förbises. Helt enkelt redigera din behandling manus med en exit (0) eller dör () eller någon annan förklaring till döda din behandling jobb. En viktig orsak till varför vi alltid försöker att uppdatera till den senaste bearbetningen manus innan loppet!

Demonstration System

För att skriva denna rad korta artiklar jag skapat en mycket liten galler att demonstrera teknik och metoder. Jag läste massor av artiklar, tutorials och använt olika verktyg för att ställa in och övervaka vad som pågick. På något sätt har jag gått ut och mättade en hel kontor med trafik och inte heller har jag haft tillgång till en ordinarie personal medlemmar PC för att se hur värden prestanda påverkades.

Min demonstration systemet var mycket ödmjuk faktiskt. Jag använde min vanliga skrivbordet inrättades som en kontroll över arbetet server. På denna hade jag installerat mySQL server installerad inrättades som en mästare i replikering, PHP , A och SVN länkade via apache (för åtkomst via arbetare VM).

Jag skapade sedan en CentOS arbetsdator på VirtualBox på en 6 år gammal Windows XP laptop. Jag ställa schemalagda uppgifter som anges efter att ha kopierat VM på maskinen och låt den gå.

Den virtuella maskinen sattes upp med PHP, subversion, och mySQL. Jag kollade ut en gren som heter "arbetstagare" från mitt jobb styrning servrar arkiv och såg till att det kan uppdateras med hjälp av "svn update '. Nästa Jag installation MySQL som en slav och kontroll av att data replikeras från MySQL på jobbet styrservern ner till arbetstagaren VM. Efter allt detta har jag ställa in bash script och cron-jobb.

Min bearbetning manus gick i stort sett i linje med detta (mycket enkla saker):

  • Läs i namnfältet
  • Räknade antal likadana namn i en tabell från datakällan hålls på VM
  • Räknade antal namn som ovan men att dela upp namnet med mellanslag (dvs förnamn, mitten, efternamn)
  • Upprepad denna process 1000 gånger

Varje jobb tog ungefär 20 minuter att köra. Vid ett tillfälle öppnade jag flera kopior av arbetstagaren VM på Windows laptop och såg de arbeten kontrolleras av var och en av adresserna arbetstagare IP. Här vill jag också bekräftat att replikering automatiskt startas om.

Lämna den bärbara datorn på tomgång resulterade i att arbetstagaren börjar bearbeta jobb från jobbet kontrollen servern. När återuppta laptop användning fanns en fördröjning på cirka 30-60 sekunder, är detta en hel del tid och personal skulle behöva vara medvetna om att deras maskin kan stanna en kort stund när de återvänder till maskinen. Nyare maskiner kan inte ha en paus på denna långa. Fördelen med den mängd som utförs av dessa maskiner under lediga perioder skulle mer än uppväga anställda tvungna att vänta en kort period (säg 1 minut) när de anländer till sina maskiner av en morgon (jag väntar ofta längre än detta för en Windows Defender uppdatera ske) förutsatt att de fick kännedom om detta (bra tid för att ta en morgonkaffe!).

Överlag är jag säker på att jag har visat den teknik som skulle kunna användas för att skapa ett sådant system. Jag har visat att ett sådant system fungerar på en (mycket) liten skala och med lite mer experimenterande kan skalas upp utnyttja resurserna i en kontorets maskiner. Om jag inte får till den punkt att göra detta skulle jag vara mycket intresserad av att veta / se när någon annan gör det.

Slutsatser / Utvärdering

Nästa självklara steg skulle vara att faktiskt få ett exempel från verkliga livet och börja distribuera ett system som detta inom en kontorsmiljö och se vad som händer. Att be ett företag att engagera sig i detta utan ett spår flammande företag att visa tekniken och effektivitet kan vara lite svårt. Grid / distributed computing är mycket populärt är vissa kretsar och har några stora program (BIONC, SETI @ Home, Folding @ Home, etc). Jag har dock inte hitta en mindre skala och enkelt system som detta i mina sökningar som kan rullas ut inom ett kontorsmiljö.

Jag skapade en i grunden gratis system använder mest öppen källkod och verktyg som finns i nästan alla kontor. Den teknik var grunden visat och visar att utföra och fungera som förväntat. Förhoppningsvis har jag visar att med inte mycket arbete och med en mycket enkel installation kan du distribuera en Office-systemet grid computing som är kraftfull, billig, A och skalbar alla på samma gång.

När ett system är igång det finns nästan ingen ände på hur mycket anpassning och förbättringar du kan göra. Till exempel statistik / benchmarking kan enkelt läggas visar värdet av ett sådant system varje dag. Nya maskiner kan läggas snabbt och enkelt och när de kommer med uppgraderingar till befintlig hårdvara stärka ditt processorkraft.

Jag hoppas du har haft att läsa denna serie av artiklar och gett dig en tankeställare om att köra en System Office nätet. Den lösning som presenteras här kommer inte nödvändigtvis fungerar i alla situationer men bör kunna anpassas så att du kan få din databehandling sker med din egen lösning.

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.













Panorama Tema av Themocracy

2 besökare online nu
1 gäster, 1 bots, 0 medlemmar
Max besökare idag: 13 klockan 07:30 pm UTC
Denna månad: 18 kl 2012/07/05 04:35 UTC
I år: 69 vid 27-02-2012 09:56 am UTC
Tiderna: 130 kl 28-03-2011 10:40 UTC