Паведамленні з тэгамі: віртуальны

Упраўленне Grid Computing з дапамогай Virtual асяроддзя - Частка 3

Па , у пятніцу 4 снежні 2009 года 11:37 вечара

Увядзенне

Я працую ў кампаніі, дзе мы запускаем шмат працоўных месцаў, пакетную апрацоўку мільёнаў запісаў дадзеных кожны дзень, і я думаў у апошні час пра ўсіх машынах, якія сядзяць кожны дзень нічога не рабіць на працягу некалькіх гадзін. Не было б добра, калі мы маглі б выкарыстоўваць гэтыя машыны для ўмацавання вылічальнай магутнасці нашых сістэм? У гэтай серыі артыкулаў я буду глядзець на патэнцыйныя выгоды ад выкарыстання офіса сеткі выкарыстаннем виртуализованных асяроддзях.

У частцы 2 мы разгледзелі працу сервер будзе працаваць, як і працоўныя месцы павінны быць настроены для дасягнення найбольшай колькасці апрацоўкі ў той час як забеспячэнне кожнага задання апрацоўваюцца ў абавязковым парадку.

Налада працоўнага - ці LIMP сервер

Наступным крокам у гэтым працэсе заключаецца ў наладзе віртуальных рабочых. Для гэтага я буду выкарыстоўваць ўстаноўкі CentOS выкарыстаннем VirtualBox. Я збіраюся ўсталяваць MySQL і PHP на серверы, таксама вядомы як LIMP (Li ММК, м ySQL, P л.з.) Сервера (я, магчыма, зрабілі гэтае імя ўверх).

  • Усталёўка VirtualBox на кампутары Windows (варта спасылка)
  • Запампаваць і ўсталяваць CentOS (бягучая версія 5.3) ў межах ствараных віртуальных машын

Там няма сэнсу мне будзе гэта там, напэўна, 1000-х вялікая падручнікаў там (ну добра, вось яшчэ адзін: стварэнне і Managing CentOS віртуальнай машыне пад VirtualBox ). Важна адзначыць, я думаю, што я назваў сваю віртуальную машыну GridMachine.

Што тычыцца майго выбару віртуалізацыі кліентаў і аперацыйнай сістэмай туды не такое ўжо вялікае важкіх прычын для кожнага варыянту. VirtualBox з'яўляецца тое, што я выкарыстоўваю на маім хатнім кампутары і пры падтрымцы трох асноўных аперацыйных сістэм. Я выбраў CentOS як яго добра стабільная АС, і я выкарыстоўваю яго на сваім уласным вэб-серверы. Я вельмі веру ў правільныя інструменты для працы (хоць я падаю заяву "выкарыстоўваць самы хуткі і просты для вас менталітэт тут), таму, калі аперацыйная сістэма X працуе ваш код хутчэй і больш эфектыўна выкарыстоўваць яго :)

Важна пераканацца, што ваша VM выкарыстоўвае DHCP, у адваротным выпадку для кожнай новай віртуальнай машыны павінны быць настроены асобна, тое, што мы не want.By з дапамогай DHCP нам не патрэбныя для налады сеткавых параметраў індывідуальна для працоўных машын, DHCP ўручыць з IP-адрасоў для вас. Таму вы можаце скапіяваць вашыя віртуальныя машыны па кабінеце, не клапоцячыся пра ўсталёўку кожнага ўверх (гэта паляпшае маштабаванасць і зніжае працаўнік адміністрацыі).

Працэс, які вы павінны імкнуцца да дасягнення б атрымаць новыя фізічныя машыны, ўстаноўкі VirtualBox, а затым у значнай ступені разгарнуць віртуальны вобраз, не больш за тое. Гэта можа быць мудрым, каб наладзіць ўсе вашы працаўнікі ў іншай падсеткі, каб можна было па крайняй меры, даведацца, колькі машын працуе. Вам таксама неабходна наладзіць машыны на доўгатэрміновую арэнду або неабмежаваную арэнды DHCP.

Як запусціць заданні на працоўны

Гэта цікавае напрамак, і ёсць некалькі абгрунтаваных метадаў для апрацоўкі заданняў на работніка. Тут я проста абмеркаваць два найбольш відавочных:

  • Пастаянна працуе сцэнар: сцэнар, няхай гэта будзе скрыпт або скрыпт PHP выконваецца адзін раз на работніка і працуе як частка бясконцага цыклу. Я гэты метад дыскантаваных як адзін крах сцэнарыя і, магчыма, вашы працаўнікі перастануць працаваць без нейкага ўмяшання.
  • Cron на аснове выканання скрыпту: кожныя х хвілін крон дэман стартуе званок на ваш сцэнар, каб атрымаць рэчы, якія ідуць. Без якога-небудзь кантролю гэта можа прывесці да шмат шмат копій ход сцэнара работніка.

Маё рашэнне было пайсці з хранічны які стартуе скрыпт кожныя 10 minutes. Мой скрыпт выконвае наступныя задачы:

  1. Атрымаць спіс працэсаў і grep, гэта для "PHP". Калі не знойдзены, то працягнуць.
  2. Звернецеся да працы кода, у маім выпадку гэта было б нешта PHP заснаваны
  3. Работнік скрыпт завяршае свой бег
  4. Гатовыя ісці зноў на наступны адпаведны выклік

