Категория: Linux

Службата грид-технологията използва Виртуалните среди - част 4

С Стивън Лойд Watkin , петък 4-ти Декември 2009 23:59

Въведение

Аз работя в компания, в която ще свършим много работни места за обработка на партидите милиони копия на данните, всеки ден и аз си мисля напоследък за всички машини, които седят около всеки ден правиш нищо в продължение на няколко часа. Не би ли било добре, ако можем да използваме тези машини да се засили процесорна мощ на нашите системи? В тази поредица от статии, аз ще разгледаме потенциалните ползи от наемането на офис мрежа използване виртуализирани среди.

В част 3 ние създадохме нашата виртуална машина обработка и създаване на прозорци машини да стане празен работно време.

Провеждане на последните код

Неизбежно след създаването на бизнес логика работниците ще се промени, грешки, ще се намерят, по-бързо по-ефективно код ще се произвежда по този начин излизате от работници седяха около обработка на данни чрез стари миризливи код . Как тогава да се гарантира, че ние сме винаги с най-новите и най-версия на нашия обработка на скриптове?

Има няколко много лесно прости начини можем да направим това, трик, обаче, е да се намали за обработка и мрежовия трафик за постигане на това. Да започнем с най-простите решения и да го подобрява бавно в продължение на няколко повторения.

Първият метод ще бъде просто да се свърже с нашия сървър контрол на работата (чрез самба, FTP, или нещо подобно) и дръпнете последната версия на кода. Не е много ефективно, но ще си свършат работата. Да се ​​подобри по този до известна степен, какво ще кажеш за създаване на Rsync скрипт и работа, че всеки път, а? Като алтернатива какво да кажем за въвеждане най-новите ни обработка скрипт в подривна дейност проверка на код в началото и след това просто актуализиране код магазин на всеки цикъл ( SVN обновяване )?

В крайна сметка бихме могли да се свърши с тряскам скрипт (наричан от Cron на всеки 10 минути), което изглежда толкова просто като това:

  #! / Хамбар / ш
 PS ако брадва | Впиши-V Впиши | Впиши PHP > / сътрудничество / нула
 след това
     Хуманитарна помощ "работи в момента е преработка, изход"
 още
     Хуманитарна помощ "работи не се изпълнява, да започнем сега"
     път / до / работа / копиране
     SVN актуализация
     PHP yourJobProcessingScript.php
 Fi 

Сега можем да бъдем сигурни, че с всеки опит ние сме определено работи-късно код. Ние сме се гарантира това, като актуализиране на нашите кодовата база всеки път, когато изпълняват план и намаляване на мрежовия трафик само с прехвърляне на файл разликите в нашата мрежа.

Според мен демонстрация за настройка, така е точно така, както по-горе. Subversion е инсталиран на моя сървър работа обработка и аз просто да извади най-новите кода от клон на "работник" се използва "SVN актуализация. Аз също да добавя маркер номера на версията за обработка ми скрипт, който е върнат в базата данни като част от резултатите се върне. По този начин мога да видя, че моя код е бил обновява на всеки път, когато се копират ми в багажника т.е. работникът клон, че аз определено беше най-новите работи обработка на скрипта.

Използвайки най-новите данни

Ако си работа обработка се възползва от източниците на данни, след това в един момент тези които ще бъдат актуализирани също. Освен ако не се обадите на вашия източници на данни за много редки основа започваш да заливат мрежата си с движение, веднага щом започнат да се показват работници привеждане всичко до застой. За моето решение реших, че искам да преместя източници на данни с около моя виртуални машини.

Дръж си коне там! Какво става, ако си източниците на данни са огромни? Ами това наистина става дума за това колко данни се говори? Може да е по-рентабилно да се инсталира допълнителен по-голям твърд диск във всяка машина, отколкото да купуват допълнителен сървър преработка. Това е въпрос на бюджет и е работа на бизнеса да реши. Това може би, че източниците на данни са толкова големи, че си просто невъзможно да се поддържа, че размерът на данни във вашето работник машини. В такъв случай какво бихте направили? Ами ние да се стремим да наричаш локален сървър на данни, но това може да предизвика проблеми с мрежата. В този случай мрежата, като това може да стане нереалистично да се включите в офис среда. Той може да бъде, че можете да търсите в алтернативни стратегии за работа, например само вика работници между 20:00 и 6 ч. всяка вечер и / или натоварването на източник на данни искания.

Преминавайки нека нашите източници на данни в размер на 100 GB данни. Е да това е доста данни, които да се движат в мрежата на актуализация. Как бихме могли да гарантираме, че имат най-новото копие на данните в този случай? Rsync е възможност, но лично аз мисля, чрез провеждане на най-новите източници на данни на вашия сървър работа обработка и определяне на това се като майстор репликация (с хубав дълъг влезете бен) може да бъде начин да отида:

