Пингвин кластеризуется

Денис Колисниченко

Хакер, номер #075, стр. 075-094-1

(dhsilabs@mail.ru)

Поднимаем кластер своими руками

Тебе не хватает мощности твоего компьютера? Совсем не обязательно копить деньги на очередной апгрейд. В данном случае может помочь кластер, позволяющий объединить в одно целое несколько компьютеров для решения общей задачи. Бьюсь об заклад, у тебя в школе/универе/офисе только и ждут своего часа пылящиеся альфы, спарки и x86. За счет одновременного использования *nix и кластерной технологии ты можешь дать старичкам второй шанс: кластер выжмет из них все свободные вычислительные ресурсы и в то же время сократит время решения твоей задачи. А задачи могут быть самыми разными: от подбора паролей до моделирования физических процессов - все в твоих руках.

Теория

Сначала нужно разобраться, что же такое кластер. Это совокупность узлов (серверов, рабочих станций), которые объединены в одну сеть, представляются как одна система и совместно решают одну задачу. Для построения сети, связывающей узлы кластера, обычно используются технологии Fast или Gigabit Etheet, но в простейшем случае, например при отсутствии финансов или для создания кластера в домашних условиях, подойдет и один сегмент Etheet на 10 Мбит/сек. Кластеры бывают трех типов: отказоустойчивые, балансировочные и высокопроизводительные. Вкратце поговорим о каждом из них.

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

Балансировочный кластер используется для равномерного распределения нагрузки на все его узлы. Запусти xload или top: твой компьютер большую часть времени просто простаивает. Точно такая же ситуация и с остальными компьютерами в твоей сети. Возникает резонный вопрос: так почему бы не использовать драгоценное процессорное время более грамотно? Например для компиляции новой версии ядра. Ведь при сборке ядра процессор загружен полностью, и работать с системой не очень комфортно. А вот если у нас есть балансировочный кластер, то нагрузка будет равномерно распределяться между всеми узлами. Во-первых, благодаря механизму миграции процессов (части твоего процесса будут выполняться на разных компьютерах), процесс компиляции завершится намного быстрее, а во-вторых, пользователи этого даже не заметят. Если у тебя под кластер специально выделены компьютеры (за ними никто не работает, и они предназначены только для кластера), то это вообще отлично! Кстати, балансировочный кластер также может использоваться в качестве отказоустойчивого кластера, то есть выполнять две функции. Если же привести пример с сервером баз данных, то балансировочный кластер сначала выберет наименее загруженную машину, а только затем перенаправит к ней запрос пользователя.

Содержание  Вперед на стр. 075-094-2
ttfb: 28.17702293396 ms