Категория: Linux

Управление Grid Computing использованием виртуальных сред - Часть 4

По Стивен Ллойд Уоткин , в пятницу 4 декабря 2009 11:59 вечера

Введение

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

В части 3 мы создали виртуальную машину обработки и настроить Windows машины, чтобы стать времени простоя работников.

Запуск последней версии кода

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

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

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

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

  #! / BIN / Ш.
 PS если топор | Grep-V GREP | GREP PHP > / Dev / нуль
 то
     Эхо "Работа в настоящее время обработки, с выходом"
 еще
     Эхо "Работа не работает, начните прямо сейчас"
     CD / путь / к / рабочей / копии
     SVN обновление
     PHP yourJobProcessingScript.php
 Fi 

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

В моей демонстрации установки, я сделал именно так, как выше. Subversion была установлена ​​на моем сервере обработки работа, и я просто вытащил последний код из филиала "рабочий", используя "SVN Update". Я также добавил теги номер версии на мой обработки скрипта, который был возвращен в базе данных как часть возвращать результаты. Таким образом, я видел, что мой код обновляется каждый раз, когда я скопировал мое туловище в т. работник филиала, что я определенно установлена ​​последняя обработка сценария.

Используя последние данные

Если ваша работа обработки делает использование данных источников, то в какой-то момент эти будут обновлены. Если вы называете источников данных на основе очень редко вы собираетесь наводнения сети с трафиком, как только ваши работники начнут исполняться чего все в тупик. Для моего решения я решил, что я бы хотел перевести мои источники данных вокруг с моей виртуальных машин.

Держите вы кони там! Что делать, если мои источники данных огромные? Ну это действительно пример того, как много данных идет речь? Это может быть более экономически эффективным, чтобы установить дополнительный жесткий диск большего в каждой машине, чем на покупку дополнительного сервера обработки. Это вопрос о бюджете, и до бизнеса, чтобы решить. Это может быть, что ваши источники данных настолько велик, что его просто невозможным держать, что объем данных в вашей машины работника. В таком случае, что бы вы сделали? Ну, мы могли смотреть на вызове локальный сервер данных, но это может вызвать проблемы с сетью. В этом случае сетка системы, так как это может стать нереальным включить в вашем офисе. Он также может быть то, что вы можете посмотреть в альтернативных стратегий работает, например, только позвонив работников между 8 вечера и 6 утра каждую ночь, и / или регулирования источника запрашивает данные.

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

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

Это, как мне настроить сервер демонстрации. Чтобы настроить репликацию я последовал руководство по MySQL сайта ( Настройка репликации ) и в течение 20 минут у меня была Начальное работника тиражирование управления работой серверов данных. За каждый дополнительный рабочий настройки репликации и процесс работал каждый раз, когда В. М. был скопирован.

Резюме

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

Следующий раз

В заключительной части этой серии, метко назвал Часть 5 , мы будем обсуждать развертывание этой системы. Я буду суммировать то, что было изучено и что мне удалось создать.

Управление Grid Computing использованием виртуальных сред - Часть 3

По Стивен Ллойд Уоткин , в пятницу 4 декабря 2009 11:37 вечера

Введение

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

В части 2 мы рассмотрели работу сервер будет работать, как и рабочие места должны быть настроены для достижения наибольшее количество обработки в то время, чтобы каждая работа обрабатывается в обязательном порядке.

Настройка рабочего - или LIMP сервера

Следующим шагом в процессе является создание виртуальной работников. Для этого я собираюсь использовать установки CentOS использованием VirtualBox. Я собираюсь установить MySQL и PHP на сервере, также известный как LIMP (Li NUX, м ySQL, P HP) Сервера (я, возможно, сделали это имя вверх).

  • Установить VirtualBox на ваши окна машины (по ссылке)
  • Загрузка и установка CentOS (текущая версия 5,3) в рамках созданной виртуальной машины

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

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

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

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

Как для выполнения заданий на работника

Это интересное направление и Есть несколько научно обоснованных методов для обработки заданий на работника. Здесь я просто обсудить два наиболее очевидных:

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

Мое решение было пойти с хрон который стартует скрипт каждые 10 minutes. мой скрипт выполняет следующие задачи:

  1. Получить список процессов и GREP это для "PHP". Если не найден, то продолжить.
  2. Call работу кода, в моем случае это будет что-то PHP основанных
  3. Работник скрипт завершает свой бег
  4. Готовы идти снова на следующий соответствующий вызов

Мой Баш скрипт выглядит примерно следующим:

  #! / BIN / Ш.
 PS если топор | Grep-V GREP |> GREP PHP / Dev / нуль
 то
     Эхо "Работа в настоящее время обработки, с выходом"
 еще
     Эхо "Работа не работает, начните прямо сейчас"
     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 = OFF 