копиране Чрез определянето на всеки един от вашите работници се като роб на работа актуализации контрол сървър към източници на данни ще се изсипват на добре да си работници, без голямо увеличение на дейността на мрежата (т.е., ако не извършим огромен актуализация на данните и за всички работници удар в наведнъж). Това има своите предимства над Rsync по това, че няма да получи дълга пауза преди всяко едно работно място, според както осъвременявания на базата данни, на MySQL демон на вашия работник постоянно ще актуализира своите данни при обработката продължава.

Това е как да настроя моя демонстрация сървър. За да настроите репликация Следях за употреба на MySQL сайт ( Създаване на репликация ) и в рамките на 20 минути, които съм имал ми inital работник имитиране на контрол върху работата сървъри набор от данни. За всяко допълнително работник на репликация настройки и процеса работи всеки път, когато VM е копиран.

Обобщение

В този раздел на статията са се занимавали с това как лесно и безболезнено е да си обработка код актуализиран using Rsync или subverion (SVN), за да вършат работа и за намаляване на мрежовия трафик по едно и също time. Ние също обсъждат как да запазите вашите данни източник на информация в крак с времето, като му даде да се стече до всеки един от вашите работници. По този начин ние район се гарантира, че сме в крак с бизнес логиката и информация в системата ни офис мрежа. Ще има очевидно се безброй алтернативи за изпълнение на тези задачи, но тук са два прости примери, за да покаже колко лесно решение е да дойда.

Следващия път

В последната част на тази серия, уместно наречена част 5 , ние ще обсъдим разполагане на тази система за. Аз ще обобщя това, което е научил и това, което успяхме да създадем.

Службата грид-технологията използва Виртуалните среди - Част 3

С Стивън Лойд Watkin , петък 4-ти Декември 2009 23:37

Въведение

Аз работя в компания, в която ще свършим много работни места за обработка на партидите милиони копия на данните, всеки ден и аз си мисля напоследък за всички машини, които седят около всеки ден правиш нищо в продължение на няколко часа. Не би ли било добре, ако можем да използваме тези машини да се засили процесорна мощ на нашите системи? В тази поредица от статии, аз ще разгледаме потенциалните ползи от наемането на офис мрежа използване виртуализирани среди.

В част 2 ще погледна на работни места на сървър да се показва и колко работни места трябва да бъде конфигуриран с цел постигане на най-голямата сума за обработка като същевременно се гарантира, че всяко едно работно място се обработва, без да се провалят.

Създаване на вашия работник - или Limp сървър

Следващата стъпка в процеса е да се създаде виртуално работници. За това аз ще използвам една инсталация на CentOS използвате VirtualBox. Отивам да инсталирате MySQL и PHP на сървъра, известен също като Limp (Li Nux, м ySQL, P HP) Server (I може да е направил това име се).

  • Инсталиране на VirtualBox на вашия Windows машина (следване на връзката)
  • Изтегляне и инсталиране на CentOS (актуалната версия 5.3) в рамките на създадената виртуална машина

Няма смисъл да ми става за това вероятно има е 1000 на голям урок там (добре де, ето едно: Създаване и Managing CentOS виртуална машина под VirtualBox ). Важното да се отбележи, предполагам е, че аз се обадих виртуална машина GridMachine.

Що се отнася до моя избор на клиента и виртуализация на операционната система там е голяма основателна причина за всеки избор. VirtualBox е нещо, което да използвам в моя дом машина и е подкрепена от трите основни операционни системи. Избрах CentOS, както си е добра стабилна OS и го използвам за моя собствен уеб сървър. Аз силно вярвам в правилните инструменти за работа (въпреки че аз съм прилагане "да се използва най-бързият и лесен за вас" манталитет тук), така че ако операционната система X работи кода по-бързо и по-ефективно използване, че вместо това:)

Важно е да се уверите, че VM използва DHCP, в противен случай за всяка нова виртуална машина, ще трябва да се конфигурира отделно, което е нещо, което не се използва DHCP want.By ние не трябва да конфигурирате мрежовите настройки поотделно за работник, машини, DHCP ще предаде на IP адреси за вас. Затова можете да копирате виртуална машина за офиса без да се притеснявате за определяне на всеки от тях се (така се подобрява мащабируемостта и намалява работник администрация).

Процесът трябва да се стремите да се постигне е да се получи нова физическа машина, инсталирайте VirtualBox и след това почти мобилизиране на виртуален образ, без много други неща. Тя може да бъде разумно да настроите всичките си работници на различни подмрежи, така че поне можете да видите колко машини се изпълняват. Освен това ще трябва да настроите вашата машина за дългосрочни договори за наем или неограничено DHCP лизинг.

Как да тече заетост на работника