Маё баш скрыпт выглядае прыкладна так:

  #! / Бэн / ш
 PS калі сякера | Grep-V GREP | GREP PHP> / Dev / нуль
 затым
     рэха "Праца ў цяперашні час апрацоўкі, выхад"
 яшчэ
     echo "Праца не працуе, пачніце прама цяпер"
     PHP yourJobProcessingScript.php
 Fi 

Заўвага: рэха амаль цалкам бессэнсоўным, але можа дапамагчы наступны чалавек, які прыходзіць, каб паспрабаваць змяніць іх.

На гэтым мы завяршаем налады працоўнага віртуальнай машыны, хутка, проста і лёгка капіяваць у кожную новую частку абсталявання, якое атрымана. "Розум" у падвеснай сістэме на самай справе не візуалізуецца АС, яе ўсё рабіць з кодам, створаны, каб працэс працы, працы канфігурацыі, а ў тым, каб заданне выконваецца ў выпадку неабходнасці (напрыклад, калі гаспадар знаходзіцца ў рэжыме чакання ).

Налада Windows, для ініцыялізацыі працоўных

Першай задачай з'яўляецца выпрацоўка каманды, неабходныя для запуску віртуальнай машыны з каманднага радка Windows. Калі вы ўсталявалі VirtualBox ў тэчку па змаўчанні, і вы назвалі ваш працоўны GridMachine то каманда патрабуе, каб загрузіць ваш работнік:

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

Аднак, каб запусціць сцэнар у "абезгалоўлены" дзяржавы мы павінны выкарыстаць:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxHeadless.exe» startvm GridMachine - VRDP = выкл 

Гэта прывядзе да запуску віртуальнай машыны без графічнага інтэрфейсу і дазваляе яму захоўваць стан вытанчана. Другі аргумент выключаецца RDP, так што не супярэчыць вокны RDP, ці даць вам паведамленне аб тым, слухае порт 3389. Імя віртуальнай машыны з улікам рэгістра!

Далей, нам трэба ўсталяваць акна да стартуе наш работнік В.М. раз машына была просты. Для гэтага (на Windows XP) вам неабходна перайсці Пуск -> Усе праграмы -> Стандартныя -> Службовыя -> Прызначаныя заданні, як паказана ніжэй:

запланаваных задач

Затым націсніце на "Дадаць заданне" варта прагледзець дадаць карыстацкія праграмы. Перайдзіце да VBoxManage сцэнар і націсніце кнопку ОК. Расклад вашай задачай для любога з варыянтаў (мы зменім гэта ў хвіліну) і працягнуць. Пасля пропуску наступным экране вокны будуць прасіць вас, хто вы хочаце запусціць гэтую задачу, я прапаную альбо "Адміністратар" ці стварэнне новага прывілеяванага карыстальніка. Памятаеце, што мы не хочам умешвацца ў стандартнай ўліковага запісу супрацоўнікаў на машыне ў любы момант. Націсніце кнопку Далей і праверце шоў дадатковыя опцыі для гэтай задачы.

Да канца выканання тэкставага дадамо радок 'startvm GridMachine і забеспячэння, якія працуюць толькі тады, калі ўвайшлі ў сістэму застаецца дадзеную опцыю. Наведайце наступны графік задачы і змяніць графік апусціцца да опцыю "ў рэжыме чакання, выбраць колькасць часу, вы хочаце машыну сядзець склаўшы рукі, перш чым перайсці да наступнай закладцы.

Нарэшце прыбраць галачку опцыі у якім гаворыцца, спыніць задачу, калі яна ўжо працуе пэўную колькасць часу, але не адзначце опцыю, каб спыніць задачу, калі машына не прастойвае.

расклад

Вось тады для ўстаноўкі вокнаў гаспадар!

Рэзюмэ

У гэтай частцы мы стварылі віртуальную машыну для працы ў якасці работніка, а таксама тое, як мы называем, і выконваць нашы сцэнары апрацоўкі заданняў (для сябе сцэнар PHP). Тут мы разгледзім, як наладзіць нашы копіі вокны для запуску віртуальнай машыны ў абезгалоўлены рэжым, калі кампутар становіцца свабоднай, і захаваць свой стан, калі карыстач аднаўляе выкарыстанне машыны. Спадзяюся, у гэты момант вы бачыце, як проста стварыць такую ​​сістэму і свярбяць, каб атрымаць некаторыя эксперыменты збіраецеся самі!

Наступны раз

У частцы 4 мы разгледзім, як выкарыстоўваць інструменты, каб пераканацца, што вы выкарыстоўваеце апошнюю версію кода і крыніцы дадзеных, так што атрыманыя вынікі з'яўляюцца заўсёды сучаснымі з апошнімі бізнес-інфармацыі і логіку.

Упраўленне Grid Computing з дапамогай Virtual асяроддзя - Частка 1

Па , у пятніцу 4 снежні 2009 года 11:23 вечара

Увядзенне

Я працую ў кампаніі, дзе мы запускаем шмат працоўных месцаў, пакетную апрацоўку мільёнаў запісаў дадзеных кожны дзень, і я думаў у апошні час пра ўсіх машынах, якія сядзяць кожны дзень нічога не рабіць на працягу некалькіх гадзін. Не было б добра, калі мы маглі б выкарыстоўваць гэтыя машыны для ўмацавання вылічальнай магутнасці нашых сістэм? У гэтай серыі артыкулаў я буду глядзець на патэнцыйныя выгоды ад выкарыстання офіса сеткі выкарыстаннем виртуализованных асяроддзях.