Это приведет к запуску виртуальной машины без графического интерфейса и позволяет ему сохранить состояние изящно. Второй аргумент выключается RDP поэтому он не конфликтует с Windows RDP, или дать вам сообщение о прослушивает порт 3389. Имя виртуальной машины с учетом регистра!

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

запланированных задач

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

К концу выполнения TextBox добавить 'startvm GridMachine' строка нашего и обеспечения того, чтобы работать только тогда, когда вошли в систему остается данную опцию. Посетите Расписание задания следующего и изменить график опуститься до опцию 'в режиме ожидания, выберите количество времени, вы хотели машина, бездействовать, перед тем как перейти к следующей закладке.

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

график

Вот и все, то для установки принимающей окна!

Резюме

В этой части мы создали виртуальную машину в качестве работника, а также способ, в котором мы называем и выполнить наши сценарии обработки заданий (для себя сценарий PHP). Здесь мы рассмотрим, как настроить наши копии Windows для запуска виртуальной машины в режиме обезглавленный, когда компьютер бездействует, и сохранить свое состояние, когда пользователь возобновляет использование машины. Надеюсь, в этот момент вы видите, как это просто для создания такой системы и чешутся, чтобы получить некоторые эксперименты собираетесь сами!

Следующий раз

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

Управление Grid Computing использованием виртуальных сред - Часть 1

По Стивен Ллойд Уоткин , в пятницу 4 декабря 2009 11:23 вечера

Введение

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

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

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

Эти виртуализованных средах будет работать на Windows-машин, так как это то, что большинство отделений перспективе. Обработки, что служба машины не должны мешать сотрудникам использовать эти машины, должны не требуют технического обслуживания в машину, и быть легко устанавливается на новых машинах, как они станут доступны. Кроме того, новые виртуальные машины не требуют дополнительной настройки, поскольку это значительно снижает масштабируемость и простота, при котором сетка система может быть расширена.

Почему Развертывание Grid Управление вычислительным?

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

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

Я уверен, что список можно продолжить, но я думаю, что это достаточно.

Преимущества Grid Computing Office

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

Так, 1 машина * 10% мощности * 2 / 3 времени = 0,067 т. е. 1 рабочий стол обработки в простой процесс может 6 полный рабочий день.

Если вы сейчас масштабы этого до него занимает 15 простоя настольных компьютеров для обработки как много рабочих мест в день в качестве основного сервера обработки делает.

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

Обратите внимание, для каких-либо инвестиций в новое оборудование Ваша компания только что увеличила свой ​​пакет перерабатывающих мощностей в 4 раза! Потенциально вы собираетесь увеличить потребление энергии, но от большинства офисе я был в машинах, как правило, остается на ночь в любом случае, чтобы вы могли видеть это как зеленый инициативы.

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

Технологии

Что вам нужно? (Или, вернее, что же я использую):

  • Idle офисной техники (в моем случае ноутбук запасных старой Windows XP)
  • VirtualBox (или другого программного обеспечения виртуализации клиентов)
  • Виртуальная машина с PHP, MySQL running работает сократить OS, я звоню эти мои LIMP серверов:)
  • Вакансии для запуска
  • Работа сервера (может быть другой виртуальной машине где-то)

Типичные Вакансии

Типы рабочих мест, что эта система предназначена для работы заключается в следующем:

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

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

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

Что мы достигли?

К концу этих статей я надеюсь показать, что развертывание Office сетки не нужно быть очень дорогим или времени. Я собираюсь обсудить следующие вопросы:

  • Настройка системы управления заданиями, конфигурации задания
  • Создание соответствующей обработки виртуальной машины
  • Как настроить систему на машину Windows
  • Обеспечение вы используете последнюю версию кода и данных
  • Развертывания и тестирования
  • Заглядывая в будущее

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

Это никоим образом не продемонстрировать полностью рабочий надежные системы, ее означало больше демонстрации и обсуждения показывают, что эти вещи могут быть достигнуты в разумно короткие сроки и при небольших затратах. Пожалуйста, не стесняйтесь, присылайте мне любые комментарии, исправления или улучшения, и я сделаю все возможное, чтобы эта статья обновлена ​​до матча.

Следующий раз

В части 2 я начну, глядя на системы управления работой, и изучить, как рабочие места должны быть настроены для достижения наибольшее количество обработки в то время, чтобы каждая работа обрабатывается в обязательном порядке.

Управление Grid Computing использованием виртуальных сред - Часть 2

По Стивен Ллойд Уоткин , в пятницу 4 декабря 2009 11:23 вечера

Введение

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

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

Управление заданиями

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

  • Раздайте рабочих мест по просьбе работников
  • Скажите, какой тип работников рабочих мест для запуска
  • Трек рабочих мест
  • Убедитесь, что задания выполняются только один раз
  • Обеспечить работу данных для работников, или по крайней мере рассказать им, где можно получить ее