Това е една интересна област и има няколко валидни методи за обработка на работни места на работника. Тук просто ще обсъди двата най-очевидни:

  • Вечно работи скрипта: Скрипт, било то черупки скрипт, или скрипт, PHP се изпълнява веднъж на работника и работи като част от един безкраен цикъл. Аз бях дисконтирани този метод като една катастрофа на сценария и потенциално вашите работници ще престанат да се движат без някаква намеса.
  • Cron основава изпълнението скрипт: Всеки X минути Cron демона започва на повикване към вашия скрипт, за да се неща се случват. Без някаква проверка това може да доведе до много, много копия на вашите работник скрипт работи.

Моето решение беше да отида с Cron която започва шел скрипт на всеки 10 minutes. ми скрипт извършва следните задачи:

  1. Вземи списък процес и Впиши това за "PHP". Ако не е намерено след това да продължи.
  2. Викам си код на работни места, в моя случай това би било нещо, PHP базирани
  3. Работник скрипт допълва своя план
  4. Готови ли сте да отидете отново на следващия подходящ разговор

Моят Баш скрипт изглежда подобно на следното:

  #! / Хамбар / ш
 PS ако брадва | Впиши-V Впиши |> Впиши PHP / сътрудничество / нула
 след това
     Хуманитарна помощ "работи в момента е преработка, изход"
 още
     Хуманитарна помощ "работи не се изпълнява, да започнем сега"
     PHP yourJobProcessingScript.php
 Fi 

Забележка: "Хуманитарна помощ" са почти напълно безсмислено, но може да помогне на следващия човек, който идва заедно да се опитаме да ги редактирате.

Това заключава в създаване на работника виртуална машина, бърз, прост и лесен за копие на всяко ново парче от хардуер, който е получил. В "интелигентност" на мрежата, наистина не е в визуализира OS, всичко общо с код е създаден да обработва работни места, работа конфигурация, както и в гарантирането, че работата се изпълнява, когато е подходящо (т.е. когато домакин е празен ).

Създаване на Windows може да бъде прочетен работници

Първата задача е да се изработи командата необходими за работата на виртуалната машина от прозорците командния ред. Ако сте инсталирали VirtualBox в местоположението по подразбиране и сте си име работник GridMachine след това командата изисква да се зареди на вашия работник е:

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

Все пак да стартирате скрипт в "без глава" състояние, ще трябва да използвате:

  "C: \ Program Files \ нд \ VirtualBox \ VBoxHeadless.exe"-startvm GridMachine - VRDP = изключено 

Това ще започне на виртуалната машина, без графичен интерфейс и се оставя да спаси държавни елегантно. Вторият аргумент се изключва развитие на селските райони, така че да не противоречи на прозорци развитие на селските райони, или да ви даде съобщение за слушане на порт 3389. Виртуалната машина име на буквите има значение!

След това, ние ще трябва да настроите Windows да се започне нашите VM работника, след като машината не е бил използван. За да направите това (за Windows XP) ще трябва да отида Start -> All Programs -> Accessories -> System Tools -> Scheduled Tasks по-долу:

планирани задачи

Следващата кликнете върху "Добавяне на планирана задача", последвано от разглеждате да добавите потребителски програма. Отидете до VBoxManage скрипт и щракнете върху OK. График на задачите си за някоя от тези опции (ние ще променим това след малко) и да продължите. След като прескочите следващите прозорци на екрана ще ви попита, които искате да изпълните тази задача, бих предполагат или "Администратор" или създаване на нови привилегировани потребители. Не забравяйте, ние не искаме да се намесва в стандартна сметка на персонала на машината във всяка точка. Кликнете върху следващия и проверката покажат допълнителни опции за тази задача.

До края на подготовката виждаш добави "startvm GridMachine" низ ни и да се гарантира, че работят само, когато влезли в системата остава unticked. Посещение на график на задачите и следващата промяна на спад график до възможността, когато бездейства ", изберете колко време искате машината да бъде празен ход, преди да преминат към следващия раздел.

Накрая развързвам вариантът, който посочва спиране на задача, ако тя се провежда X период от време, но маркирайте опцията за спиране на задача, ако машината вече не е празен.

разписание

Това е всичко след това за Windows домакин настройка!

Обобщение

В тази част ние имаме създадена една виртуална машина, за да действа в качеството на работник, както и начина, по който ние наричаме и изпълнение на нашите скриптове обработка на работа (за себе си скрипт, PHP). От тук погледнете как да се създаде нашата копия на Windows за стартиране на виртуалната машина в режим без глава, когато компютърът не се използва, и запишете си състояние, когато потребителят отново използване на машината. Надяваме се в този момент виждате колко е лесно да се създаде такава система и са сърбеж да получите някои експерименти себе си ще!

Следващия път

В част 4 ще се търси при използването на инструменти за да се гарантира, че работите най-новата версия на кода и източници на данни, така че получените резултати са винаги в крак с времето с най-новите бизнес информация и логика.

Службата грид-технологията използва Виртуалните среди - част 1

С Стивън Лойд Watkin , петък 4-ти Декември 2009 23:23

