Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

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


Кластерные вычислительные системы.

Кластерные вычислительные системы.

 

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

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

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

Существует немало вариантов и средств для построения надежной системы вычислительной системы. Дисковые массивы RAID, резервные блоки питания, например, «страхуют» часть оборудования системы на случай отказа других аналогичных компонентов системы, и позволяют не прерывать обработку запросов к информации при отказах. Источники бесперебойного питания поддержат работоспособность системы в случае сбоев в сети энергоснабжения. Многопроцессорные системные платы обеспечат функционирование сервера в случае отказа одного процессора. Однако ни один из этих вариантов не спасет, если из строя выйдет вся вычислительная система целиком. Вот тут на помощь приходит кластеризация.

Исторически, первым шагом к созданию кластеров считают широко распространенные в свое время системы "горячего" резерва. Одна или две такие системы, входящие в сеть из нескольких серверов, не выполняют никакой полезной работы, но готовы начать функционировать, как только выйдет из строя какая-либо из основных систем. Таким образом, серверы дублируют друг друга на случай отказа или поломки одного из них. Но хотелось бы, чтобы при объединении нескольких компьютеров, они не просто дублировали друг друга, но и выполняли другую полезную работу, распределяя нагрузку между собой. Для таких систем во многих случаях как нельзя лучше подходят кластеры.

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

Кластерные решения на платформах Microsoft ориентированы прежде всего на борьбу с отказами оборудования и программного обеспечения (ПО). Статистика отказов подобных систем хорошо известна: только 22% из них непосредственно вызвано отказами оборудования, ОС, питания сервера и т. п. Для исключения этих факторов применяются различные технологии повышения отказоустойчивости серверов (резервируемые и заменяемые в горячем режиме диски, источники питания, платы в разъемах PCI и т. д.). Однако 78% оставшихся инцидентов вызваны обычно отказами приложений и ошибками оператора. Кластерные решения - действенное средство для решения этой проблемы.

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

Термин "кластер" подразумевает и отказоустойчивость, и масштабируемость, и управляемость. Можно дать и классическое определение кластера: «кластер – это параллельная или распределенная система, состоящая из нескольких связанных между собой компьютеров и при этом используемая как единый, унифицированный компьютерный ресурс». Кластер представляет собой объединение нескольких компьютеров, которые на определенном уровне абстракции управляются и используются как единое целое. На каждом узле кластера (узел обычно это компьютер, входящий в состав кластера) находится своя собственная копия ОС. Напомним, что системы с архитектурой SMP и NUMA, имеющие одну общую копию ОС, нельзя считать кластерами. Узлом кластера может быть как однопроцессорный, так и многопроцессорный компьютер, причем в пределах одного кластера компьютеры могут иметь различную конфигурацию (разное количество процессоров, разные объемы ОЗУ и дисков). Узлы кластера соединяются между собой либо с помощью обычных сетевых соединений (Ethernet, FDDI, Fibre Channel), либо посредством нестандартных специальных технологий. Такие внутрикластерные, или межузловые соединения позволяют узлам взаимодействовать между собой независимо от внешней сетевой среды. По внутрикластерным каналам узлы не только обмениваются информацией, но и контролируют работоспособность друг друга.

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

Как уже отмечалось, основное назначение кластера состоит в обеспечении высокого - по сравнению с разрозненным набором компьютеров или серверов - уровня готовности (иначе называемого уровнем доступности - High Availability, HA), а также высокой степени масштабируемости и удобства администрирования. Повышение готовности системы обеспечивает работу критических для пользователя приложений на протяжении максимально продолжительного промежутка времени. К критическим можно отнести все приложения, от которых напрямую зависит способность компании получать прибыль, предоставлять сервис или обеспечивать иные жизненно важные функции. Как правило, использование кластера позволяет гарантировать, что в случае, если сервер или какое-либо приложение перестает нормально функционировать, другой сервер в кластере, продолжая выполнять свои задачи, возьмет на себя роль неисправного сервера (или запустит у себя копию неисправного приложения) с целью минимизации простоя пользователей из-за неисправности в системе.

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

Высокая степень доступности (готовности) подразумевает такое решение, которое способно продолжать функционировать либо восстанавливать функционирование после возникновения большинства ошибок без вмешательства оператора. Наиболее совершенные (и естественно дорогие) отказоустойчивые решения способны обеспечить 99,999% надежности системы, (т. е. не более 5 минут простоев в год).