У PHP распрацоўшчык я збіраюся выкарыстоўваць інструменты, якія я выкарыстоўваю кожны дзень, а менавіта, Linux, MySQL , PHP, VirtualBox і Subversion (SVN). Аднак я спадзяюся, што гэта кіраўніцтва будзе адаптавацца да іншых мовах і тэхналогіях гэтак жа добра.

Рашэнне, якое я інфармацыя будзе вельмі слаба ў залежнасці ад тыпу апрацоўкі мы павінны дасягнуць, аднак гэта не можа быць праўдай па ўсёй артыкуле, я нешта змяніць, для прастаты, або для атрымання больш цікавых варыянтаў выкарыстання.

Гэтыя виртуализованных асяроддзях, будзе працаваць на кампутарах з Windows, гэта тое, што большасць офісаў бегчы. Апрацоўкі, офіснай тэхнікі, не павінны перашкаджаць супрацоўнікам выкарыстоўваць гэтыя машыны, павінны не патрабуюць абслугоўвання ў машыну, і быць лёгка адаптуецца да новых машынам, паколькі яны становяцца даступнымі. Акрамя таго, новыя віртуальныя машыны не патрабуе якіх-небудзь дадатковых налад, так як гэта значна зніжае маштабаванасць і лёгкасць, з якой падвесная сістэма можа быць пашырана.

Чаму Разгортванне ГРІД бюро вылічальнай?

Па-першае, вы можаце падумаць, чаму б не выкарыстоўваць рэсурсы хмарных вылічэнняў, такіх як платформы EC2 ад Amazon ? Ну, прычын можа быць некалькі, напрыклад:

  • Вы не будзеце давяраць некаторых дадзеных у асяроддзі хмарных вылічэнняў
  • Вы не можаце змясціць пэўныя дадзеныя ў асяроддзі хмарных вылічэнняў па юрыдычных прычынах (напрыклад, дадзеныя з краіны), што можа па юрыдычных прычынах, напрыклад, NHS запісаў.
  • Вы хочаце, каб ваша апаратура апрацоўкі зачыніць і мець поўны кантроль над апаратным занадта
  • У вас няма сродкаў праекта для запуску воблака выпадках
  • Ваш офіс не мае падлучэння да Інтэрнэту, і таму яго нельга выкарыстоўваць воблака рэсурсаў
  • Вы не любіце дождж, аблокі прапанаваць дождж, таму вы трымаеце далей

Я ўпэўнены, што гэты спіс можна працягваць, але я думаю, што гэта дастаткова.

Перавагі Grid Computing офіса

Ну, давайце рабіць некаторыя матэматыкі (і ў праўдзівым стылі фізікі дазваляе зрабіць некалькі шырокіх здагадках). Уявіце, у вас ёсць вялікі мясісты сервер апрацоўкі працуе 100 рабочых месцаў у дзень. У офісе ў вас ёсць 50 машын, якія прастойваюць па 16 гадзін у дзень, кожная з гэтых машын складае 10%, як магутны, як ваш моцны разарваць апрацоўкі. (Усе вынікі тут акругляюцца да недаацэньваць павелічэння прадукцыйнасці).

Так, 1 машына * 10% магутнасці * 2/3 часу = 0,067 г.зн. 1 працоўны стол апрацоўка ў рэжыме часу можа апрацоўваць 6 поўных працоўных месцаў у дзень.

Калі вы цяпер маштабуецца да гэтага ён займае 15 прастойваюць працоўныя станцыі для апрацоўкі, як шмат працоўных месцаў у дзень у якасці асноўнага сервера апрацоўкі робіць.

Такім чынам, у нашым офісе робяць выгляд 50 машын мы можам павялічыць нашы магутнасці працэсара ад 1 сервера да 4 поўных сервераў апрацоўкі, ці мы маглі б апрацоўкі 400 працоўных месцаў у дзень замест 100.

Заўважце, не для інвестыцый у новае абсталяванне Ваша кампанія толькі павялічыў свой ​​пакет перапрацоўчых магутнасцяў у 4 разы! Патэнцыйна вы збіраецеся павялічыць спажыванне энергіі, але ў большасці офісаў Я быў на машынах, як правіла, застаецца на ноч у любым выпадку, каб вы маглі бачыць гэта як зялёны ініцыятыву.

Іншыя перавагі таксама азначае, што інвестыцыі ў новы (або абноўлены) сервераў апрацоўкі можа быць адкладзенае, калі ваша машына офіса дастаткова, і як палепшыць харчаванне вашай машыны офіс офіс сеткі становіцца ўсё больш магутным аўтаматычна.

Тэхналогіі

Што вам трэба? (Ці, дакладней тое, што я выкарыстаў):

  • Idle офіснае абсталяванне (у маім выпадку запасны старыя вокны XP ноўтбук)
  • VirtualBox (або іншага праграмнага забеспячэння для віртуалізацыі кліентаў)
  • Віртуальная машына з PHP, MySQL running працуе зрэзаная АС, я называю гэта маёй LIMP сервераў :)
  • Вакансіі для запуску
  • Праца сервера (можа быць іншай віртуальнай машыне дзесьці)

Тыповыя Вакансіі