Въведение

Аз работя в компания, в която ще свършим много работни места за обработка на партидите милиони копия на данните, всеки ден и аз си мисля напоследък за всички машини, които седят около всеки ден правиш нищо в продължение на няколко часа. Не би ли било добре, ако можем да използваме тези машини да се засили процесорна мощ на нашите системи? В тази поредица от статии, аз ще разгледаме потенциалните ползи от наемането на офис мрежа използване виртуализирани среди.

В PHP разработчик Отивам да се използват инструменти, които използваме всеки ден, а именно, Linux, MySQL , PHP, VirtualBox и подривна дейност (SVN). Въпреки това Надявам се това ръководство ще се адаптира към други езици и технологии също толкова добре.

Решението да предоставя, ще бъде много слабо в зависимост от вида на обработката ние ще трябва да се постигне обаче това не може да е вярно през цялата статия както аз се променят нещата за простота, или за производството на по-интересни сценарии ползване.

Тези виртуализирани среди ще работят на Windows машини, тъй като това е, което по-голямата част на офиси план. Обработката на офис машини, не трябва да пречи на персонала, който използва тези машини, следва да се изисква никаква поддръжка на машината, и да бъде лесно да разгръщат нови машини, тъй като те станат достъпни. Също така, новите виртуални машини не следва да се изисква допълнителна конфигурация, тъй като това значително намалява мащабируемостта и лекотата, с която системата на преносната мрежа може да бъде удължен.

Защо да се мобилизират Grid Office Компютърни?

Първо може би си мислите, защо просто не използва ресурс изчислителни облаци като платформа на Amazon EC2 ? Ами причините биха могли да бъдат няколко, като например:

  • Вие няма да предоставят на определени данни на околната среда изчислителни облаци
  • Не може да постави определени данни в среда изчислителни облаци по юридически причини (например информация за напускане на страната), потенциално по юридически причини, например NHS записи.
  • Искаш ли да си процесори, в близост и да има пълен контрол над хардуера също
  • Не е нужно със средствата по проекта да тече облак случаи
  • Вашият офис не разполага с връзка към интернет и да си не може да се използва ресурса облак
  • Не е като дъжд, облаци показват дъжд, затова се добре далеч

Сигурен съм, че списъкът може да продължи, но мисля, че това е достатъчно за сега.

Предимства на мрежата на Office Компютърни

Ами, нека да се направят някои по математика (и по-вярно, физика стил дава възможност да направи някои предположения метене). Представете си, че имат голям мускулест сървър преработка работи 100 работни места на ден. В офиса ви има 50 машини, които не са активни 16 часа на ден, всяка една от тези машини е 10% толкова мощен, колкото си силен обработка на север. (Всички резултати тук са закръглени до подценяване увеличение на ефективността).

Така че, една машина * 10% мощност * 2 / 3 време = 0.067 т.е. 1 десктоп обработка в режим на времето могат да се обработват 6 пълни работни места на ден.

Ако сега степен, това се отнема 15 бездейства настолни компютри за обработка на колкото се може повече работни места на ден, както си главния сървър обработка прави.

Така че в преструвам нашия офис от 50 машини, бихме могли да увеличим процесорна мощ от 1 сървър до 4 пълни сървъри преработка, или бихме могли да обработва 400 работни места на ден, вместо 100.

Забележете, не за инвестиции в нов хардуер вашата фирма е просто увеличава капацитета преработка партида 4 пъти! Потенциално ти започваш да се увеличи използването власт, а от най-офис среди Аз бях на машини обикновено са оставяли по овърнайт така или иначе, така че може да гледаме на това като на "зелена инициатива.

Други предимства също така означава, че инвестициите в новите (или актуализират) обработка на сървъри може да се забави, ако вашият офис машини са достатъчни и че като си подобри силата на своя офис машини за вашия офис мрежа става все по-мощно автоматично.

Технологии

Какво ви трябва? (Или по-точно това, което съм употреба):

  • Готовност офис машини (в моя случай резервен старите прозорци лаптоп XP)
  • VirtualBox (или друг софтуер за виртуализация на клиента)
  • Виртуална машина с PHP, MySQL running пуснете отсече OS, което наричам тия мои Limp сървъри:)
  • Работа да тече
  • Работа сървъра (може да бъде друга виртуална машина някъде)

Типичните работни места

Видовете работа, която има за цел тази система да работи, както следва:

  • Системата получава списък на данните, на които трябва да отговарят и да се върнете резултати
  • Съвпадение включва проверка / търси няколко (доста статично) източници на данни
  • Резултати от източниците на данни може да изиска допълнителна проверка, сливане, проверка на допълнителни източници на данни в отговор на резултатите
  • Данните се връща със съвпадащи записи, напълно и преработени
  • Всеки запис в рамките на работа не зависи от останалите

