Категорія: Grid Computing

Управління Grid Computing використанням віртуальних середовищ - Частина 4

За , в п'ятницю 4 грудня 2009 11:59 вечора

Введення

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

У частині 3 ми створили віртуальну машину обробки та налаштування вікна машини, щоб стати часу простою працівників.

Запуск останньої версії коду

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

Є декілька дуже легко прості способи, якими ми могли б зробити це, трюк, однак, полягає в зниженні потужності і мережевий трафік в досягненні цієї мети. Давайте почнемо з найпростіших рішень і покращити її повільно, протягом пари ітерацій.

Перший метод буде просто підключитися до нашої роботи серверний елемент управління (через Samba, FTP, або подібний) і опустіть останню версію коду. Не дуже ефективно, але він буде робити цю роботу. Дозволяє покращити щось, а як щодо створення Rsync сценарій і використанні, що кожного разу замість цього? Крім те, що про введення наших останніх обробки скрипта в підривній перевірити код спочатку, а потім просто оновлюємо нашу код при кожному запуску ( запускали )?

Врешті-решт ми могли б закінчити з Баш скрипт (названий крон кожні 10 хвилин), який виглядає, як просто, як це:

  #! / Бен / ш
 пс, якщо сокира | Grep-V Grep | Grep PHP > / Dev / нуль
 потім
     відлуння "Робота в даний час обробки, вихід"
 ще
     відлуння "Робота не працює, почніть прямо зараз"
     кд / шлях / к / робочої / копії
     запускали
     PHP yourJobProcessingScript.php
 Fi 

Тепер ми можемо бути впевнені, що з кожним запуском ми безумовно встановлена ​​остання коду. Ми забезпечення цього шляхом оновлення нашої бази коду кожного разу, коли ми виконуємо запуску і зниження мережевого трафіку тільки на передачу файлів відмінності між нашою мережі.

У моїй демонстрації установки, я зробив саме так, як вище. Subversion був встановлений на моєму сервері обробки роботу, і я просто витягнув останній код від «робочий» філії за допомогою "запускали". Я також додав теги номер версії моєї обробки скрипта, який був повернутий в базу даних як частина дав результати. Таким чином, я міг бачити, що мій код оновлюється кожного разу, коли я скопіював мій стовбур в те відділення працівника, що я точно встановлена ​​остання обробка сценарію.

На підставі останніх даних

Якщо ваша робота обробки використовує джерела даних, то в якийсь момент ці будуть оновлені. Якщо ви називаєте джерел даних на основі дуже рідко ви збираєтеся повені мережі з трафіком, як тільки ваші працівники почнуть виконуватися чого все в глухий кут. Для мого рішення, я вирішив, що я хотів би перенести джерел даних в усьому з моєї віртуальних машин.

Тримайте ви коні там! Що робити, якщо джерела даних ВЕЛИЧЕЗНИЙ? Ну це дійсно випадок, який обсяг даних може йти мова? Це може бути більш економічно ефективним, щоб встановити додатковий ємний жорсткий диск в кожну машину, ніж придбати додатковий сервер обробки. Це питання про бюджет і становить до бізнесу, щоб вирішити. Це, може бути, що ваш джерела даних настільки великий, що його просто неможливим зберегти цей обсяг даних в ваших машин працівника. У такому випадку, що б ви зробили? Ну, ми могли дивитися на виклик локального сервера даних, але це може викликати проблеми з мережею. У цьому випадку сітка системи, такі як це може стати нереальним включити в офісному середовищі. Він також може бути те, що ви можете подивитися в альтернативних стратегій роботи, наприклад, тільки зателефонувавши в робочі між 8 вечора і 6 ранку щоночі, та / або дроселювання джерела даних запитів.

Рухаємося далі скажемо нашим даними джерел складе 100 ГБ даних. Ну так, це досить багато даних для переміщення по мережі на оновлення. Як би ми гарантуємо, що у нас є остання копія даних в цьому випадку? Rsync є можливість, але особисто я думаю, запустивши ваш останній джерело даних на сервері обробки замовлення і налаштуванням як майстер у реплікації (з хороший довгий журнал бен), може бути шлях:

