Office Grid Computing gamit kapaligiran Virtual - Part 2

By Steven Lloyd Watkin , Biyernes Disyembre 4, 2009 11:23

Pagpapakilala

trabaho ko sa isang kumpanya na kung saan tumakbo kami maraming jobs batch processing milyon-milyong mga talaan ng data sa bawat araw at ako ay iisip kamakailan lamang tungkol sa lahat ng mga makina na umupo sa paligid ng bawat at bawat araw paggawa ng wala para sa ilang oras. Hindi ba ito ay mabuti kung maaari naming gamitin ang mga makina sa magbolster ang pagpoproseso ng kapangyarihan ng aming mga sistema? Sa set na ito ng mga artikulo na ako ng pagpunta sa tumingin sa mga potensyal na benepisyo ng employing isang opisina parilya gamit virtualised kapaligiran.

Sa Part 1 ako nagbigay ng isang pangkalahatang ideya ng mga sistema at teknolohiya ay ako ay gumagamit pati na rin ang usapan na ang ilan sa mga potensyal na kadahilanan kung bakit nais mo nais na lumikha ng isang opisina grid.

Job Control

Kung ikaw ay pagpunta upang patakbuhin ang mga trabaho pagkatapos ikaw ay pagpunta sa kailangan ang ilang mga paraan upang pamahalaan ang mga ito. Ang iyong trabaho control system (sa iyong trabaho server) pangangailangan upang maging tunay mabuti Akala out bago kahit na pagtatangka upang patakbuhin ang isang opisina grid. Kaya una, ano ang mga gawain para sa isang sistema ng trabaho control:

  • Hand out jobs sa kahilingan mula sa mga manggagawa
  • Sabihin sa mga manggagawa kung ano ang uri ng mga trabaho na tumakbo
  • Subaybayan ang mga trabaho
  • Tiyakin na ang mga trabaho ay tatakbo lamang sa sandaling
  • Magbigay ng mga data na trabaho sa mga manggagawa, o hindi bababa sa sabihin sa kanila kung saan sa kumuha ito

Ang sistema rin ay kinakailangan na extensible, ang isang solusyon na gumagana para sa ngayon sa isang solong kaso ay maaaring extended na tumakbo ng ilang mga uri ng mga trabaho bilang negosyo ang nakikita ang halaga sa isang solusyon grid. Halimbawa, mga trabaho ay maaaring makakuha ng prayoridad, higit sa isang uri ng trabaho ay maaaring umiiral (ibig sabihin ng ilang mga code base), sa huli ay maaari kang kahit na tumakbo ng ilang iba't-ibang machine na manggagawa ay optimized para sa bawat uri ng trabaho (kahit na ay ilipat ang layo mula sa 'generic worker 'ideya). Laging subukan na isipin ang tungkol sa hinaharap kapag pagbuo ng mga sistema, ang isang maikling kataga ng paningin ay maaaring humantong sa mas matagal na kataga ng kabiguan at nadagdagan ang pag-unlad ng oras.

Job Server

Kami ay pagpunta sa kailangan lugar upang makontrol ang aming mga trabaho mula sa, ito ay dapat na lamang ang sistema sa iyong parilya na may isang nakapirming locator mapagkukunan, maging na ang isang IP address, host name, URL (gamit ang panloob na DNS), atbp Ito ay dahil ang mga manggagawa na kailangan upang malaman kung saan sa hitsura para sa mga trabaho, mga manggagawa na kailangan upang mahanap ang mga trabaho system control (hindi ang trabaho system control mahanap ang mga manggagawa).

Ang trabaho server hindi mismo ay hindi tunay magkaroon ng isang komplikadong gawain (sa isang pangunahing sistema sa papaano mang paraan), ang mga pangangailangan sa tindahan ng isang listahan ng mga trabaho, kamay out jobs, tumanggap ng mga resulta, at sa dakong huli tindahan ito para sa mamaya pagsasauli. Paano ang mga bahagi (tulad ng 'kamay out jobs') ay tinukoy ay maaaring maging lubhang basic. Mamaya sa maaari naming palawakin ang sistema upang isama ang isang pangangasiwa interface upang idagdag, i-edit, tanggalin, isuspinde trabaho ngunit ito ay lampas na ito ehersisyo.