Відаў работ, што гэтая сістэма прызначана для працы выглядае наступным чынам:

  • Сістэма атрымлівае спіс дадзеных, на якіх мы павінны адпавядаць і вяртаць вынікі
  • Адпаведныя ўключае праверку / пошуку некалькі (даволі статычны) крыніц дадзеных
  • Вынікі з крыніц дадзеных могуць спатрэбіцца дадатковыя праверкі, зліваючыся, праверка дадатковых крыніц дадзеных у адказ на вынікі
  • Дадзеныя вяртаюцца з адпаведнымі запісамі, цалкам правераныя і апрацаваны
  • Кожны запіс у працы не залежыць ад астатніх

Таму ў асноўным мы глядзім на выконваюцца заданняў, якія патрабуюць сумесь пошук у базе дадзеных і некаторага ліку храбусценне, даволі тыповы сцэнар у бізнес-асяроддзі.

Сетка рашэння не толькі выгадна для апрацоўкі рабочых месцаў такога тыпу. У прынцыпе, любы працэс, які можа быць падзелены на незалежныя блокі могуць выконвацца паралельна. Глядзіце гэты Вікіпедыі прыклады і больш падрабязную інфармацыю: Grid Computing , але пару вядомых прыкладаў Seti @ Home і BIONC . Ёсць рамкі для выканання вылічальных сетак, і гэта таксама заслугоўвае вывучэння.

Што ж мы дасягнулі?

Да канца гэтых артыкулах я спадзяюся паказаць, што разгортванне сеткі офіса не павінны быць вельмі дарагімі, або часу. Я збіраюся абмеркаваць наступныя пытанні:

  • Налада сістэмы кіравання заданнямі, праца канфігурацыі
  • Стварэнне адпаведнай апрацоўкі віртуальнай машыны
  • Як наладзіць сістэму на машыне акна
  • Забеспячэнне вы выкарыстоўваеце апошнюю версію кода і дадзеных
  • Разгортвання і тэсціравання
  • Зазіраючы наперад

Я буду дома (добра, я пабудаваў, то напісаў) прыклад прыкладанні для праверкі канцэпцыі, на лакальным кампутары ў Windows XP і мой "GridMachine" віртуальнай машыны. Мая праца серверны элемент кіравання будзе маёй асноўнай машынай, якая працуе Fedora 11 .

Гэта ніякім чынам не азначала, каб прадэманстраваць цалкам працоўны надзейныя сістэмы, яе значыла больш, дэманстрацыі і абмеркавання паказваюць, што гэтыя рэчы могуць быць дасягнуты ў досыць сціснутыя тэрміны і з мінімальнымі выдаткамі. Калі ласка, не саромейцеся, дасылайце мне любыя заўвагі, выпраўленні і паляпшэнні, і я зраблю ўсё магчымае, каб захаваць гэты артыкул абнаўлення, каб адпавядаць.

Наступны раз

У частцы 2 я пачну, гледзячы на сістэмы кіравання працай, і вывучыць, як працоўныя месцы павінны быць настроены для дасягнення найбольшай колькасці апрацоўкі ў той час як забеспячэнне кожнага задання апрацоўваюцца ў абавязковым парадку.

Упраўленне Grid Computing з дапамогай Virtual асяроддзя - Частка 2

Па , у пятніцу 4 снежні 2009 года 11:23 вечара

Увядзенне

Я працую ў кампаніі, дзе мы запускаем шмат працоўных месцаў, пакетную апрацоўку мільёнаў запісаў дадзеных кожны дзень, і я думаў у апошні час пра ўсіх машынах, якія сядзяць кожны дзень нічога не рабіць на працягу некалькіх гадзін. Не было б добра, калі мы маглі б выкарыстоўваць гэтыя машыны для ўмацавання вылічальнай магутнасці нашых сістэм? У гэтай серыі артыкулаў я буду глядзець на патэнцыйныя выгоды ад выкарыстання офіса сеткі выкарыстаннем виртуализованных асяроддзях.

У частцы 1 я даў агляд сістэмы і тэхналогіі, я буду выкарыстоўваць, а таксама абмеркавалі некаторыя з магчымых прычын, чаму вы хочаце стварыць офіс сеткі.

Кіраванне заданнямі

Калі вы збіраецеся быць запушчана праца, то вы будзеце мець патрэбу ў нейкай меры кіраваць імі. Ваша задача сістэмы кіравання (на працу сервера) павінен быць вельмі добра прадумана яшчэ да спробы запуску офіса сеткі. Такім чынам, па-першае, якія задачы для сістэмы кіравання заданнямі:

  • Раздайце працу па просьбе працоўных
  • Скажыце рабочым, які тып запуску заданняў
  • Трэк працоўных месцаў
  • Пераканайцеся, што заданні выконваюцца толькі адзін раз
  • Забяспечыць працу дадзеных работнікаў, або па крайняй меры, сказаць ім, дзе яго атрымаць

Акрамя таго, сістэма павінна быць пашыраецца, рашэнне, якое працуе цяпер у адным выпадку можа быць падоўжаны да запуску некалькіх відаў работ, як бізнес бачыць сябе ў сетцы рашэнне. Напрыклад, праца можа атрымаць прыярытэты, больш чым аднаго тыпу задання можа існаваць (гэта значыць некалькі баз кода), у рэшце рэшт вы нават можаце запускаць некалькі розных машын работніка, якія аптымізаваныя для кожнага віду работы (хоць гэта ніяк адысці ад "агульнага работніка "Ідэя). Заўсёды стараюся думаць пра будучыню, пры распрацоўцы сістэмы, кароткае бачанне тэрміна можа прывесці да доўгатэрміновай фрустрацыі і павелічэнне часу распрацоўкі.

