Вычислительные кластеры

Материал из MediaWiki
Перейти к навигации Перейти к поиску

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

Постоянное ощущение недостатка русскоязычной документации по данному вопросу вызывало у меня некоторые затруднения на этапе старта карьеры - именно тогда, когда тебе говорят "Эй, сделай-ка нам кластерочек для оракла", а ты сидишь и не знаешь, с чего начать, судорожно листая англоязычный интернет в поисках ответа на вопросы: "Что это? Зачем? Как? Какой структуры/организации? Как хранить данные?".

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

В данном цикле статей мы постараемся пройтись по нескольким нижеперечисленным темам.

Задача кластера - взгляд с высока

Правильная и четкая постановка задачи - это уже половина решения.

  • Отказоустойчивость сервисов.
    Если работа службы критична, то её запускают в отказоустойчивом кластере типа Fault Tolerance, обозначаемый аббревиатурой "FT". Если FT-кластер состоит из двух узлов, то один из них активно используется, а другой простаивает. В случае выхода из строя первого сервера все задачи выполняются на втором.
  • Сервисы высокой доступности.
    Для обеспечения сервисам высокой доступности требуется вводить в эксплуатацию вместо одного сервера несколько, и между ними распределять нагрузку с помощью балансировщика нагрузки. Указанная задача решается с помощью кластера типа High Availability, обозначаемого аббревиатурой "HA". Распределение нагрузки между узлами кластера выполняется по детерминированному алгоритму.

Чем занять кластер?

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

  • CTDB - свободное средство организации отказоустойчивых сбалансированных децентрализованных кластеров (или даже сетей хранения)
    Является подложкой для образования хранилища NFS, Samba, FTP и др. В арсенале есть и другие вкусности.
  • ORACLE Cluster Ready Services (CRS) и ORACLE Database
    Эта связка - ни что иное, как кластерный вариант известной коммерческой СУБД. Т.е. кластерная прослойка, поверх которой крутится БД.
  • Приложения виртуальной машины Erlang
    Да-да, о великих мы тоже замолвим словечко. Erlang - это прежде всего платформа и функциональный язык программирования для неё. Отличие Erlang от остальных - ориентация на сильно распаралеленные распределенные приложения. Любое приложение erlang с минимальным вмешательством может выполнять потоки как на нескольких процессорах, так неограниченно и легко кластеризовываться.

Организация общего хранилища

Общее хранилище данных - это по сути мозг кластера. В нём хранятся общие кластерные приложения, их данные.

Модели

  • одно блочное устройство - например некий внешний RAID, к которому все присоединяются напряму или через маршрутизаторы по проводам.
  • распределенное хранилище данных - нет централизации. Собственные хранилища на всех узлах, но их объемы суммируются и данные на них реплицируются между собой.

Способы передачи данных между хранилищем и узлами

Обеспечение отказоустойчивости

Первое правило: резервировать всё. И не просто всё, а вообще всё.

  • Резервирование данных
    • О том, что такое RAID знает каждый
  • Резервирование путей передачи данных
    • Несколько контроллеров на хранилище
    • Несколько маршрутизаторов, каждый из которых соединен со всеми контроллерами в хранилище и со всем узлами
    • Несколько контроллеров на каждом узле

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

  • Multipath - Linux dm-multipath обеспечит нам отказоустойчивость путей - связей между хранилищем и узлами.

Кластерные файловые системы

  • ФС с физическим доступом к диску.
    Здесь подразумеваются ФС, которые берут на себя работу о физической организации файлов, хранении метаданных, работе кластерного стека и т.д. - комбайны "всё в одном".
    • OCFS2 - открытая (GPL, в ядре) и бесплатная проприетарная версии. Наиболее простая и понятная ФС данной категории.
    • GPFS - IBM, чисто коммерческая проприетарная ФС. Ориентирована на быструю реализацию и легкое развертывание сетей хранения любой сложности. Портирована с AIX, что накладывает отпечаток.
    • Lustre - Sun, открытая.
  • Кластерные ФС, работающие поверх других некластерных файловых систем
    • GlusterFS - виртуальная файловая система, полностью находящаяся в user-space. Выгодно отличается от других модульностью (система трансляторов)