Вычислительные кластеры
Это заготовка статьи-оглавления о кластерах. Планируется создать цикл статей о кластерных приложениях, организациях кластерных хранилищ данных, кластерных файловых системах и ещё о чем-нибудь другом.
Постоянное ощущение недостатка русскоязычной документации по данному вопросу вызывало у меня некоторые затруднения на этапе старта карьеры - именно тогда, когда тебе говорят "Эй, сделай-ка нам кластерочек для оракла", а ты сидишь и не знаешь, с чего начать, судорожно листая англоязычный интернет в поисках ответа на вопросы: "Что это? Зачем? Как? Какой структуры/организации? Как хранить данные?".
Тема вычислительных кластеров довольно необъятная: равно как нужно выбирать инструмент под задачу, так и модель кластера, систему организации и взаимодействия нодов (то есть узлов, участников кластера), их конфигурацию и прочее.
В данном цикле статей мы постараемся пройтись по нескольким нижеперечисленным темам.
Задача кластера - взгляд с высока
Правильная и четкая постановка задачи - это уже половина решения.
- Отказоустойчивость сервисов.
Если работа службы критична, то её запускают в отказоустойчивом кластере типа Fault Tolerance, обозначаемый аббревиатурой "FT". Если FT-кластер состоит из двух узлов, то один из них активно используется, а другой простаивает. В случае выхода из строя первого сервера все задачи выполняются на втором.
- Сервисы высокой доступности.
Для обеспечения сервисам высокой доступности требуется вводить в эксплуатацию вместо одного сервера несколько, и между ними распределять нагрузку с помощью балансировщика нагрузки. Указанная задача решается с помощью кластера типа High Availability, обозначаемого аббревиатурой "HA". Распределение нагрузки между узлами кластера выполняется по детерминированному алгоритму.
Чем занять кластер?
Допустим у нас есть кластер - компьютеры мы как-то связали между собой, то есть появилось общее хранилище. Но одной кучи железа мало - нужно ещё вдохнуть в неё жизнь. Нет, я не про операционную систему, она уже установлена и работает. Кластерные приложения - это те же приложения, но способные функционировать на кластере.
- CTDB - свободное средство организации отказоустойчивых сбалансированных децентрализованных кластеров (или даже сетей хранения)
Является подложкой для образования хранилища NFS, Samba, FTP и др. В арсенале есть и другие вкусности. - ORACLE Cluster Ready Services (CRS) и ORACLE Database
Эта связка - ни что иное, как кластерный вариант известной коммерческой СУБД. Т.е. кластерная прослойка, поверх которой крутится БД. - Приложения виртуальной машины Erlang
Да-да, о великих мы тоже замолвим словечко. Erlang - это прежде всего платформа и функциональный язык программирования для неё. Отличие Erlang от остальных - ориентация на сильно распаралеленные распределенные приложения. Любое приложение erlang с минимальным вмешательством может выполнять потоки как на нескольких процессорах, так неограниченно и легко кластеризовываться.
Организация общего хранилища
Общее хранилище данных - это по сути мозг кластера. В нём хранятся общие кластерные приложения, их данные.
Модели
- одно блочное устройство - например некий внешний RAID, к которому все присоединяются напряму или через маршрутизаторы по проводам.
- распределенное хранилище данных - нет централизации. Собственные хранилища на всех узлах, но их объемы суммируются и данные на них реплицируются между собой.
Способы передачи данных между хранилищем и узлами
- iSCSI
- FibreChannel
- InfiniBand
Обеспечение отказоустойчивости
Первое правило: резервировать всё. И не просто всё, а вообще всё.
- Резервирование данных
- О том, что такое RAID знает каждый
- Резервирование путей передачи данных
- Несколько контроллеров на хранилище
- Несколько маршрутизаторов, каждый из которых соединен со всеми контроллерами в хранилище и со всем узлами
- Несколько контроллеров на каждом узле
Вот такая вот арифметика отказоустойчивости: много проводов, много денег, много тепла.
- Multipath - Linux dm-multipath обеспечит нам отказоустойчивость путей - связей между хранилищем и узлами.
Кластерные файловые системы
- ФС с физическим доступом к диску.
Здесь подразумеваются ФС, которые берут на себя работу о физической организации файлов, хранении метаданных, работе кластерного стека и т.д. - комбайны "всё в одном".- OCFS2 - открытая (GPL, в ядре) и бесплатная проприетарная версии. Наиболее простая и понятная ФС данной категории.
- GPFS - IBM, чисто коммерческая проприетарная ФС. Ориентирована на быструю реализацию и легкое развертывание сетей хранения любой сложности. Портирована с AIX, что накладывает отпечаток.
- Lustre - Sun, открытая.
- Кластерные ФС, работающие поверх других некластерных файловых систем
- GlusterFS - виртуальная файловая система, полностью находящаяся в user-space. Выгодно отличается от других модульностью (система трансляторов)