May dahilan walang anomang pagkatapos na ang iyong trabaho ng server ay hindi maaaring maging isang virtual machine na tumatakbo sa loob ng iyong pangunahing processing server na ibinigay ito ay hindi alisan ng tubig masyadong maraming mga resources mula sa mga ito. Ang trabaho server gayunpaman ay kailangan mataas na availability, kung ito goes down sa isang Biyernes gabi ikaw ay pagpunta sa mawalan ng isang buong weekend ng processing, potensyal na gastos sa iyo ng ilang linggo nagkakahalaga ng processing time (kapag inihambing sa iyong pangunahing pagpoproseso ng server lamang) . Baka gusto mong isaalang-alang ang paglagay ng iyong trabaho sa server ang isang load balanseng kapaligiran para sa mataas na availability.

Basic Setup

Ang basic na setup para sa aming mga server ng ​​trabaho ay binubuo ng kung ano ako ng pagtawag ng isa sa aking mga server Limp (iyon ay Li nux, m ySql, P HP). Ang code na tumatakbo sa Thea manggagawa ay tunay na trabaho sa labas kung ano ang trabaho ito maaari tumakbo sa pamamagitan ng pakikipag-ugnay sa trabaho control database system. Mamaya sa maaari naming lumikha ng isang web service at ang tunay na kamay ang trabaho sa halip na sa pagkakaroon ng mga manggagawa gawin ang mga hirap sa trabaho sa kanilang sarili, ngunit sa ngayon kami ay patuloy na magamit ang mga prinsipyo KISS (Panatilihin itong Simple, Stupid!).

Kaya, nagbibigay-daan sa lumikha ng tatlong MySQL talahanayan sa pakikitungo sa mga trabaho. Ang mga ito ay `jobs`, `jobRecords`, at `` jobResults.

jobs table Narito ako gamit SQL Buddy ng isang magandang maliit na alternatibo sa phpMyAdmin dahil lang nito mas madali na i-install sa centOS (para sa iba na makita: 10 Great alternatibo sa phpMyAdmin )

table na ito ay binubuo ng 5 mga simpleng mga patlang,

  • id: natatanging kilalanin ang mga trabaho
  • pangalan: Puwede maging isang client sanggunian, o anumang bilang ng iba pang mga tagapagpakilala
  • Status: kailangan mong malaman kung ang trabaho ay sa, halimbawa,
    • 0: Hindi makapagsimula
    • 1: Napili up
    • 2: Nakumpleto
  • started_by: Sino ang nagsimula paggawa ng mga trabaho? Ito ay hindi lubos na kinakailangan ngunit ay isang nice na magkaroon. gusto ko iminumungkahi tracking manggagawa sa pamamagitan ng kanilang mga IP address sa iyong network
  • started_at: Kailan worker ang simula ng trabaho? Sa pamamagitan ng pagsubaybay sa mga trabaho na hindi natapos sa loob ng X halaga ng oras na alam namin na kailangan namin upang kunin ang trabaho na naman at simulan ang proseso sa pamamagitan ng isa pang manggagawa. Manggagawa ay maaaring ihinto ang processing / offline pumunta para sa anumang bilang ng mga dahilan, kapangyarihan kabiguan, crash, network pagkawala, atbp

Ito ay madaling kung paano talahanayan na ito ay maaaring pinalawak na may ilang karagdagang mga patlang upang pahintulutan para sa mga istatistika sa pagsubaybay, ang isang tapusin ng haligi na oras upang makita kung gaano katagal trabaho ang kinuha, ang isang counter upang makita kung gaano karaming mga manggagawa pumili ng up ang trabaho (malinaw naman ito ng mga pangangailangan upang magkaroon ng hilig sa 1), trabaho priority, ang listahan ay maaaring pumunta sa at sa. Sa mga mas kumplikadong mga pangyayari trabaho ay ito ay posible na tukuyin kung magkano ang memory ang manggagawa ay kailangan ng access sa (at sa gayon lamang gamitin na mga manggagawa), o kahit anong uri ng manggagawa ay kinakailangan.

Lets magdagdag ng ilang mga trabaho halimbawa:

Halimbawa jobs

