[Devel] Повторное изобретение отказоустойчивого кластера

Vitaly Lipatov lav на etersoft.ru
Пн Июл 13 00:19:41 MSD 2009


В некотором смысле мы загорелись идеей создания простого  
кластера из N-машин, обеспечивающего одновременно резервирование 
и масштабирование по производительности, построенного на трёх 
китах поверх GNU/Linux: распределённой ФС, распределённой СУБД, 
контейнерами с возможностью миграции между узлами.

Мы изыскиваем возможность участия в проекте "разработка средств 
управления вычислительным кластером". Одним из необходимых 
пунктов является создание (проектирование) той системы, которой 
мы собираемся управлять.

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

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

В качестве затравки я написал небольшой текст:

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

Необходимые компоненты для построения такой системы уже 
существуют: масштабируемые дисковые и сетевые файловые системы, 
реплицируемые базы данных, Виртуальные частные серверы (Virtual 
Private Servers, VPS).
Классически схема строится на (резервируемых) серверах управления 
и распределения нагрузки и backend-серверах с избыточностью, 
обеспечивающие отказоустойчивое выполнение функций.

Основой концепции является 
- использование GNU/Linux в качестве платформы
- использование распределённой сетевой файловой системы с 
(троекратной) избыточностью, позволяющей построить не имеющее 
точки отказа хранилище данных без использования дисковых 
RAID-систем.
- использование (асинхронно) реплицируемой СУБД со многими 
мастер-узлами, рассчитанной в основном на нагрузку по выборке 
данных.
- использование виртуальных контейнеров (VPS), позволяющих 
изолировать выполняемые задачи, обеспечить идентичность сред 
исполнения на разных узлах, а также поддерживающих миграцию 
между узлами сети без остановки контейнера, что необходимо для 
перераспределения нагрузки между узлами.
- создание (резервируемого) узла управления, решающего задачи 
распределение входящих запросов, мониторинг кластера, 
перераспределение нагрузки.

На основе такой системы может быть построена масштабируемый и 
отказоустойчивый сервер приложений, веб-сервер вплоть до 
облачных вычислений (cloud computing), оказываться 
услуга "приложение как сервис" (SaaS).

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

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

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

-- 
С уважением,
Виталий Липатов, ALT Linux Team, Eternity Software Team
Россия, Санкт-Петербург. www.etersoft.ru
GNU! ALT Linux! WINE! LaTeX! LyX! http://freesource.info


Подробная информация о списке рассылки devel