реплікації При установці кожного з ваших працівників як рабів для управління завданнями сервером оновлень до джерел даних сочиться вниз приємно, щоб ваші працівники, не величезне зростання мережевої активності (тобто, якщо ви виконуєте величезну оновлення даних, і всі ваші робочі удар в відразу). Це має переваги в порівнянні з Rsync в тому, що ви не отримаєте довгу паузу перед кожній роботі; як оновлення баз даних, MySQL демона на вашому робочому будемо постійно оновлювати свої дані, а обробка триває.

Це, як я створив мій демонстрація сервера. Щоб налаштувати реплікацію я пішов за керівництво на сайті MySQL ( Налаштування реплікації ) і протягом 20 хвилин у мене був Початковий працівника тиражування управління завданнями серверів даних. За кожен додатковий працівник налаштування реплікації і процес працював кожен раз, коли В. М. був скопійований.

Резюме

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

Наступний раз

У заключній частині цієї серії, влучно назвав частина 5 , ми обговоримо розгортанні цієї системи. Я буду резюмувати, що було вивчено і те, що мені вдалося створити.

Управління Grid Computing використанням віртуальних середовищ - Частина 1

За , в п'ятницю 4 грудня 2009 11:23 вечора

Введення

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

Як PHP- розробник я збираюся використовувати інструменти, які я використовую кожен день, а саме, Linux, MySQL , PHP, VirtualBox та Subversion (SVN). Однак я сподіваюся, що це керівництво буде адаптуватися до інших мов і технологій так само добре.

Рішення, яке я надаєте, буде частково заснований на тип обробки ми повинні були б досягти однак це не може бути правдою через всю статтю, як я буду щось змінити, для простоти, або для отримання більш цікавих варіантів використання.

Ці віртуалізованих середовищах, працюватиме на Windows-машин, так як це те, що більшість відділень перспективі. Обробки, офісної техніки, не повинні заважати співробітникам за допомогою цих машин, повинні не вимагають обслуговування в машині, і бути легко адаптується до нових машин, як вони стають доступними. Крім того, нові віртуальні машини не вимагає ніяких додаткових налаштувань, оскільки це значно знижує масштабованість і простота, при якому сітка система може бути розширена.

Чому розгортання сітки Управління обчислювальної?

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

  • Ви не будете доручати певну даних у середовищі хмарних обчислень
  • Ви не можете помістити деякі дані в середовищі хмарних обчислень з юридичних причин (наприклад, дані з країни), потенційно з юридичних причин, наприклад, 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 працює скоротити OS, я дзвоню ці мої LIMP серверів:)
  • Вакансії для запуску
  • Робота сервера (може бути інший віртуальної машини десь)

Типові Вакансії

Типи робочих місць, що ця система призначена для роботи виглядає наступним чином:

  • Система отримує список даних, на яких ми повинні порівнювати і повертають результати
  • Включає в себе перевірку відповідності / пошуку декілька (досить статична) джерел даних
  • Результати з джерел даних можуть зажадати подальшої перевірки, зливаючись, перевірка додаткових джерел даних у відповідь на результати
  • Дані повертаються з відповідними записами, повністю перевірені і оброблені
  • Кожна запис протягом роботи не залежить від інших

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

Сітка рішення не тільки вигідно для обробки робочих місць такого типу. В принципі, будь-який процес, який може бути розділена на незалежні модулі можуть працювати паралельно. Див цей Вікіпедії прикладів і додаткової інформації: Grid Computing , але пару відомих прикладів SETI @ Home і BIONC . Є рамки для виконання обчислювальних мереж, і вони також заслуговує вивчення.

Що ми досягли?

До кінця цих статтях я сподіваюся показати, що розгортання офісу сітки не повинні бути дуже дорогим або багато часу. Я збираюся обговорити наступні питання:

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

Я буду вдома (добре, я збудував, а потім написав це) приклад програми для тестування концепцій на локальній машині через Windows XP, і мій "GridMachine" віртуальної машини. Моя робота серверний елемент управління буде моєю основною машиною, яка працює Fedora 11 .

Це зовсім не означало, щоб продемонструвати повністю робочий надійні системи, її важило більше, демонстрації та обговорення показують, що ці речі можуть бути досягнуті в розумно короткі строки і з мінімальними витратами. Будь ласка, не соромтеся, надсилайте мені будь-які коментарі, виправлення або поліпшення, і я зроблю все можливе, щоб ця стаття оновлено до матчу.

Наступний раз