Между едиными серверными системами с зеркалированными дисковыми подсистемами (или дисковыми массивами RAID) и отказоустойчивыми системами, «золотую середину» обеспечивают кластерные решения. По уровню доступности они приближаются к отказоустойчивым системам при несоизмеримо меньшей стоимости. Такие решения идеальны для случаев, когда можно допустить лишь очень незначительные незапланированные простои.

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

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

  • базы данных;
  • системы управления ресурсами предприятия (ERP);
  • средства обработки сообщений и почтовые системы;
  • средства обработки транзакций через Web и Web-серверы;
  • системы взаимодействия с клиентами (CRM);
  • системы разделения файлов и печати.

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

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

Для организации коммуникационного канала кластера могут использоваться обычные сетевые технологии (Ethernet, Token Ring, FDDI, АТМ), разделяемые шины ввода/вывода (SCSI или PCI), высокоскоростной интерфейс Fibre Channel или специализированные технологии CI (Computer Interconnect), DSSI (Digital Storage System Interconnect) или Memory Channel.

DSSI-интерфейс предназначен для доступа к накопителям и для взаимодействия систем между собой. Он похож на мультихостовый протокол SCSI-2, но обладает большей производительностью и возможностью организации взаимодействия компьютеров. DSSI-кластеры поддерживают средства повышения надежности системы, разделение ресурсов, распределенную файловую систему и прозрачность. С точки зрения управления и обеспечения безопасности DSSI-кластер представляется единым доменом.

CI-интерфейс - двойная последовательная шина со скоростью обмена до 70 Мбит/с. Он подключен к системе ввода-вывода компьютера посредством интеллектуального контроллера, способного поддерживать работу как с двойной, так и с одинарной шиной, в зависимости от требований к надежности доступа для конкретного компьютера. Все линии связи CI-интерфейса одним концом соединены с CI-интегратором - специальным устройством, отслеживающим соединения с узлами и конфигурации кластера.

Технология Memory Channel позволяет создавать высокоэффективную коммуникационную среду, которая обеспечивает высокоскоростной (до 100 Мбайт/с) обмен сообщениями между серверами в кластере.

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

Реальных кластерных конфигураций существует огромное количество. Есть  решения, которые представляют собой объединение нескольких кластеров, да еще вместе с дополнительными устройствами. Каждый из вариантов отвечает требованиям соответствующих разных приложений и, естественно, различаются как по стоимости,  так и сложности реализации. Широко используются такие топологии кластеров, как звезда, кольцо, N-N и др. Но, каким бы сложным и экзотическим ни был кластер, его можно квалифицировать по двум критериями:

- организация оперативной памяти узлов кластера,

- степень доступности устройств ввода-вывода, прежде всего - дисков.

 Что касается оперативной памяти, то здесь возможны два варианта: либо все узлы кластера имеют независимую оперативную память, либо у них существует общая разделяемая память.  Степень доступности устройств ввода-вывода кластеров в основном определяется возможностью использования внешней памяти с разделяемыми дисками, а это подразумевает, что любой узел имеет прозрачный доступ к файловой системе общего дискового пространства. Помимо разделяемой дисковой подсистемы на узлах кластера могут иметься локальные диски, но в этом случае они используются главным образом для загрузки ОС на узле. Такой кластер должен иметь специальную подсистему, называемую распределенный менеджер блокировок (Distributed Lock Manager, DLM), для устранения конфликтов при одновременной записи в файлы с разных узлов кластера. В системах, где нет DLM, приложения не могут параллельно работать с одними и теми же данными, и общая дисковая память, если таковая имеется, назначается одному из узлов в конкретный момент времени.

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

 

Рис. 1. Построение кластера из двух узлов.

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

 

Рис. 2. Построение кластера типа «активный – резервный».

 

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

 - необходимость постоянно копировать данные (это означает, что часть вычислительных и сетевых ресурсов будет непрерывно расходоваться на синхронизацию);

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

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

 

Рис. 3. Построение кластера без разделяемых ресурсов.

 

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

 

Рис. 4. Построение кластера с разделяемыми ресурсами.

 

Все выполняемые кластером программы можно условно подразделить на несколько категорий. На любом узле кластера можно запустить практически любую обычную программу. Более того, одну и ту же программу можно запускать на разных узлах кластера. Однако каждая копия программы должна использовать свой собственный ресурс (файловую систему), поскольку файловая система закрепляется за конкретным узлом. Помимо обычного ПО для кластеров существуют так называемые истинно кластерные приложения. Такие программы как бы разносятся по узлам кластера, а между частями программы, функционирующими на разных узлах, организуется взаимодействие. Истинно кластерные программы позволяют распараллелить нагрузку на кластер. Промежуточную позицию занимают приложения, рассчитанные на работу в кластере. В отличие от истинно кластерных программ, в них явный параллелизм не используется; фактически программа является обычной, но она может задействовать некоторые возможности кластера, в первую очередь связанные с миграцией ресурсов.