Ang susunod na talahanayan muli ay ganap simple sa maintindihan, ang mga ito ay ang aming trabaho mga talaan. Sila ay na-link sa main table ng trabaho sa pamamagitan ng isang hanay `` jobs_id. Ang mga gumawa ng up ng talahanayan na ito very much ay depende sa mga data na kailangan mo sa supply sa iyong mga manggagawa, pinapayagan gumawa ng isang tunay simpleng halimbawa kung saan kami ay may apat na mga haligi:

  • id: ID ng mga record
  • pangalan: Person's name
  • address: Person's address
  • jobs_id: Ang trabaho ID record na ito ay naka-link sa

Ang ikatlo at huling mesa ay binubuo ng isang talahanayan na resulta, ito ay may marami ang parehong gumawa ng up bilang aming mga rekord table, at kasama ang karagdagan ng ilang mga hanay ay maaaring maging bahagi ng talahanayan ng mga talaan:

  • job_record_id: Link ang resulta sa talahanayan sa trabaho
  • resulta: Ang mga resulta ng data

... At iyon ang lahat na kailangan mo para sa trabaho control! (Kahit sa isang tunay pangunahing antas) Sa aking kaso ako ng matulis sa isa pang table kung saan ang aking data sa proseso ay matatagpuan, ngunit ito ay maaaring lamang bilang madaling na-file ng isang, mga parameter na tumakbo kunwa code, ikaw pangalan ito.

Ang pagpili ng isang trabaho

Katulad ng nakasaad sa dati, ang mga manggagawa ay gawin ang aming trabaho sa pamamahala para sa amin para sa ngayon, kaya lahat ng kailangan naming talagang gawin ay ang makahanap ng trabaho na nangangailangan ng processing at makakuha ng impormasyon. Kung paano namin gawin ito? Well pick sa aming pamantayan sa pagpili ng trabaho at hitsura para sa mga trabaho, sa SQL ko ang mga sumusunod:

  1. Gumawa ng anumang trabaho na hindi na minarkahan bilang kumpleto ngunit mula sa aming mga manggagawa at i-reset ito (kapalit __ME__ sa isang identifier, pinakamadaling ay IP address):
      UPDATE `` jobs SET `status` = 0 SAAN `status` = 1 AT `started_by` = __ME__; 
  2. Paggamit ng aming trabaho pamantayan pagpili, piliin ang isang trabaho at sabihin ang control system na worker na ito ay ang pakikitungo sa mga ito:
      UPDATE `` jobs SET `status` = 1, `started_by` = __ME__, `started_at` = NGAYON () SAAN `status` = 0 OR
     (`Status` = 1 AT `` started_at> DATE_SUB (NGAYON (), na pagitan ng X HOUR)) MAAYOS NG `id` ASC; 

    Sa pamamagitan ng daklot jobs na hindi na bumalik sa mga resulta ng X na halaga ng oras namin matiyak na ang lahat ng mga trabaho ay tatakbo sa kaganapan ng isang worker crashing o pagpunta AWOL.

  3. Susunod na sunggaban ang mga detalye ng mga trabaho na sinusundan ng mga talaan sa kanilang sarili:
      PUMILI * MULA `jobs` `WHERE started_by` = __ME__ LIMIT 1;
     PUMILI * MULA `job_records` SAAN `id` = __JOBID__; 

Sa pagkumpleto ng mga trabaho namin ipasok ang aming mga tala resulta at markahan ang mga trabaho bilang kumpleto. Tandaan na trabaho ay maaaring suspindihin / resume sa anumang oras payagan para sa ilang bulas sa iyong mga script. Ito ay maaaring maging na gawain ang suspends kalahati paraan sa pamamagitan ng pag-update ng trabaho ang sistema ng control, kaya tingin sa mga bilang ng mga record sa isang trabaho at ang bilang ng mga resulta-save sa sistema ng trabaho control ay isang matalino ilipat.

Sa karagdagan, habang ito ay nagpapakita kung paano jobs maaaring mapili at pinamamahalaang mula sa isang SQL query-frame ay dapat na tunay na maging abstracting iyong trabaho control kaya na kung magpasya ka na lumipat sa paggamit ng isang web service, isang file based system, XML , o anumang iba pang bilang ng mga sistema ay hindi ito makakaapekto ang code sa itaas ito.