У частині 2 я почну, дивлячись на системи управління роботою, і вивчити, як робочі місця повинні бути налаштовані для досягнення найбільшої обсяг обробки в той час як забезпечення того, щоб кожну вимогу обслуговується в обов'язковому порядку.

Управління Grid Computing використанням віртуальних середовищ - Частина 2

За , в п'ятницю 4 грудня 2009 11:23 вечора

Введення

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

У частині 1 я дав огляд системи і технології, я буду використовувати, а також обговорили деякі з потенційних причин, чому ви хотіли б створити офіс сітки.

Керування завданнями

Якщо ви збираєтеся бути запущений робочі місця, то ви будете мати потребу, якимось чином управляти ними. Ваше завдання системи управління (на вашу роботу сервера) повинен бути дуже добре продумані, перш ніж навіть намагатися запустити офіс сітки. Так по-перше, які завдання для системи управління завданнями:

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

Крім того, система повинна бути розширюваної, який діє на даний момент в рамках однієї справи може бути продовжений до запуску кількох типів робочих місць, як бізнес бачить себе в сітці рішення. Наприклад, робочі місця можуть отримати пріоритети, більше ніж один тип завдання можуть існувати (тобто кілька баз код), у результаті ви можете навіть запустити кілька різних машин працівника, які оптимізовані для кожного типу завдання (хоча це ніяк відійти від "загального працівника "ідея). Завжди прагніть думати про майбутнє, при розробці системи, коротке бачення строк може призвести до довгостроковій перспективі розчарування і збільшення часу розвитку.

Робота сервера

Ми збираємося потрібно десь контролювати свої робочі місця з, це повинна бути єдина система у вашій сітці, яка має фіксовану локатор ресурсу, будь то IP-адресу, ім'я хоста, URL-адреса (з використанням внутрішнього DNS) і т.д. Це відбувається тому, що робітники повинні знати, де шукати роботу, працівникам необхідно знайти систему управління завданнями (не система управління завданнями знайти працівників).

Роботи самого сервера насправді не складне завдання (у базовій системі чи інакше), він повинен зберігати список завдань, роздавати робочі місця, отримувати результати, а потім зберігати їх для подальшого використання. Як ці частини (наприклад, "роздавати робочі місця") визначаються може бути дуже простий. Пізніше ми можемо розширити системи включають адміністративний інтерфейс для додавання, редагування, видалення, призупинити роботу, але це виходить за цю вправу.

Існує ніяких підстав, те, що ваша робота сервера не може бути віртуальна машина працює протягом вашого основного сервера обробки умови, що вона не зливає воду занадто багато ресурсів з нього. Роботу сервера однак потребує високої доступності, якщо він йде вниз, у п'ятницю ввечері ви будете втрачати всі вихідні обробки, потенційно варто Вам пару тижнів вартує часу обробки (в порівнянні з вашою основною сервер обробки поодинці) . Ви можете хотіти розглянути питання про створення вашій роботі сервера з балансуванням навантаження середовища для забезпечення високої доступності.

Основні налаштування

Базові налаштування для нашої роботи сервера буде складатися з того, що я дзвоню одному з моїх LIMP серверів (тобто Li ммк, м ySql, Р л.с.). Код, що виконується на працівників Теа дійсно працюватиме, які роботи він може працювати, взаємодіючи з роботою баз даних системи управління. Пізніше ми могли б створити веб-сервіс і фактично роздавати робочі місця замість того, робочі роблять важку роботу самі, але зараз ми будемо продовжувати використовувати KISS, принцип (Keep It Simple, Stupid!).

Таким чином, дозволяє створити три MySQL таблиць для вирішення робочих місць. Це будуть робочі місця ``, `jobRecords` і `jobResults`.

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

Ця таблиця складається з 5 простих полів,

  • ID: Унікально ідентифікувати роботу
  • Назва: Не могли б бути номер клієнта, або будь-яку кількість інших ідентифікаторів
  • Статус: Ви повинні знати, де робота на, наприклад,
    • 0: Чи не почалася
    • 1: Підібрав
    • 2: Завершено
  • started_by: хто почав робити цю роботу? Це не зовсім потрібно, але добре б мати. Я пропоную відстеження робочих по їх IP-адреса в мережі
  • started_at: Коли працівник почати роботу? Відстежуючи вакансії, які не завершені протягом X кількість часу ми знаємо, що потрібно підібрати роботу ще раз, і почала переробки іншим працівником. Робітники могли зупинити обробку / переходу в автономний режим для будь-якого числа причин, збій живлення, збій, втрата мережі і т.п.