Праца сервера

Мы збіраемся дзесьці трэба кантраляваць нашу працу з, гэта павінна быць адзіная сістэма ў вашай сеткі, якая мае фіксаваны лакатар рэсурсу, няхай гэта будзе IP-адрас, імя хаста, адрас (з выкарыстаннем ўнутранага DNS) і г.д. Гэта адбываецца таму, што працоўныя павінны ведаць, дзе шукаць працу, работнікам неабходна знайсці сістэму кіравання заданнямі (не сістэма кіравання заданнямі знайсці работнікаў).

Праца самога сервера на самой справе не з'яўляецца складанай задачай (у базавай сістэме так ці інакш), ён павінен захоўваць спіс заданняў, раздаюць працу, атрымаць вынікі, а затым захоўваць іх для наступнага выкарыстання. Як гэтыя часткі (напрыклад, "раздаваць працоўныя месцы) вызначаюцца можа быць вельмі просты. У далейшым мы можам пашырыць сістэмы ўключаюць адміністрацыйны інтэрфейс для дадання, рэдагавання, выдалення, прыпыніць працу, але гэта выходзіць за рамкі гэтай працы.

Існуе ніякіх падстаў, тое, што ваша праца сервера не можа быць віртуальная машына працуе ў вашай асноўнай сервер апрацоўкі ўмове, што ён не злівае ваду занадта шмат рэсурсаў з яго. Праца сервера аднак гэта патрабуецца высокая даступнасць, калі яна ідзе ўніз ў пятніцу ўвечары вы будзеце губляць усе выходныя апрацоўкі, патэнцыйна варта Вам пару тыдняў варта часу апрацоўкі (у параўнанні з вашай асноўнай сервер апрацоўкі ў адзіночку) . Вы можаце разгледзець пытанне аб стварэнні працу сервера з балансавання нагрузкі навакольнага асяроддзя для забеспячэння высокай даступнасці.

Асноўныя налады

Асноўныя налады для нашай працы сервера будзе складацца з таго, што я тэлефаную аднаму з маіх LIMP сервераў (гэта значыць Li ММК, м ySql, P л.з.). Код працуе на працоўных Теи сапраўды будзе працаваць, якія працы ён можа працаваць, узаемадзейнічаючы з працай баз дадзеных сістэмы кіравання. У далейшым мы маглі б стварыць вэб-сэрвіс і фактычна раздаваць працоўныя месцы замест таго, рабочыя робяць цяжкую працу самі, але цяпер мы будзем працягваць выкарыстоўваць прынцып KISS, (Keep It Simple, Stupid!).

Такім чынам, дазваляе стварыць 3 MySQL табліц для вырашэння працоўных месцаў. Гэта будуць працоўныя месцы ``, `jobRecords` і `jobResults`.

працоўныя месцы табліцы Тут я выкарыстоўваю SQL Buddy вялікі невялікі альтэрнатыва PhpMyAdmin толькі таму, што яе лягчэй ўсталяваць на CentOS (для іншых гл.: 10 лепшых альтэрнатыў для PhpMyAdmin )

Гэтая табліца складаецца з 5 простых палях,

  • ID: Унікальна ідэнтыфікаваць працу
  • Назва: Можа быць нумар кліента, або любую колькасць іншых ідэнтыфікатараў
  • Статус: Вы павінны ведаць, дзе праца на, напрыклад,
    • 0: Не пачаўся
    • 1: Падабраў
    • 2: Завершаны
  • started_by: Хто пачаў рабіць гэтую працу? Гэта не зусім абавязкова, але гэта добра, калі ёсць. Я прапаную адсочвання рабочых па іх IP-адрас у сеткі
  • started_at: Калі працаўнік пачаць працу? By tracking jobs that have not completed within X amount of time we know we need to pick up the job once again and start processing by another worker. Workers could stop processing/go offline for any number of reasons, power failure, crash, network loss, etc.

It is easy how this table could be extended with a few additional fields to allow for statistics tracking, a finish time column to see how long the job took, a counter to see how many workers picked up the job (obviously this needs to tend to 1), job priority, the list can go on and on. In more complex job scenarios it would be possible to specify how much memory the worker would need access to (and therefore only use suitable workers), or even what type of worker would be required.

Lets add a few example jobs:

example jobs

У наступнай табліцы зноў вельмі просты для разумення, гэта нашы запісы працы. Яны звязаны з асноўнай табліцай працоўных месцаў калонка `jobs_id`. Зрабіць з гэтай табліцы шмат у чым залежыць ад дадзеных, якія неабходна падаць для вашых работнікаў, дазваляе зрабіць вельмі просты прыклад, калі ў нас ёсць чатыры калонкі:

  • ID: ідэнтыфікатар запісу
  • Назва: імя чалавека
  • адрас: адрас Асобы
  • jobs_id: ідэнтыфікатар заданні, што гэты запіс звязана з