Job Configuration

Ang susunod na aspeto upang isaalang-alang ang trabaho sukat at configuration. Sa pamamagitan ng paglalaro sa trabaho configuration maaari naming hampasin ng isang mahusay na balanse sa pagitan ng bilis, pagtitiklop proseso, at pagiging maaasahan. Sumakay ng isang pares of pangyayari:

  1. Jobs kumuha ng 1 araw sa bawat tumakbo: Ito ay nangangahulugan na ang iyong mga manggagawa kailangan ng 15 araw sa proseso ng bawat trabaho (tandaan ang 10% ng kapangyarihan para sa 2/3rds ng oras). Ito ay malinaw na hindi isang pantas configuration, ang iyong trabaho sukat ay masyadong malaki! Ito ay tumagal ng hindi bababa sa double ang oras upang makakuha ng trabaho proseso ang dapat ang unang worker pumunta AWOL (oras sa pick up na hindi na ito ay nabalik isang resulta plus reprocessing oras). Sa isang ideal na gusto mong magkaroon ng hindi bababa sa isang buong trabaho madaling nalilimas sa pamamagitan ng sa dulo ng bawat matagal idle na panahon, na ang paraan na panatilihin mo ang trabaho gris higit at sa pinakamalala kaso ang isang trabaho ay tumagal ng dalawang araw na proseso ay dapat ang unang pumunta nawawala.
  2. Jobs kumuha 1 minuto na tumakbo: Ito ay nangangahulugan na ang iyong mga manggagawa kumuha ng mga 15 minuto upang patakbuhin ang bawat trabaho. Habang ito ay maaaring sa una mukhang ideal, kayo makakuha ng karagdagang trabaho sa panahon ng pagpoproseso ng lunch time, coffee break, pulong, etc senaryo na ito inilalagay pilay sa ibang mga lugar ng iyong system at introduces kanyang sariling mga problema. Halimbawa, una iyong setup / processing time ratio ay pagpunta sa pumunta karapatan down, kaya nawawala ang sistema na kahusayan. Ang iyong network ay pagpunta sa maging patuloy streaming trabaho impormasyon sa mga iba't ibang mga manggagawa nakakabigo kawani na dong kanilang araw-araw na gawain. din ka pagpunta sa ilagay sa karagdagang pinagmanahan sa iyong server sa pagpoproseso trabaho tulad ng ito ay upang magbigay ng maraming at lots ng maliit na piraso ng trabaho sa isang regular na batayan. Sa wakas, sa sitwasyong ito kung ang iyong trabaho server goes down ikaw ay pagpunta upang lumikha ng isang malaking back log ng uncompleted trabaho datapwa't mas malaking trabaho ay maaaring patuloy sa pagpoproseso blissfully nakalimot na ang mga trabaho ng server ay nakakaranas ng mga problema.

Sa katotohanan ay hindi magkakaroon ng isa ideal pagsasaayos para sa iyong parilya setup, marami ay depende sa magagamit na mapagkukunan, mga uri ng trabaho, trabaho turnaround time kinakailangan, ang network na kakayahan, at iba pa. Subalit ang ilang mga alituntunin ay magiging:

  • jobs Size kaya na manggagawa sa bawat ay maaaring makuha sa pamamagitan ng hindi bababa sa 3-4 mga trabaho sa isang panahon ng 15 na oras (ang pinakamahabang malamang idle na oras ng panahon)
  • Play na may sukat trabaho kaya na setup ng oras ay nagiging medyo hindi gaanong mahalaga kung ihahambing sa ang processing time (nadadala sa isip ang mga punto sa itaas).
  • Kung ang isang trabaho ay hindi kumpleto sa double ang halaga ng oras (siguro mas mababa) asahan mo ito upang makumpleto ito ipalagay na nito gone AWOL at simulan ang proseso na ito sa ibang manggagawa. Ito ay nangangahulugan na ikaw ay maaaring may sa maghintay hanggang sa tatlong beses ng normal na haba ng isang trabaho para sa mga ito upang makumpleto (marahil na kung ang mga kasunod na trabaho nabigo). Baka gusto mong bawasan ang oras na ito, ngunit maging maingat na hindi upang mabawasan ang mga ito ng masyadong maraming bilang maaari mong simulan pagkokopya processing gawain sa isang regular na batayan.
  • Trabaho ay dapat na independiyenteng ng labas mga kinakailangan gaya maaari. Ang trabaho ng server, halimbawa, ay dapat lamang makipag-ugnayan sa simula at dulo ng bawat trabaho.
  • Huwag magbabad iyong network, ito ay may dalawang mga negatibong epekto, ang iyong araw kawani ay mahanap ang paggamit ng network ang nakakabigo at mga problema ay maaaring naranasan sa mga koneksyon sa tiyempo ang isang problema na lamang ay makakuha ng mas masahol bilang mo ang iyong scale parilya.
  • jobs Tiyakin maaaring tumakbo sa iyong manggagawa. Kung ang mga trabaho maging masyadong memory intensive o puwang sa disk masinsinang trabaho ay magsisimula at hininto ang tanging bagay na mapapansin mo ay isang drop sa bilang ng mga trabaho proseso na walang tunay na dahilan kung bakit.