Легко, як ця таблиця може бути розширена за рахунок декількох додаткових полів, щоб забезпечити статистику детектора, колонки закінчити вчасно, щоб побачити, скільки часу роботу взяв, лічильник щоб дізнатися, скільки робочих взяв роботу (очевидно, це має, як правило, 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 (), інтервал 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 використанням віртуальних середовищ - Частина 5

За , в п'ятницю 4 грудня 2009 11: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. So,

  • 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.

Deployment

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.

Stop!

Що робити, якщо ви хочете зупинити ваших працівників від бігу на деякий час? Вони всі там працює, регенерує, і з усіх сил намагаються обробляти дані, як голодні комахи. Відповідь може здатися очевидним, але його варто додати, про всяк випадок його уваги. Просто редагувати свої обробки скрипта з виходом (0) або померти () або інші заяви, щоб вбити вашого завдання обробки. Важлива причина, чому ми завжди намагаємося оновлення до останньої обробки сценарію до того, біжи!

Демонстрація системи

Для того, щоб написати це набір коротких статей, які я створив дуже маленька сітка для демонстрації технологій і методологій. Я прочитав багато статей, навчальні посібники і використовувати різні інструменти для налаштування і моніторингу, що відбувається. Ні в якому разі я вийшов і насичений цілий офіс з трафіком і ні у мене був доступ до регулярних співробітники PC щоб побачити, як господар виконання яких вплинули.

Мій демонстрації можливостей системи був дуже скромний у насправді. Я використовував свій звичайний робочий стіл налаштований як сервер управління завданнями. На цьому я встановив MySQL сервер, встановлений налаштований як майстер у реплікації, PHP , а, SVN пов'язані через Apache (для доступу через працівника VM).

Потім я створив машину CentOS працівника на VirtualBox на 6-річний ноутбук Windows XP. Я установки заплановані завдання, як зазначено після копіювання VM на машині і відпустити її.

Віртуальна машина була створена з PHP, підривну діяльність, і MySQL. Я перевірив філія під назвою «робочий» від моєї роботи сховище контролю серверів і перевірите, що він може бути поновлений за допомогою "запускали". Потім я установки MySQL в якості раба і перевірити, що дані реплікації від MySQL на сервері керування роботою до працівника 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 і т.д.). Я не став, однак, знайти в менших масштабах і проста система, як це в моїх пошуках, які могли б бути розгорнута в офісі.

Я створив в основному вільні системи, використовуючи головним чином з відкритим вихідним кодом і інструменти, доступні практично в будь-якому офісі. Технології в основному були продемонстровані і шоу для виконання і працювати, як очікувалося. Сподіваюся, у мене є показати, що з не так багато роботи і дуже простий установки можна розгорнути обчислювальні офіс підвісній системі, то є потужний, дешевий, Â і масштабовані все в той же час.

Як тільки система встановлена ​​і працює майже немає кінця на суму настройки та покращення, які ви можете зробити. Наприклад статистика / тестування можуть бути легко додані показує цінність такій системі кожен день. Нові машини можуть бути додані швидко і легко, як і коли вони приходять з модернізації існуючого обладнання зміцнення вашої обчислювальної потужності.

Я сподіваюся, вам сподобалося читати цю серію статей і дав вам поживу для роздумів про запуск системи офісу сітки. Рішення, представлене тут, не обов'язково будуть працювати у всіх ситуаціях, але повинні бути адаптовані, щоб дозволити вам отримати ваш обробки даних здійснюється за допомогою власного рішення.

Будь ласка, не соромтеся, надсилайте мені будь-які коментарі, виправлення або поліпшення, і я зроблю все можливе, щоб ця стаття оновлено до матчу.













Панорама тему, Themocracy

5 visitors online now
4 гостей, 1 ботів, 0 користувачів
Максимум сьогодні: 8 о 12:00 UTC
В цьому місяці: 17 в 01-09-2011 11:27 вечора UTC
У цьому році: 130 в 28-03-2011 10:40 вечора UTC
All time: 130 at 28-03-2011 10:40 pm UTC