Така че основно ние не търсим на движение работни места, които изискват от смес на базата данни заявки и известен брой изчисления, т.е. един доста типичен сценарий в бизнес среда.

Решетка решения не са само от полза за обработка на работни места от този тип. По принцип, всеки процес, който може да бъде разделен на самостоятелни звена могат да се използват паралелно. Вижте Уикипедия за примери и повече информация: грид-технологията , но няколко от известните примери са SETI @ Home и BIONC . Има рамки за работа компютърни мрежи, и те са добре търси в заслужава.

Какво ще постигнем?

До края на тези членове, се надявам да покажа, че разполагането на офис мрежа не е необходимо да бъде изключително скъпи и отнемащи време. Ще обсъдим:

  • Създаване на система за контрол на работата, работни конфигурация
  • Създаване на подходяща обработка на виртуална машина
  • Как да настроите системата на Windows машина
  • Осигуряване използвате най-новите код и данни
  • Внедряване и оценка на
  • В перспектива

Ще се сграда (добре де аз построих, а след това е написал това) заявление например за проверка на концепциите на локална машина С помощта на Windows XP и виртуалната машина ми "GridMachine". Моят сървър контрол на работата ще бъде моята основна машина, която работи Fedora 11 .

Това по никакъв начин не цели да покаже напълно работещи стабилна система, нейните означава по-скоро демонстрация и обсъждане, показващи, че тези неща може да бъде постигната в разумно кратък период от време и при минимални разходи. Моля не се колебайте да ми изпратите коментари, корекции и подобрения, и аз ще направя всичко възможно да запази тази статия актуализира, за да съвпадат.

Следващия път

В част 2 ще започне с разглеждане на система за контрол на работни места, и разгледа начините за работните места трябва да бъде конфигуриран с цел постигане на най-голямата сума за обработка като същевременно се гарантира, че всяко едно работно място се обработва, без да се провалят.

Службата грид-технологията използва Виртуалните среди - част 2

С Стивън Лойд Watkin , петък 4-ти Декември 2009 23:23

Въведение

Аз работя в компания, в която ще свършим много работни места за обработка на партидите милиони копия на данните, всеки ден и аз си мисля напоследък за всички машини, които седят около всеки ден правиш нищо в продължение на няколко часа. Не би ли било добре, ако можем да използваме тези машини да се засили процесорна мощ на нашите системи? В тази поредица от статии, аз ще разгледаме потенциалните ползи от наемането на офис мрежа използване виртуализирани среди.

В част 1, аз се прави преглед на системата и технологии ще се използват, както и обсъдени някои от възможните причини, поради които бихте искали да се създаде мрежа офис.

Работа контрол

Ако ще да се работи работни места след това започваш да имат нужда от някакъв начин да ги управляват. Вашата система контрол на работата (в работата си сървър) трябва да бъдат много добре обмислени, преди дори се опитват да стартирате мрежата офис. Така че, от една страна, какви са задачите за работа система за управление:

  • Раздайте работни места по искане на работниците
  • Кажете какъв тип работници на работните места да тече
  • Проследяване на работни места
  • Уверете се, че работните места се провеждат само веднъж
  • Provide job data to workers, or at least tell them where to get it

The system also needs to be extensible, a solution that works for now in a single case may be extended to run several types of jobs as the business sees the worth in a grid solution. For example, jobs may gain priorities, more than one job type may exist (ie several code bases), eventually you may even run several different worker machines that are optimised for each type of job (although that does move away from the 'generic worker' idea). Always try to think about the future when developing systems, a short term vision can lead to longer term frustration and increased development time.

Работа Server

We're going to need somewhere to control our jobs from, this should be the only system in your grid that has a fixed resource locator, be that an IP address, host name, URL (using internal DNS), etc. This is because the workers need to know where to look for jobs, workers need to find the job control system (not the job control system find the workers).

The job server itself doesn't really have a complicated task (in a basic system anyhow), it needs to store a list of jobs, hand out jobs, receive results, and subsequently store them for later retrieval. How these parts (such as 'hand out jobs') are defined can be very basic. Later on we can extend the system to include an administration interface to add, edit, delete, suspend jobs but this is beyond this exercise.

There is no reason whatsoever then that your job server could not be a virtual machine running within your main processing server provided it doesn't drain too many resources from it. The job server however does need high availability, if it goes down on a Friday evening you're going to lose a whole weekend of processing, potentially costing you a couple of weeks worth of processing time (when compared to your main processing server alone). You may want to consider putting your job server on a load balanced environment for high availability.

Basic Setup

Основната настройка за нашата работа сървър ще се състои от онова, което наричам един от моите сървъри Limp (това е Li Nux, ySql м, P HP). Кодът работи на Теа работници ще работи в действителност какви работни места може да работи, като взаимодейства с работата с бази данни, системата за контрол. По-късно може да създаде уеб услуги и действително ръка работни места, а не като на работници свърши тежката работа сами, но за сега ще продължи да използва принципа KISS (Съхранявайте го просто, тъпако!).