Система также должна быть расширяемой, решение, которое работает сейчас в одном случае может быть увеличена до запуска нескольких видов работ, как бизнес видит стоит в сетке решение. Например, рабочие места могут получить приоритеты, больше чем один тип задания могут существовать (то есть несколько баз код), в конечном итоге вы даже можете запустить несколько различных машин работника, которые оптимизированы для каждого типа задания (хотя это никак отойти от "общего работника "идея). Всегда стараюсь думать о будущем при разработке системы, краткий перспективе может привести к долгосрочным разочарования и увеличение времени развития.

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

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

Работу самого сервера в действительности не имеют сложную задачу (в основной или иначе система), он должен хранить список заданий, раздавать рабочие места, получать результаты, а затем сохранять их для последующего использования. Как эти части (например, "руку Джобса) определены может быть очень простой. Позднее мы можем расширить системы включают административный интерфейс для добавления, редактирования, удаления, приостановить работу, но это выходит за эту работу.

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

Основная настройка

Основные установки для нашей работы сервера будет состоять из того, что я звоню одному из моих серверов LIMP (то есть Li NUX, м ySql, Р л.с.). Код, выполняемый на Thea работников действительно будет работать, какие работы он может работать, взаимодействуя с работой баз данных системы управления. Позже мы могли бы создать веб-сервис и фактически раздает рабочие места вместо того, работники делать тяжелую работу сами, но сейчас мы будем продолжать использовать принцип 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, где `статус` = 1 и `started_by` = __ME__; 
  2. Используя наши критерии выбора работы, выбрать работу и сказать системе управления, что этот работник имеет дело с ним:
      UPDATE `работу` SET `статус` = 1, "started_by` = __ME__, `started_at` = NOW () WHERE `статус` = 0 или
     (`Статус` = 1 и `started_at`> DATE_SUB (NOW (), интервале х ЧАС)) 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 вечера

Введение

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

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

Перед развертыванием

Перед развертыванием подвесной системе, если есть одна вещь, вы делаете, и одно только это тест текущую систему! Неважно, что вы рассказать коллегам о том, как много дополнительной работы вашей системы будет делать, если у вас есть номера, чтобы поддержать это ваши гарантии ничего. Таким образом,

  • сколько записей вы можете процесса в настоящее время? В день? В час?
  • Сколько времени обычно занимает повернуть работу?
  • Как много больше возможностей у вас есть?

Там также дополнительные вопросы:

  • Если ваш сервер обработки (или один из ваших серверов обработки) идет вниз как это повлияет на ваши возможности, вы будете калека?
  • Какие преимущества вы надеетесь / ожидаете получить от подвесной системе?
  • Ваши машины офис может работать рабочие места?
  • Ваши (или вы можете быть преобразованы рабочих мест) для работы в этом стиле работает?

Последняя крупная точка интересно провести время на каких-либо серьезных изменений, как это. Обновление обработки кода для работы с использованием новой методологии, тест снова. Возможно настроить сервер обработки для запуска виртуальной машины, после всех ваших обработки сервером будет просто еще один рабочий (только очень мощный относительно). Разрешить нового процесса по урегулированию.

Развертывания

Мое предложение было бы поп в офисе один уик-энд выполнять все установки и настройки. Делайте это как раз перед двухнедельный отпуск и отпуск, чтобы другие бедняга иметь дело с последствиями ... может и нет ...

Развертывание системы, как это должно быть медленным. Несмотря на его сравнительно прост в установке этой системы будет влиять на всю инфраструктуру офиса (а цифровой). 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

Следующим очевидным шагом было бы реально получить реальный пример и начать развертывание системы, такие как это в офисе и посмотреть, что происходит. Запрашиваемая бизнеса к совершению этого без следа пылающий компании доказать, технологии и эффективности, может быть немного трудно. Grid / Распределенные вычисления очень популярна некоторых кругах и имеет некоторые большие приложения (BIONC, SETI @ Home, Folding @ Home и т.д.). Я, однако, не найти в меньших масштабах и простой системы, как это в мои поиски, которые могли бы быть развернута в офисе.

Я создал в основном свободной системы с помощью основном с открытым исходным кодом и средства, имеющиеся практически в любом офисе. Технологии в основном были продемонстрированы и показать, для выполнения работы и, как ожидалось. Надеюсь, у меня есть показать, что с не так много работы и очень простой установки можно развернуть вычислительные офисе подвесной системе, что является мощным, дешевые, А и масштабируемой все в то же время.

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

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

Пожалуйста, не стесняйтесь, присылайте мне любые комментарии, исправления или улучшения, и я сделаю все возможное, чтобы эта статья обновлена ​​до матча.

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

By Steven Lloyd Watkin , Sunday 11th October 2009 6:09 pm

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

5 посетителей онлайн
3 гостей, 2 ботов, 0 пользователей
Max visitors today: 11 at 12:46 am UTC
В этом месяце: 26 в 07-05-2011 12:35 утра UTC
В этом году: 130 в 28-03-2011 10:40 вечера UTC
За все время: 130 в 28-03-2011 10:40 вечера UTC