Трэцяя і апошняя табліца складаецца з табліцы вынікаў, ён мае такі ж складаюць да нашай табліцы запісаў, а таксама з даданнем некаторых слупкоў можа быць часткай табліцы запісаў:

  • job_record_id: Спасылка вынік працы табліцы
  • Вынік: У выніку дадзеных

... І гэта ўсё, што вам трэба для кіравання працай! (Хоць на самай базавым узроўні) У маім выпадку я звярнуў увагу на іншы стол, дзе мае дадзеныя, каб працэс быў размешчаны, але гэта можа так жа лёгка было файла, параметры для запуску праграмнага кода, што заўгодна.

Выбар працы

Як адзначалася раней, працоўныя будуць рабіць сваю працу кіраванне для нас цяпер, так што ўсё, што мы сапраўды павінны зрабіць, гэта знайсці працу, якая павінна апрацоўкі і атрымання інфармацыі. Як бы мы гэта зрабіць? Ну забраць нашы крытэрыі выбару працы і шукаць працу ў SQL я зрабіў наступнае:

  1. Вазьміце любую працу, не пазначаныя як завершаныя, але ад нашых работнікаў і скінуць іх (заменіце __ ME__ з ідэнтыфікатарам, просты будзе IP-адрас):
      UPDATE `працы` SET `статус` = 0 WHERE `статус` = 1 AND `started_by` = __ ME__; 
  2. Выкарыстоўваючы нашы крытэрыі выбару працы, абраць працу і сказаць сістэме кіравання, што гэты работнік мае справу з ім:
      UPDATE `працы` SET `статус` = 1, `started_by` = __ ME__ `started_at` = NOW () WHERE `статус` = 0 або
     (`Статус` = 1 AND `started_at`> DATE_SUB (NOW (), INTERVAL X ЧАС)) ORDER BY `ID` ASC; 

    Па захоп рабочых месцаў, якія не вярнуліся вынікі ў X колькасць часу мы гарантуем, што ўсе работы выконваюцца ў выпадку збою або працаўнік ідзе ў самаволку.

  3. Далей вазьміце працу дэталі ідуць самі запісу:
      SELECT * FROM `працы` WHERE `started_by` = __ ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `ID` = __ JOBID__; 

Пасля заканчэння працы мы ўстаўляем нашы запісу вынікаў і адзначыць працу завершана. Памятаеце, як праца можа прыпыніць / аднавіць у любы момант забяспечыць пэўную ўстойлівасць ў ваш сцэнар. Цалкам верагодна, што задача прыпыняецца на палове шляху ўдасканалення сістэмы кіравання заданнямі, так што праверка запісаў на працу і колькасць вынікаў захаваны ў сістэме кіравання працай было б мудрым крокам.

Акрамя таго, у той час як гэта дэманструе, як працоўныя месцы могуць быць выбраны і кіруюцца з SQL-запыту кадр, які вы павінны сапраўды абстрагуючыся працу кіравання, так што калі вы вырашыце перайсці на выкарыстанне вэб-сэрвісаў, файл сістэмы, заснаванай на XML , або любой іншай лік сістэм, гэта не паўплывае на код вышэй.

Праца канфігурацыі

Наступным аспектам з'яўляецца памер працы і канфігурацыі. Гуляючы з працы канфігурацыі мы можам стукнуць выдатны баланс паміж хуткасцю, працэс рэплікацыі і надзейнасці. Вазьміце пару сцэнарыяў аператара А:

  1. Вакансіі ўзяць 1 дзень кожны для запуску: Гэта азначае, што працаўнікам неабходна 15 дзён для апрацоўкі кожнага задання (памятаеце, 10% магутнасці для 2/3rds часе). Гэта відавочна не мудрымі канфігурацыі, Ваша праца памер занадта вялікі! Гэта зойме мінімум у два разы час, каб уладкавацца на працу павінны апрацоўвацца пачатковай работніка ісці ў самаволку (час, каб забраць, што ён не вярнуўся ў выніку перапрацоўкі, плюс час). У ідэале вы павінны па меншай меры адзін поўны працу лёгка чысціцца ў канцы кожнага доўгага перыяду бяздзейнасці, такім чынам вы захаваеце працу над цікаюць, а ў горшым выпадку, калі праца зойме два дні, каб працэс павінен спачатку прайсці без вестак.
  2. Вакансіі заняць ад 1 хвіліны да запуску: Гэта азначае, што вашыя работнікі зойме каля 15 хвілін для выканання кожнага задання. Хоць гэта можа спачатку здацца ідэальнай, вы атрымліваеце дадатковую апрацоўку працы падчас абеду, кава-брэйкі, сустрэчы і г.д. гэты сцэнар ставіць нагрузку на іншыя вобласці сістэмы і ўводзіць свае ўласныя праблемы. Напрыклад, у першую чаргу вашы налады / час апрацоўкі суадносіны будзе ісці прама, таму страты эфектыўнасці сістэмы. Ваша сетка будзе пастаянна струменевага працы інфармацыі розных працоўных хвалюе супрацоўнікаў, якія дон іх паўсядзённым працы. Вы таксама збіраецца надаваць больш нагрузка на сервера апрацоўкі заданняў, як ён павінен страва з шмат-шмат маленькіх кавалачкаў працу на рэгулярнай аснове. Нарэшце, у гэтай сітуацыі, калі ваша праца сервер выходзіць з ладу, вы збіраецеся стварыць велізарнае бервяно назад незавершанага працы ў той час як больш працоўных месцаў маглі б, працягвалі апрацоўку ў шчасным недасведчанасці аб тым, што праца сервера, якія выпрабоўваюць цяжкасці.