Така че, нека направим три MySQL таблици, за да се справят с работни места. Те ще бъдат "работни места", "jobRecords", и "jobResults".

работни места таблица Тук съм с SQL Бъди много малко алтернатива на PHPMyAdmin , само защото си по-лесно да се инсталира на CentOS (за другите виж: 10 Големите алтернативи на PHPMyAdmin )

В тази таблица се състои от 5 прости полета,

  • номер: уникална идентификация на работа
  • име: Може да е клиент справка, или произволен брой други идентификатори
  • Състояние: Трябва да знаете, когато работата е на, например
    • 0: Не е стартирала
    • 1: Качват
    • 2: Завършен
  • started_by: Кой е започнах да правя на работа? Това не е напълно задължително, но е хубаво да има. Бих предполагат, проследяване на работниците чрез IP адреса си в мрежата
  • started_at: Кога работникът започне работа? Чрез проследяване на работни места, които не са завършени в рамките на сумата Х от време, ние знаем, че трябва да се вземат на работа отново и да започне преработката им от друго лице. Работниците могат да спрат обработката / да се публикуват за всеки ред причини прекъсване на електрозахранването, катастрофа, загуба на мрежова връзка и т.н.

Лесно е как тази таблица може да бъде разширен с няколко допълнителни полета, за да позволи статистическите данни за проследяване, колона край време, за да видите колко време работата взе, брояч, за да видите колко работници качват на работа (явно това трябва да са склонни да 1), работа приоритет, списъкът може да продължи и нататък. В по-сложни сценарии на работа би било възможно да се определи колко памет на работника ще се нуждаят от достъп до (и следователно да използват само подходящи работници), или дори какъв тип работник ще се изисква.

Да се ​​добавят няколко работни места например:

Например работни места

В следващата таблица отново е доста лесен за разбиране, това са нашите работни записи. Те са свързани с основната маса работни места от една колона "jobs_id". В съставът на тази таблица, в голяма степен зависи от данните, които трябва да предоставят на работниците си, нека се направи много прост пример, когато имаме четири колони:

  • номер: ID на записа
  • име: Име на човек
  • адрес: адрес на човек
  • jobs_id: Работата ID, че този запис е свързано с

Третата и финална маса се състои от таблицата с резултати, то е почти същото като да се нашите данни таблица, както и с добавянето на някои колони може да бъде част от записите таблица:

  • job_record_id: Връзка на резултата в таблицата за задания
  • Резултатът: В резултат на данните

... И това е всичко необходимо за контрол на работата! (Макар и на много базово ниво) В моя случай аз съм посочи друга таблица, където е бил данните си за обработка, но това също така могат да са на файл, параметри да тече код симулация, ти име.

Избор на работа

Както вече бе посочено, работниците ще направим всичко за управление на работа за нас, за сега, така че всички ние трябва наистина да направите, е да си намерят работа, която трябва обработка и да получите информация. Как ще го направим? Ами вземете нашите критерии за подбор на работни места и търсят работа, в SQL направих следното:

  1. Вземете всички работни места, които не са маркирани като завършени от нашите работници и нулиране тях (заместител __ME__ с идентификатор, най-лесно ще бъде IP адрес):
      UPDATE "работни места" SET "статут" = 0, когато "статут" = 1 и "started_by" = __ME__; 
  2. С помощта на нашите критерии за работа за избор, изберете работа и да каже на система за контрол, че този работник се занимава с него:
      UPDATE "работни места" SET "статут" = 1, "started_by" = __ME__, "started_at" = NOW () КОГАТО "статут" = 0 или
     ("Статут" = 1 и "started_at"> DATE_SUB (NOW (), период за X час)) ORDER BY "номер" ASC; 

    Като вземат работните места, които не са се завърнали резултати в размер X от време ние гарантираме, че всички работни места се провеждат в случай на работник от срив или ще несигурен.

  3. Следваща вземете работни места Подробности, следвани от самите записи:
      SELECT * FROM `работни места", когато "started_by" = __ME__ LIMIT 1;
     SELECT * FROM `job_records", когато "номер" = __JOBID__; 

След приключване на работа ние посочете ни резултат записа и маркирайте работа за пълно. Не забравяйте, тъй като работните места може да спре / възобнови по всяко време да позволи за някои стабилността в скрипта. Тя може да бъде, че задачата, спира по средата на актуализиране на системата за контрол на работата, така че проверка на броя на записите в работа и броя на резултатите, записани обратно към системата за управление на задачите би било мъдър ход.

В допълнение, като това показва, колко работни места могат да бъдат избрани и управлявани от SQL-заявка кадри, които трябва наистина да бъде абстрахиране работата си контрол, така че ако решите да преминете към използване на уеб услуги, файл, базирана система, XML или друг съвкупност от системи, това няма да повлияе на кода над него.

