Багатомашинні системи

Матеріал з Вікі ЦДУ
Версія від 18:47, 24 грудня 2009; Чабан Лиза (обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

Багатомашинна система – це обчислювальний комплекс, що включає в себе декілька комп'ютерів (кожен з яких працює під керуванням власної операційної системи), а також програмні й апаратні засоби зв'язку комп'ютерів, що забезпечують роботу всіх комп'ютерів комплексу як єдиного цілого.

Робота будь-якої багатомашинної системи визначається двома головними компонентами: високошвидкісним механізмом зв'язку процесорів і системним програмним забезпеченням, що надає користувачам і додаткам прозорий доступ до ресурсів усіх комп'ютерів, які входять у комплекс. До складу засобів зв'язку входять програмні модулі, функціональне призначення яких – розподіл обчислювального навантаження, синхронізація обчислень і реконфігурація системи. Якщо відбувається відмова одного з комп'ютерів комплексу, його завдання можуть бути автоматично перепризначені і виконані на іншому комп'ютері. Якщо до складу багатомашинної системи входять декілька контролерів зовнішніх пристроїв, то у випадку відмови одного з них, інші контролери автоматично підхоплюють його роботу. Таким чином, досягається висока відмовостійкість комплексу в цілому.

Крім підвищення відмовостійкості, багатомашинні системи дають змогу досягти високої продуктивності за рахунок організації розподілених обчислень. У порівнянні з мультипроцесорними системами можливості паралельної обробки в багатомашинних системах обмежені: ефективність розпаралелення різко знижуєтьсяу тому випадку, коли завдання, що виконуються паралельно тісно пов'язані між собою даними. Це пояснюється тим, що зв'язок між комп'ютерами багатомашинної системи менш тісний, ніж між процесорами в мультипроцесорній системі, тому що основний обмін даними здійснюється через спільні багатовходові периферійні пристрої. Помічено, що, на відміну від мультипроцесорів, де використовуються сильні програмні й апаратні зв'язки, у багатомашинних системах апаратні і програмні зв'язки між пристроями для обробки є більш слабкими.

Ідея об'єднати декілька розрізнених комп'ютерів у єдиний обчислювальний організм не нова. Але потрібно не тільки об'єднати, але і збалансовано завантажити всі робочі станції. Так і з’явився кластер – система з декількох комп'ютерів, що спільно працюють над однією загальною прикладною задачею.

Класичне визначення кластера, дав Грегорі Пфістер [2]: «Кластер – це різновид паралельної або розподіленої системи, що: 1. складається з декількох зв'язаних між собою комп'ютерів; 2. використовується як єдиний, уніфікований комп'ютерний ресурс».

Можна виділити три типи кластерів [3]: Серверні кластери, які використовуються для запровадження мережевих сервісів. Головним завданням таких систем є розподілення та забезпечення балансу завантаження вузлів.

Системи високої готовності. Такі системи у першу чергу створюються для забезпечення відмовостійкості серверів.

Обчислювальні кластери – використовуються для значних обчислень (наукові цілі, задачі візуалізації і ін.) і використовують специфічне програмне забезпечення, таке як Message Passing Interface (MPI) та Parallel Virtual Machine (PVM). Такі системи успішно конкурують із занадто дорогими для освітніх та науково-дослідних закладів масово-паралельним та векторним комерційним суперкомп’ютерами.

Кластери будуються на тих системах, що однозначно орієнтовані на багатозадачне використання. Сьогодні вони, в основному, використовують середовище ОС LINUX – найбільш популярного представника систем такого роду. Утім, і з класичних ПК якщо на них встановити ОС LINUX чи Windows NT Advanced Server, можна створити кластер.

Зазвичай перед кластерами ставилися два завдання: обчислення великого обсягу та підтримка розподілених баз даних, особливо таких, для яких потрібна підвищена надійність. Привабливість кластера визначається насамперед можливістю побудувати унікальну архітектуру, що має достатню продуктивність, стійкість до відмов апаратури та програмного забезпечення і при цьому таку архітектуру можна легко нарощувати, модернізувати – універсальними засобами, зі стандартних компонентів і за помірну ціну (незрівнянно меншу, ніж ціна унікального відмовостійкого комп'ютера чи системи з масовим паралелізмом).

Як влаштовано кластер.
Отже, кластер поєднує кілька серверів, з'єднаних між собою спеціальним комунікаційним каналом, часто його називають також системною мережею. Невід'ємною частиною кластера є спеціальне програмне забезпечення, що, власне, і розв’язує проблему відновлення вузла у випадку збою, а також вирішує інші задачі, наприклад, змінює IP-адреси сервера додатків, якщо він вийшов з ладу і виконання перекладено на інший вузол. Кластерне ПЗ звичайно має декілька заздалегідь заданих сценаріїв відновлення працездатності системи, а також може надавати адміністратору можливості настройки таких сценаріїв. Відновлення після збоїв може підтримуватися як для вузла в цілому, так і для окремих його компонентів: додатків, дискових томів і т.д. Ця функція автоматично ініціюється у випадку системного збою, а також може бути запущена адміністратором, якщо йому, наприклад, необхідно відключити один з вузлів для реконфігурації.

Кластери можуть мати поділювану пам'ять на зовнішніх дисках, як правило, на дисковому масиві RAID. Координація роботи вузлів реалізується за допомогою спеціального механізму – диспетчера розподілених блокувань (Distributed Lock Manager, DLM), що закриває доступ до пристрою для усіх вузлів, крім одного, додаток якого в даний момент модифікує дані цього пристрою. Подібний механізм використовується, зокрема, в кластерах OpenVMS, але не реалізований в існуючих на сьогоднішній день кластерних рішеннях для NT. У цих системах додатки не можуть паралельно працювати з тими самими даними і загальною дисковою пам'яттю, якщо така є, вона призначена одному з вузлів у даний момент часу.

Таким чином, у кластерах, що не підтримують одночасного доступу до зовнішньої пам'яті, усі вузли є цілком автономними серверами. У випадку використання двох вузлів доступ до загальної пам'яті на дисках здійснюється за допомогою розділеної шини введення/виведення: для кожного вузла шина закінчується в дисковому масиві. У кожен момент часу тільки один вузол володіє загальною файловою системою. Якщо один із серверів вийде з ладу, контроль над шиною і поділюваними дисками переходить до іншого вузла. Замість поділюваної зовнішньої пам'яті, у кластерах може реалізовуватися принцип дзеркалювання інформації, коли дані одного вузла тиражуються на дискові-накопичувачі іншого.

Вузли кластера контролюють працездатність один одного й обмінюються специфічною кластерною інформацією, наприклад, про конфігурацію кластера, а також можуть передавати дані між поділюваними накопичувачами і координувати використання їх. Контроль працездатності здійснюється за допомогою спеціального сигналу (heartbeat – серцебиття), що вузли кластера передають один одному, для того щоб підтвердити своє нормальне функціонування. Припинення серцебиття одного з вузлів сигналізує кластерному програмному забезпеченню про збій, що відбувся, і необхідність перерозподілити навантаження на вузли, що залишилися. Як комунікаційний канал можуть використовуватися звичайні мережеві технології (Ethernet, Token Ring, FDDI, АТМ), поділювані шини введення/виведення (SCSI чи PCI), високошвидкісний інтерфейс Fibre Channel чи спеціалізовані технології (DSSI, CI, Memory Channel). Вимоги, що ставляться до швидкодії комунікаційного каналу, залежать від ступеня інтеграції вузлів кластера і характеру роботи додатків. Скажімо, якщо додатки в різних вузлах не взаємодіють один з одним і не здійснюють одночасний доступ до дискових накопичувачів, то вузли обмінюються між собою тільки контрольними повідомленнями, що підтверджують їхню працездатність, а також інформацією про зміну конфігурації кластера, тобто додавання нових вузлів, перерозподіл дискових томів і т.д. Такий тип обміну не потребує значних комунікаційних ресурсів і цілком може задовольнитися простим 10-мегабітним Ethernet.

Високошвидкісний комунікаційний канал потрібен, якщо додатки в різних вузлах кластера будуть працювати з одними даними. Реалізація механізму DLM припускає інтенсивний обмін повідомленнями між вузлами. А отже, потребує високої продуктивності комунікацій.

Як приклад різних варіантів кластерних рішень можна привести запропоноване ветераном у цій області, компанією Digital, що стала частиною компанії Compaq, сімейство програмних продуктів TruCluster для об'єднання в кластер серверів AlphaServer з ОС Digital Unix (тепер Tru64 Unix). Один із представників цього сімейства, TruCluster Production Server підтримує паралельне виконання додатка на усіх вузлах кластера за допомогою механізму DLM і орієнтований на використання таких програмних рішень, як, наприклад, СУБД Oracle Parallel Server.

TruCluster Production Server підтримує постійне функціонування додатків у всіх вузлах кластера, ліквідуючи тим самим затримки, пов'язані з перезапуском додатка у випадку збою одного з вузлів. Крім того, це рішення забезпечує масштабованість системи, підвищуючи продуктивність додатка за умови включення нових вузлів у кластер. Однак, для того щоб домогтися такої масштабованості й ефективно реалізувати механізм DLM, необхідно високопродуктивне з'єднання між вузлами. Тому разом з TruCluster Production Server використовується спеціальна високоефективна комунікаційна технологія Memory Channel, що забезпечує високошвидкісний (до 100 Мбайт/с) обмін повідомленнями між серверами в кластері.