На самой справе там будзе няма каму ідэальнай канфігурацыі для налады сеткі, шмат што залежыць ад наяўных рэсурсаў, відаў працы, службовых патрабаванняў затрат часу, магчымасць працы ў сеткі, і гэтак далей. Тым не менш некаторыя рэкамендацыі будуць:

  • Памер працу так, каб кожны работнік можа прайсці як мінімум 3-4 працоўных месцаў на працягу 15 гадзін (верагодна, самы доўгі перыяд прастою часу)
  • Гуляць з працай памер так, каб налада часу становіцца нязначным у параўнанні з апрацоўкай часу (з улікам вышэй кропкі).
  • Калі праца не была завершана ў два разы больш часу (можа быць менш), Вы чакаеце, каб завяршыць яго мяркуецца, што яго сышлі ў самаволку і пачаць яе апрацоўку з іншым работнікам. Гэта азначае, што вы, магчыма, прыйдзецца чакаць да трох разоў нармальная працягласць працы яго завяршэння (магчыма, і даўжэй, калі наступная праца не атрымоўваецца). Вы можаце скараціць гэты час, але будзьце асцярожныя, каб не паменшыць яго занадта шмат, як вы можаце пачаць дубляванне задач апрацоўкі на рэгулярнай аснове.
  • Вакансіі павінны быць незалежныя ад знешніх патрабаванняў, наколькі гэта магчыма. Праца сервера, напрыклад, павінны быць кантакты ў пачатку і ў канцы кожнай працы.
  • Ці не насыціць вашай сеткі, гэта будзе мець два адмоўных эфекту, ваш дзённай персанал знайсці з дапамогай сеткі расчараванне і праблемы могуць узнікнуць з падключэннем час чакання, што праблема будзе толькі горш, як вы маштабавання сеткі.
  • Забяспечыць працоўныя месцы могуць працаваць на вашых работнікаў. Калі праца стала занадта вялікі аб'ём памяці або дыскавай прасторы інтэнсіўная праца пачнецца перапыненне і адзінае, што вы заўважыце гэта кропля ў лік працоўных месцаў, апрацоўваюцца ніякай рэальнай прычыны, чаму.

Прадстаўленне вынікаў працы

Пры падачы вынікаў працы важна, каб пераканацца, што вынікі не былі прадстаўлены на іншага работніка, асабліва калі бягучы працоўны быў замарожаны на некаторы час.

Калі вынікі прадстаўлены пераканацца, што шэраг вынікаў, супадае з колькасцю запісаў у працу.

Як адзначалася раней, і не можа быць пераацаніць, пабудаваць адмоваўстойлівасці ў пошук працы і вынікі прадстаўлення. Работнікі могуць (і, хутчэй за ўсё, будзе) пераходзяць у рэжым чакання ў самы непадыходны раз, і гэта павінна быць абслужаны. Таксама яшчэ раз абстрагуючыся ад вашых вынікаў прадстаўленне дапаможа задаволіць будучыя змены ў працу сістэмы кіравання значна прасцей мець справу.

Рэзюмэ

У гэтым section мы глядзелі на тое, што сервер кіравання заданнямі трэба зрабіць і як атрымаць вельмі просты сістэмай налады. Мы абмяркоўвалі, як атрымаць працу ў сістэме кіравання, і як лепш наладзіць працоўныя месцы, каб атрымаць большасць нашых вашай сістэмы сеткі офіса. Каб скончыць, адзін-два абзаца аб прадстаўленні вынікаў на сервер кіравання заданнямі была прадстаўлена.

  • Сервер кіравання працай кіруе заданнямі і гарантуе, што ўсе працы будуць завершаны адзінак
  • Абстрагуючыся працу выбраць / вынікі прадстаўлення, мы можам змяніць тэхналогію кіравання серверам без асаблівых праблемы
  • Налада працоўных месцаў, каб яны працуюць хутка і эфектыўна, не падвяргаючы занадта шмат ціску на сеткавую інфраструктуру, і без дублявання задач апрацоўкі на рэгулярнай аснове.
  • Пераканайцеся, што вы будуеце адмоваўстойлівасці і памылкі checking ў вашай працэдуры, працаўнікі могуць прыпыніць і аднавіць, і ў самы непадыходны раз. Не забудзьцеся праверыць, калі вынікі ўжо былі прадстаўлены іншым работнікам.

Наступны раз

У частцы 3 мы ствараем віртуальную машыну, апрацоўкі і стварылі нашы вокны машыны, каб стаць часу прастою работнікаў.

Упраўленне Grid Computing з дапамогай Virtual асяроддзя - Частка 5

Па , у пятніцу 4 снежні 2009 года 11:03 вечара

Увядзенне

Я працую ў кампаніі, дзе мы запускаем шмат працоўных месцаў, пакетную апрацоўку мільёнаў запісаў дадзеных кожны дзень, і я думаў у апошні час пра ўсіх машынах, якія сядзяць кожны дзень нічога не рабіць на працягу некалькіх гадзін. Не было б добра, калі мы маглі б выкарыстоўваць гэтыя машыны для ўмацавання вылічальнай магутнасці нашых сістэм? У гэтай серыі артыкулаў я буду глядзець на патэнцыйныя выгоды ад выкарыстання офіса сеткі выкарыстаннем виртуализованных асяроддзях.