Работа за конфигурация

Следващият аспект е да се помисли работа размери и конфигурация. С играе с работа конфигурация може да удари отличен баланс между скорост, репликация процес, и надеждност. Вземете няколко OFA сценария:

  1. Работата отнема 1 ден всяка да текат: Това означава, че работниците трябва да 15 дни за обработка на всяко едно работно място (не забравяйте 10% от мощността за 2/3rds на време). Това очевидно не е мъдър конфигурация, вашата работа размер е твърде голям! Това ще отнеме поне два пъти повече време, за да си намеря работа преработени следва първоначалната работник отиде несигурен (време, за да вземем, че не се е върнал в резултат плюс преработка време). В един идеален ще трябва най-малко един пълен работен лесно премахнати до края на всеки продължителен период на престой, по този начин да поддържате работни места тиктака отново и в най-лошия случай, че работата ще отнеме два дни, за процеса, ако първият изчезнали.
  2. Работа по 1 минута, за да текат: Това означава, че работниците отнеме около 15 минути, за да тичам всяка работа. Въпреки че това може първоначално изглежда идеално, получавате допълнителна обработка работа по време на обяд, кафе паузи, срещи и т.н. този сценарий поставя натиск върху други области на вашата система и въвежда собствените си проблеми. Например, от една страна настройките съотношение между времето за обработка ще отиде чак, поради загуба на ефективността на системата. Вашата мрежа ще бъде непрекъснато стрийминг работа информация за различните работници разочароващ служители, които са оспорвани ден им работен ден. Вие също така ще положи повече натоварване на сървъра си работа на преработка, трябва да ястие на много и много малки части от работа на регулярна основа. На последно място, в тази ситуация, ако си работа сървър слиза ти започваш да се създаде огромен обратно регистър на недовършена работа има предвид, че по-големи работни места може да продължи обработката на блажено неведение, че работата сървър е в затруднено положение.

В действителност няма да има една идеална конфигурация за вашата мрежа настройка, много зависи от наличните средства, видовете работа, работа изисквания време за изпълнение, мрежови възможности, и така нататък. Все пак някои насоки ще бъдат:

  • Размер на работни места, така че всеки работник може да получи чрез поне 3-4 работни места в срок от 15 часа (най-дългия период на престой вероятно време)
  • Играйте с работа размер, така че време за настройка става доста незначителни в сравнение с времето на преработка (като се има предвид по-горе точка).
  • Ако работата не завърши в двоен размер от време (може би по-малко), които се очаква то да приключи тя предположи, че го няма несигурен и да започнат да ги обработват с друг работник. Това означава, че се наложи да чака до три пъти повече от нормалната продължителност на работа, за да пълни (може би повече, ако последващата работа не успява). Вие може да искате да се намали този път, но внимавайте да не се намали прекалено много, колкото може да започне да дублират задачите за обработка на регулярна основа.
  • Работата трябва да бъде независима от външни изисквания, доколкото е възможно. Работата сървър, например, трябва да се свържат в началото и в края на всяка работа.
  • Да не се насити вашата мрежа, това ще има два негативни ефекта, Вашите служители през деня ще намерите използват мрежата разочароващо и проблеми могат да бъдат изпитани с времето връзките на проблем, който само ще се влоши, докато мащаба си мрежа.
  • Осигуряване на работни места може да работи с вашите работници. Ако работните места да стане прекалено интензивно памет или дисково пространство интензивни работни места ще започне прекъсване и единственото нещо, което ще забележите, е намаляване на броя на работните места обработват без реална причина.

Подаване на резултати от работата

При представянето на резултатите от работата е важно да се провери дали резултатите не са били представени от друг работник, особено ако настоящият работникът е бил латентен за известно време.

Когато резултатите са предоставени гарантира, че броят на резултати, съответстват на броя на записите в тази работа.

Както бе посочено по-горе, и не може да бъде над подчерта, изграждане на устойчивост на откази в работата извличане и резултатите представяне. Работниците могат (и най-вероятно ще), отидете в режим за спиране на най-неудобно време и на това трябва да бъде взети под внимание. Също така за пореден път абстрахиране далеч резултатите си представяне ще се погрижат за бъдещи промени в системата за контрол върху работата много по-лесно да се справим.

Обобщение

В този section сме разглеждали какво е сървър контрол на работата трябва да се направи и как да се получи един много основен система, създадена. Ние обсъдихме как да извлечете от работата на системата за контрол и най-добрия начин за конфигуриране на работни места, за да получите най-ни на вашата система офис мрежа. За да се завърши, една или две точки при подаването на резултатите обратно на сървъра контрол върху работата беше представен.

  • Сървърът контрол върху работата управлява работни места и гарантира, че цялата работа, единици са завършени
  • Чрез абстрахиране работата си изберете / подаване резултати можем да променим технологията на сървъра за управление, без много проблеми
  • Конфигуриране на работни места за да се гарантира, че те се провеждат бързо и ефективно, без въвеждането на твърде много натиск върху инфраструктурата на мрежата, и без да дублират задачите за обработка на регулярна основа.
  • Уверете се, че изграждането на отказоустойчивост и checking грешка в съчетанието си, работниците могат да спре и да се започне и най-неудобен пъти. Не забравяйте да проверите дали резултатите са били представени от друг работник.