Nagsusumite ng Resulta ng isang Job

Kapag pagsusumite ng mga resulta ng isang trabaho ito ay mahalaga na suriin na ang resulta ay hindi nai isinumite ng ibang manggagawa, lalo na kung ang kasalukuyang manggagawa ay parang tulog para sa ilang oras.

Kapag ang mga resulta ay naisumite na matiyak na ang bilang ng mga resulta na tumutugma ang bilang ng mga talaan sa loob ng trabaho.

Katulad ng nakasaad sa dati, at hindi maaaring maging higit emphasized, bumuo ng kasalanan pagpapaubaya sa trabaho at retrieval resulta submission. Ang mga manggagawa ay maaaring (at pinaka-malamang ay) pumunta sa isuspinde mode at ang pinaka panggulo ng beses na at ito ay kinakailangan na catered para sa. Din sa sandaling muli abstracting malayo ang iyong mga resulta ng submission ay makakatulong magsilbi para sa hinaharap na mga pagbabago sa iyong system na kontrol trabaho marami mas madali sa pakikitungo sa.

Buod

Sa ganitong section kami ay tumingin sa kung ano ang isang trabaho server control pangangailangan na gawin at kung paano makakuha ng isang tunay pangunahing system set up. Kami tinalakay kung paano makuha ang isang trabaho mula sa mga sistema ng control at kung paano pinakamahusay na upang isaayos ang mga trabaho upang makuha ang pinaka sa aming ng iyong system opisina grid. Upang tapusin, isang talata o dalawa sa pagsusumite ng mga resulta pabalik sa server trabaho control ay iniharap.

  • Ang isang trabaho server control namamahala trabaho at nagsisiguro na ang lahat ng trabaho mga yunit ay nakumpleto na
  • By abstracting iyong trabaho select / resulta submission maaari naming baguhin ang teknolohiya ng server kontrol na walang gaanong problema
  • Isaayos ang iyong trabaho upang tiyakin na sila ay tumakbo nang mabilis at mahusay walang paglagay ng masyadong maraming presyon sa iyong network ng imprastraktura, at walang pagkokopya processing gawain sa isang regular na batayan.
  • Tiyakin na ang build mo kasalanan tolerance at error checking sa iyong gawain, mga manggagawa ay maaaring suspindihin at ipagpatuloy at ang pinaka panggulo ng beses. Tandaan na suriin kung may resulta naisumite na ng ibang worker.

Susunod na panahon

Sa part 3 kami gumawa ng aming mga virtual machine processing at set up ng aming mga machine bintana para maging idle-time manggagawa.

One Response sa "Office Grid Computing gamit kapaligiran Virtual - Part 2"

  1. Hydrolyze says:

    Heya! Good konsepto, ngunit maaaring ito tunay gawin ang mga trabaho?

Mag-iwan ng isang Sumagot













Panorama Theme sa pamamagitan ng Themocracy

8 mga bisita sa online ngayon
5 bisita, 3 bots, 0 miyembro
Max mga bisita ngayon: 24 at 00:36 UTC
Sa buwan na ito: 26 at 2011/07/05 12:35 UTC
Sa taong ito: 130 sa 28-03-2011 22:40 UTC
Lahat ng oras: 130 sa 28-03-2011 10:40 UTC