У частцы 4 мы разглядалі з дапамогай інструментаў, каб гарантаваць, што мы бяжым апошнюю версію кода і крыніцы дадзеных, так што атрыманыя вынікі з'яўляюцца заўсёды сучаснымі з апошнімі бізнес-інфармацыі і логіку.

Перад разгортваннем

Да разгортвання сеткі сістэмы, калі ёсць адна рэч, вы робіце, і адно толькі гэта тэст бягучай сістэмы! Усё роўна, што вы кажаце калегам пра тое, колькі дадатковай працы вашай сістэмы будзе рабіць, калі ў вас ёсць ліку, каб падтрымаць гэта ваш гарантыі нічога. Такім чынам,

  • колькі запісаў вы можаце апрацоўваць ў цяперашні час? У дзень? У гадзіну?
  • Колькі часу звычайна патрабуецца, каб разгарнуцца на працу?
  • Наколькі больш магчымасцяў у вас ёсць?

Там таксама дадатковыя пытанні:

  • Калі ваш сервер апрацоўкі (або адзін з сервераў апрацоўкі) падае як гэта паўплывае на вашы магчымасці, вы будзеце калекамі?
  • Якія перавагі вы спадзеяцеся / чакаеце атрымаць ад падвеснай сістэмы?
  • Вашы офіснае абсталяванне можа працаваць працоўныя месцы?
  • Вашы (ці вы можаце быць пераўтвораны працоўных месцаў) у wrok ў гэтым стылі працуе?

Апошняе буйное справа ў тым, каб правесці час якіх-небудзь сур'ёзных змяненняў, як гэта. Абнаўленне апрацоўкі кода для працы з выкарыстаннем новай метадалогіі, тэст зноў. Магчыма наладзіць апрацоўку сервер для запуску віртуальнай машыны, у рэшце рэшт сервер апрацоўкі вашага будзе проста яшчэ адзін рабочы (толькі вельмі магутны адносна). Дайце новы працэс ўрэгулявання.

Разгортванне

Мая прапанова было б з'явіцца ў офісе адзін з выхадных дзён выконваць усе ўстаноўкі і наладкі. Рабіце гэта перад святам два тыдні і сысці, каб іншыя небарака, каб мець справу з наступствамі ... можа быць, не ...

Разгортванне сістэмы, як гэта павінна быць павольным. Нягледзячы на ​​гэта час адносна просты ва ўсталёўцы гэтай сістэмы паўплывае на ўсю інфраструктуру офіса (і лічбавай). Па-першае, раскачаць на некалькі машын адначасова, маніторынг сеткавага трафіку, як работнік выконвае хастоў у дзень, у дзень аснове. Магчыма, вам прыйдзецца змяніць канфігурацыю вашай працы ў адказ на вашыя высновы.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

Stop!

What if you want to stop your workers from running at some time? They are all out there running, regenerating, and trying their best to process data like hungry insects. The answer may seem obvious but its worth adding just in case its overlooked. Simply edit your processing script with an exit(0) or die() or some other statement to kill your processing job. An important reason why we always try to update to the latest processing script before any run!

Demonstration System

In order to write this set of short articles I created a very small grid to demonstrate the technologies and methodologies. I read lots of articles, tutorials, and used various tools to setup and monitor what was going on. By no means have I gone out and saturated a whole office with traffic and nor have I had access to a regular staff members PC to see how host performance was affected.

My demonstration system was very humble indeed. I used my regular desktop set up as a job control server. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

The virtual machine was set up with PHP, subversion, and mySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. After all this I setup the bash script and the cron job.

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Падлічвалі колькасць падобных імёнаў у табліцу з крыніцы дадзеных праводзіцца на VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. At this point I also confirmed that replication automatically restarted.

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

The next obvious step would be to actually get a real world example and start to deploy a system such as this within an office environment and see what happens. Asking a business to commit to this without a trail blazing company to prove the technology and effectiveness may be a little difficult. Grid/Distributed computing is very popular is some circles and has some large applications (BIONC, SETI@Home, Folding@Home, etc). I did not, however, find a smaller scale and simple system like this in my searches that could be rolled out within an office environment.

I created a basically free system using mostly open source software and tools available in almost any office. The technologies were basically demonstrated and show to perform and work as expected. Hopefully I have show that with not much work and with a very simple setup you can deploy an office grid computing system that is powerful, cheap, and scalable all at the same time.

Once a system is up and running there is almost no end to the amount of customisation and improvements you can make. For example statistics / benchmarking can easily be added showing the worth of such a system every day. New machines can be added quickly and easily as and when they arrive with upgrades to existing hardware bolstering your processing power.

I hope you've enjoyed reading this series of articles and its given you food for thought on running an office grid system. The solution presented here won't necessarily work in all situations but should be adaptable to allow you to get your data processing done using your own solution.

Please feel free to send me any comments, corrections, or improvements and I'll do my best to keep this article updated to match.













Panorama Theme by Themocracy

10 visitors online now
6 guests, 4 bots, 0 members
Max visitors today: 15 at 05:20 am UTC
This month: 26 at 04-04-2012 10:27 pm UTC
This year: 69 at 27-02-2012 09:56 am UTC
All time: 130 at 28-03-2011 10:40 pm UTC