Следващия път

В част 3 ще създадем виртуална машина за обработка и създаване на прозорците ни машини да стане празен работно време.

Службата грид-технологията използва Виртуалните среди - част 5

С Стивън Лойд Watkin , петък 4-ти Декември 2009 23:03

Въведение

I work in a company where we run many batch jobs processing millions of records of data each day and I've been thinking recently about all the machines that sit around each and every day doing nothing for several hours. Wouldn't it be good if we could use those machines to bolster the processing power of our systems? In this set of articles I'm going to look at the potential benefits of employing an office grid using virtualised environments.

In Part 4 we looked at using tools to ensure that we're running the latest version of the code and data sources so that obtained results are always up-to-date with the latest business information and logic.

Pre-Deployment

Before deploying your grid system if there's one thing you do and one thing alone it's benchmark your current system ! No matter what you tell colleagues about how much extra work your system is going to do unless you have numbers to back this up your guarantees are nothing. Така че,

  • how many records can you process currently? Per Day? Per Hour?
  • How long does it typically take to turn around a job?
  • How much more capacity do you have?

There's also additional questions:

  • If your processing server (or one of your processing servers) goes down how will this affect your capabilities, will you be crippled?
  • What advantages do you hope/expect to get from a grid system?
  • Are your office machines capable of running the jobs?
  • Are your (or can you jobs be converted) to wrok in this style of running?

The last major point is to take your time on any major change like this. Update your processing code to work using the new methodology, benchmark again. Possibly set up your processing server to run a virtual machine, after all your processing server will just be another worker (just a very powerful one relatively). Allow the new process to settle.

Разгръщане

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). 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.

Стоп!

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

Следващата стъпка ще бъде очевидно, всъщност става дума за истински пример свят и да започне да разположи система като тази в офис среда, и да видим какво ще стане. Задаване на бизнеса да се ангажира с това, без следа пламнал компания за доказване на технологиите и ефективността може да е малко трудно. Решетки / Разпределени изчислителни е много популярен е някои кръгове и някои по-големи приложения (BIONC, SETI @ Home, Folding @ Home и др.) Аз не, обаче да установят по-малък мащаб и проста система като тази в си търсения, които могат да бъдат представени в рамките на офис среда.

Съм създал основно свободни система, която използва най-вече софтуер с отворен код и инструменти, достъпни в почти всеки офис. Технологиите са основно доказано и да се покаже да изпълнява и да работят както се очаква. 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.

[Информация] дете PID излизане XXXX сегментиране сигнал за повреда (11)

С Стивън Лойд Watkin , неделя 11-ти Октомври 2009 година 18:09

If you've recently upgraded PHP or Apache you maybe coming up against the issue of your webserver returning blank pages, and throwing error messages into your logs with no idea why, here's one possible way to fix it…

I've had this problem a couple of times recently after upgrading Apache or PHP on a virtual machine. The first time I noticed the error I simply reverted to a backup of my VM but the second time I realised I'd have to look into the issue.

The first time I noticed the issue some of my web pages were being served as blank files while the others worked absolutely fine. After some investigation I noted that apache was writing out to /var/log/http/error_log with the following message repeatidly:

[notice] child pid XXXX exit signal Segmentation fault (11)

There's not allot to go by on-line, and most of the pages about it trail off to nothing. That said, I narrowed down the issue to PHP crashing when trying to unneeded dynamic libraries.

Looking at my php.ini (/etc/php.ini) I commented out all of the dynamic libraries loaded planning on commenting them back in as required. The two I had to take out where pdo.so and mysql .so .

Once these were removed all my web pages were being served fine, just as before the PHP/Apache update.

Wireless on Acer 5002 WLMi on Linux (Fedora 11)

By Steven Lloyd Watkin , Saturday 11th July 2009 9:48 pm

As I've spent another few hours today without internet access I thought I'd better get this written down so that next time I mess my laptop up the information is easy to fix.

Basically to get wireless drivers working for an Acer 5002 WLMi you'll need to use b43-fwcutter. Instructions can be found here: Linux Wireless B43 .

Easy once the information is located.













Панорама Тема от Themocracy

7 посетители онлайн
4 човека, 3 ботове, 0 потребители
Макс посетители днес: 13 в 12:15 ч. UTC
Този месец: 26 на 07.05.2011 12:35 ч. UTC
Тази година: 130 на 28-03-2011 22:40 UTC
През цялото време: 130 на 28-03-2011 22:40 UTC