Все кластерные решения на платформах Microsoft ориентированы прежде всего на борьбу с отказами оборудования и программного обеспечения. Специальное программное обеспечение – это то, что объединяет серверы в кластеры. Многие современные корпоративные приложения и ОС имеют встроенную поддержку кластеризации, но бесперебойное функционирование и прозрачность кластера может гарантировать только специальное ПО промежуточного уровня. Оно отвечает:

 - за слаженную работу всех серверов;

 - за разрешение возникающих в системе конфликтов,

 -  обеспечивает формирование и реконфигурацию кластера после сбоев;

 - обеспечивает распределение нагрузки по узлам кластера;

 - обеспенчивает восстановление работы приложений сбойных серверов на доступных узлах (failover - процедура миграции);

 - осуществляет мониторинг состояния аппаратной и программной сред;

 - позволяет запускать на кластере любое приложение без предварительной адаптации к новой аппаратной архитектуре.

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

К кластерным решениям в современных вычислительных системах кроме повышенной надежности и быстродействия, предъявляются еще несколько дополнительных требований:

 - они должны обеспечивать единое внешнее представление системы,

 -  высокую скорость резервного копирования и восстановления данных,

 - параллельный доступ к БД,

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

 - иметь средства настройки высокого уровня готовности, гарантировать восстановление после аварии.

Конечно, использование нескольких узлов кластера, которые одновременно обращаются к одним и тем же данным, увеличивает сложность процедуры резервного копирования и последующего восстановления информации. Перенос нагрузки с аварийного узла на исправный - это основной механизм обеспечения непрерывной работы приложений при условии оптимального использования ресурсов кластера. Для эффективной совместной работы кластерных систем и СУБД система должна иметь распределенный менеджер блокировок, обеспечивающий непротиворечивое изменение базы данных при поступлении последовательности запросов с разных узлов кластера. Настройка конфигурации кластера с одновременным обеспечением высокой доступности приложений является достаточно сложным процессом (это связано со сложностью определения правил, по которым те или иные приложения переносятся с аварийных узлов кластера на исправные). Кластерная система обязана позволять легко переносить приложения с одного узла кластера на другой, а также восстанавливать аварийное приложение на другом узле. Пользователь системы не обязан знать о том, что он работает с кластерной системой, поэтому для пользователей кластер должен выглядеть как единый компьютер. Он должен иметь единую файловую систему для всех узлов, единый IP-адрес и единое ядро системы.

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

Все ведущие компьютерные компании (Compaq, Dell, Hewlett-Packard, IBM, Sun Microsystems), предлагают собственные кластерные решения. Лидирующие позиции в сегменте UNIX-кластеров занимает IBM, которая активно продвигает свою базу данных DB2, фирма Sun активно продвигает свое решение Sun Cluster. Одним из наиболее активных игроков (как по числу сертифицированных для кластеров платформ, так и по разнообразию самих кластерных решений) признают корпорацию Compaq, которая предлагала практически полный ассортимент кластеров на платформах Windows для отдела или удаленного филиала, для применений в инфраструктуре корпорации и для крупных центров обработки данных. Кластерное решение Compaq TrueCluster Server максимально удовлетворяет современным требованиям, предъявляемым компаниями к подобной технологии. Новое ПО позволяет, например, устанавливать базу данных на нескольких связанных вместе серверах. Необходимость в таком объединении возникает, например, если требуется большая емкость или нужно сократить время простоя в случае сбоя на сервере, что достигается за счет переноса операций на другой сервер кластера. Это позволяет значительно сократить затраты на аппаратные платформы, делая экономически оправданным построение кластеров из недорогих серверов стандартной архитектуры даже для относительно небольших предприятий. Compaq и Oracle активно сотрудничают в области технологий и бизнеса,  что позволит создать более масштабируемую, управляемую, надежную и экономичную кластерную платформу баз данных. Кроме того, Oracle начала сотрудничать с Dell и Sun Microsystems, которые предлагают заказчикам предварительно сконфигурированные и протестированные системы, работающие с ПО кластеризации от Oracle. Dell, например, поставляет кластерное программное обеспечение на протестированных серверах с ОС Windows и Linux.

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


Лицензия