Паведамленні з тэгамі: сетка

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

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

Увядзенне

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

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

Запуск апошняй версіі кода

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

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

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

У рэшце рэшт, мы маглі б у канчатковым выніку з дапамогай сцэнарыя баш (выклікаецца крон кожныя 10 хвілін), які выглядае так проста, як гэта:

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

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

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

Выкарыстоўваючы апошнія дадзеныя

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

Трымайце вы коні там! Што рабіць, калі крыніцы дадзеных велізарна? Ну гэта на самай справе ідзе аб тым, колькі дадзеных можа ісці гаворка? Гэта можа быць больш эканамічна эфектыўным, каб усталяваць дадатковы цвёрды дыск большага ў кожнай машыне, чым купля дадатковага сервера апрацоўкі. Гэта пытанне бюджэту і да бізнес-рашэнні. Гэта, можа быць, крыніцы дадзеных настолькі вялікі, што яго проста немагчымым захаваць гэты аб'ём дадзеных у вашых машынах работніка. У такім выпадку, што б вы зрабілі? Ну, мы маглі глядзець на выклік лакальны сервер дадзеныя, але гэта можа выклікаць праблемы з сеткай. У гэтым выпадку сетка сістэмы, так як гэта можа стаць нерэальным ўключыць у офісе. Ён таксама можа быць тое, што вы можаце паглядзець у альтэрнатыўных стратэгій працы, напрыклад, толькі патэлефанаваўшы ў працоўныя паміж 8 вечара і 6 раніцы кожную ноч і / або рэгуляванне крыніцы дадзеных запытаў.

Пераходзячы дазваляе сказаць, што нашы крыніцы дадзеных складае 100 ГБ дадзеных. Ну ды гэта зусім трохі дадзеных, каб перамяшчацца па сетцы на абнаўленне. Як бы мы гарантуем, што ў нас ёсць апошняя копія дадзеных у гэтым выпадку? Rsync магчымасць, але асабіста я думаю, што, запусціўшы апошні крыніца дадзеных на серверы апрацоўкі заданняў і наладзе, як майстар рэплікацыі (з прыемным доўгім часопіса бін), можа быць шлях:

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

Гэта, як мне наладзіць сервер дэманстрацыі. Каб наладзіць рэплікацыю я ішоў кіраўніцтва на сайце MySQL ( налада рэплікацыі ) і на працягу 20 хвілін у мяне быў працоўны Пачатковая тыражаванне кіравання працай сервераў дадзеных. Для кожнага дадатковага работніка налады рэплікацыі і працэс працуе кожны раз, калі VM была скапіяваная.

Рэзюмэ

У гэтай частцы артыкула мы разгледзелі, як лёгка і бязбольна гэта захаваць ваш код апрацоўкі да цяперашняга часу using Rsync або subverion (SVN), каб зрабіць працу і зменшыць сеткавай трафік, у той жа time. Мы таксама абмеркавалі, якім чынам захаваць вашыя дадзеныя ў крыніцы інфармацыі да сучасных, дазваляючы ёй сцячы, каб кожны з вашых работнікаў. Такім чынам, плошча забеспячэнне, што мы ў нагу з бізнес-логікай і інфармацыі ў нашай сістэме, сеткі офіса. Там, відавочна, будзе незлічоныя альтэрнатывы выкананню гэтых задач, але вось два простых прыкладу, каб паказаць, наколькі лёгка гэта рашэнне знайсці.

Наступны раз

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

Упраўленне 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 асяроддзя - Частка 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: Калі працаўнік пачаць працу? Адсочваючы вакансіі, якія не завершаны на працягу пэўную колькасць раз, калі мы ведаем, што трэба падабраць працу яшчэ раз і пачаць апрацоўку іншым работнікам. Рабочыя маглі спыніць апрацоўку / пераходу ў аўтаномны рэжым для любога ліку прычын збою харчавання, аварыя, страта сеткі і г.д.

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

Давайце дадамо некалькі працоўных месцаў прыклад:

Прыклад працы

У наступнай табліцы зноў вельмі просты для разумення, гэта нашы запісы працы. Яны звязаны з асноўнай табліцай працоўных месцаў калонка `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 ў гэтым стылі працуе?

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

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

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

Разгортванне сістэмы, як гэта павінна быць павольным. Нягледзячы на ​​гэта час адносна просты ва ўсталёўцы гэтай сістэмы паўплывае на ўсю інфраструктуру офіса (і лічбавай). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

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
  • Counted the number of similar names in a table from the data source held on the 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.













Панарама Тэма Themocracy

3 visitors online now
2 guests, 1 bots, 0 members
Макс наведвальнікаў сёння: 6 у 12:34 раніцы UTC
У гэтым месяцы: 56 у 2012/04/25 08:41 раніцы UTC
У гэтым годзе: 69 у 2012/02/27 09:56 UTC
За ўвесь час: 130 у 2011/03/28 10:40 вечара UTC