Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_Шеховцов_1.docx
Скачиваний:
73
Добавлен:
09.11.2019
Размер:
14.73 Mб
Скачать

20.4. Сучасні архітектури розподілених систем

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

20.4.1. Кластеры системи

Кластером (cluster) називають розподілену систему, що складається із набору взаємозалежних комп'ютерів, які працюють разом як єдиний, інтегрований об­числювальний ресурс [18, 22, 60].

Окремі комп'ютери в рамках кластера називають вузлами (nodes). Вузли осна­щені таким самим апаратним забезпеченням, що і автономний комп'ютер (пам ят-тю, засобами введення-виведення, у більшості випадків - жорстким диском),

і можуть бути використані окремо поза кластером. Вони бувають однопроцесор-ними і багатопроцесорними, на кожному із них виконується окрема копія опе­раційної системи. Усі вузли кластера загалом мають бути пов'язані високопро­дуктивною мережею (для цього можна скористатися такими технологіями, як Fast Ethernet, Gigabit Ethernet тощо).

Кластер має відображатися користувачам як єдина система, що володіє біль­шою продуктивністю, ніж окремі його вузли. Цю властивість називають властиві­стю єдиного образу системи (single system image).

Тут кластер розумітимемо як систему, що складається із невеликої кількості вузлів (від 2 до кількох сотень), розташованих поблизу один від одного (часто в межах однієї кімнати) і з'єднаних локальною мережею. Для позначення інтегро­ваних співтовариств комп'ютерів більшого масштабу, з'єднаних глобальними ме­режами, використовують термін grid-системи. Такі системи буде описано далі у розділі 20.4.2.

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

Програмні компоненти кластерних систем

Перелічимо основні програмні компоненти кластерних систем (рис. 20.3).

♦ На кожному вузлі кластера має виконуватись ОС, що підтримує багатопото-ковість, мережні інтерфейси і протоколи (більшість кластерів реалізують зв'язок між вузлами на базі TCP/IP) та інші необхідні можливості. Особливо­сті кластерних вирішень на основі Linux і Windows ХР розглянемо далі.

♦ Функціонування кластера забезпечують проміжним програмним забезпечен­ням (ППО) кластера (cluster middleware).

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

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

Класифікація кластерних систем

Є різні підходи до класифікації кластерних систем [60, 101]. Насамперед можна виділити категорії таких систем, залежно від їхнього призначення.

Обчислювальні кластери (High-Performance, HP) призначені для виконання паралельних програм, що описують вирішення складних наукових проблем (роз­шифрування генома, синтезу молекул тощо). Багато з них сьогодні потребують обчислювальних потужностей, яких неможливо досягти у разі використання окремих комп'ютерів. Фактично, такий кластер - це аналог багатопроцесор­ного суперкомп'ютера, але при цьому коштує значно дешевше. Більшу части­ну наукових обчислювальних задач у наш час розв'язують на таких кластерах.

Кластери з вирівнюванням навантаження (load balancing) дають можливість розподіляти процесорне або мережне навантаження порівну між вузлами кла­стера. Вирівнювання навантаження потрібне, якщо велика кількість користува­чів виконує один і той самий набір застосувань або створює багато мережних з'єднань одного типу (наприклад, у веб-серверах із високим вхідним наванта­женням). Звичайно за розподіл навантаження відповідає окремий сервер, що виконується на одному із вузлів.

Кластери з резервуванням (High Availability, НА) потрібні для забезпечення підвищеної надійності програмного та апаратного забезпечення комп'ютерних систем. Такі кластери надають можливість організовувати гаряче резервуван­ня окремих компонентів або вузлів системи. У разі виходу з ладу одного із вузлів обслуговування відразу продовжує інший вузол, при цьому для кори­стувача робота системи не порушена.

На практиці часто можна зустріти кластери, які поєднують властивості різних категорій. Так, обчислювальні кластери можуть реалізовувати базові функції ре­зервування і вирівнювання навантаження.

Ще один вид класифікації пов'язаний із контролем над вузлами кластера.

Виділений кластер (dedicated) передбачає, що його вузли перебувають під єди­ним контролем і можуть бути використані лише в рамках кластера.

Невиділений кластер (non-dedicated) складається із вузлів, що належать різ­ним власникам і переважно працюють незалежно. У цьому разі в рамках кла­стера використовують деяку частину обчислювальних ресурсів вузла (наприк­лад, процесорний час, не зайнятий виконанням власних застосувань).

Проміжне програмне забезпечення кластерних систем

ППО кластера звичайно складається із двох рівнів підтримки кластерних операцій.

Інфраструктура підтримки єдиного образу системи (Single System Image In­frastructure, SSI) об'єднує разом операційні системи всіх вузлів для забезпе­чення уніфікованого доступу до системних ресурсів.

Інфраструктура доступності системи (System Availability Infrastructure, SAI) забезпечує відновлення системи після збою окремих її вузлів .

Назвемо деякі характеристики кластерної системи, підтримку яких забезпе­чує ППО кластера.

♦ Єдина точка входу дає змогу користувачу з'єднуватися із кластером як з окре­мим комп'ютером, при цьому ППО має визначити, який із вузлів виконувати­ме аутентифікацію.

♦ Єдина ієрархія файлової системи забезпечує те, що після входу у систему ко­ристувач сприймає файлову систему кластера як єдину ієрархію файлів і ка­талогів незалежно від їхнього фізичного місцезнаходження.

♦ Єдина віртуальна мережа дає змогу коду, що виконується на будь-якому вузлі кластера, отримувати доступ до зовнішніх мережних з'єднань, навіть якщо во­ни не підключені фізично до цього вузла.

♦ Єдиний адресний простір пам'яті об'єднує всі адресні простори окремих вуз­лів. Цей адресний простір доступний для всіх вузлів кластера. Інфраструктура доступності системи реалізує низку додаткових характеристик.

♦ Єдиний простір процесів дає змогу виконувати процеси однаково на будь-якому вузлі. Зокрема, всі процеси мають ідентифікатори, унікальні в межах кластера; результат виконання fork О може бути виконаний на іншому вузлі; дозволено взаємодію між процесами, які виконуються на різних вузлах.

♦ Підтримка контрольних точок (checkpoints) дає можливість періодично збері­гати стан процесу під час його виконання. У разі виходу вузла з ладу процес може бути запущений на іншому вузлі з використанням збереженого стану -без втрати результатів обчислень. Дозволена також міграція процесів між вуз­лами під час їхнього виконання для вирівнювання навантаження.

Зазначимо, що загалом ППО кластера не зобов'язане виконуватись однаково

на всіх його вузлах. Звичайно реалізація деякої функції вимагає виконання спе­ціального сервера на одному з вузлів (керуючому вузлі) і клієнтського коду на інших вузлах.

Засоби розробки паралельного програмного забезпечення

Оскільки зв'язок між вузлами кластера здійснюють зазвичай із використанням Ti"tj /то ■

взаємодія між компонентами паралельного програмного забезпечення,

Що виконуються на різних вузлах, може бути реалізована на основі інтерфейсу сокетів. Це, однак, є складним завданням, оскільки такий інтерфейс не містить жодних спеціалізованих засобів підтримки паралельних обчислень. У разі вико­ристання сокетів для кожної задачі потрібне розроблення необхідних структур Даних, реалізація синхронізації, координації, обробки помилок тощо.

На практиці паралельні програми для кластерів розробляють із застосуван­ням засобів вищого рівня, що використовують сокети як базовий механізм. Най­частіше при цьому користуються інтерфейсом обміну повідомленнями, прикла­дами реалізації якого є PVM і MPI [6, 27, 57].

PVM (Parallel Virtual Machine) - це мобільна бібліотека обміну повідомлен­нями і середовище виконання паралельного коду. Вона доступна для різних апаратних архітектур (багатопроцесорних систем, кластерів тощо) та різних ОС (зокрема Linux і Windows ХР).

♦ Специфікація MPI (Message Passing Interface) розроблена для задання стандар­ту організації обміну повідомленнями у розподілених системах. Є реалізації MPI для різних ОС (зокрема для Linux і Windows ХР доступний пакет МРІСН).

Під час розробки паралельних застосувань широко застосовуються алгорит­ми, описані в розділі 7 (методи ведучого-веденого, портфеля задач і конвеєра). Зазначимо, що за умов розподіленої системи замість потоків у цих алгоритмах можна розглядати процеси, а замість примітивів синхронізації — примітиви обмі­ну повідомленнями.

Кластерна архітектура Beowulf

Архітектура Beowulf [64] була розроблена в 1994 році як результат проекту, вико­наного в Агентстві космічних досліджень США (NASA). Головною її особливістю є відмова від використання дорогого апаратного забезпечення, щоб досягти опти­мального співвідношення ціни і продуктивності. Сьогодні вона є найрозповсю-дженішою кластерною архітектурою.

Розглянемо характеристики Beowulf-кластера.

♦ Основною метою його використання є виконання паралельних обчислень (Beowulf-кластер завжди є обчислювальним кластером).

♦ Вузлами такого кластера є стандартні персональні комп'ютери з архітектурою ІА-32.

♦ Усі вузли є виділеними і не можуть бути використані для інших цілей.

♦ Усе програмне забезпечення має бути доступне у вихідних кодах. Більшість Beowulf-кластерів працює під керуванням Linux.

♦ Зв'язок між вузлами здійснюють через виділену внутрішню мережу, яка вико­ристовує Ethernet, Fast Ethernet або інші мережні технології, підтримувані Linux. Зауважимо, що, як і для вузлів, основною вимогою до мережі є стан­дартність і низька вартість компонентів.

Звичайно один із вузлів є головним (head node). Його переважно оснащують монітором і клавіатурою, зв'язують із зовнішньою мережею, і він відіграє роль ке­руючого вузла для різних функцій системи. Рекомендують, щоб інші обчислю­вальні вузли (computing nodes) мали однакову апаратну конфігурацію (так легше підтримувати виконання паралельних застосувань).

Наведемо приклади ППО, яке можна використовувати у Beowulf-системах.

♦ Для підвищення продуктивності мережного обміну є можливість встановити набір модифікацій ядра Linux, що реалізують підтримку паралельного вико­ристання кількох мережних інтерфейсів (у цьому разі всі інтерфейси розгля­дають як один віртуальний канал із більшою пропускною здатністю).

♦ Загальний образ системи може бути реалізований із використанням пакета розподіленого простору процесів Beowulf (Beowulf distributed Process space, BPROC). Він складається із модифікацій ядра і утиліт режиму користувача, що підтримують єдиний простір процесів.

Під час розробки паралельного програмного забезпечення для Beowulf-систем можна використовувати будь-які засоби, доступні в Linux (наприклад, PVM або реалізації стандарту MPI).

Кластерна архітектура Windows ХР

Серверні версії Windows ХР (зокрема Windows Server 2003) містять засоби реа­лізації кластерів із резервуванням (серверні кластери) і кластерів із вирівнюван­ням навантаження (служба мережного вирівнювання навантаження, Network Load Balancing). Далі зупинимося на серверних кластерах [102].

Основою архітектури серверних кластерів є кластерна служба (Cluster Ser­vice) - набір компонентів кожного вузла, що підтримують функціонування кла­стера. Компоненти кластерної служби працюють в адресному просторі окремого фонового процесу.

Програмні та апаратні компоненти вузлів, якими керує кластерна служба, нази­вають ресурсами. До ресурсів належать апаратні пристрої (диски, мережні інтер­фейси) і логічні об'єкти (IP-адреси, застосування, бази даних). Ресурси можуть перебувати у підключеному і відключеному стані. Розрізняють локальні ресур­си вузлів і спільні ресурси, доступні для всіх вузлів кластера (спільний масив дис­ків, спільна мережа). Спеціальний ресурс, який називають ресурсом кворуму (quorum resource), використовують для зберігання службової інформації, спіль­ної для всього кластера. Його реалізують на базі одного із дисків спільного масиву.

Ресурси об'єднані у групи ресурсів. Така група звичайно складається із логіч­но пов'язаних ресурсів (наприклад, застосування і його даних). Власником групи у конкретний момент може бути тільки один вузол кластера. Для кожної групи задано, на якому вузлі їй переважно потрібно виконуватися і куди слід її перевес­ти у разі виходу поточного вузла з ладу.

Найважливіші компоненти кластерної служби такі.

Менеджер вузлів (Node manager) функціонує на кожному вузлі і підтримує локальний список поточних вузлів кластера. Для цього він періодично надси­лає тактові повідомлення (heartbeats) аналогічним менеджерам інших вузлів. Коли один із них не відповідає на повідомлення, відповідний вузол вважають таким, що вийшов із ладу; про це негайно повідомляють інші вузли, внаслідок чого вони обновлюють свої списки поточних вузлів (стається подія перегру­пування — regroup event).

Менеджер бази даних (Database manager) керує конфігураційною базою даних кластера, яка містить інформацію про всі фізичні та логічні елементи кластера (вузли, типи і групи ресурсів, конкретні ресурси) і зберігається у реєстрі кож­ного вузла і в ресурсі кворуму. Цю інформацію використовують для відсте-ження поточного і бажаного стану кластера.

Менеджер виведення з ладу (Failover manager) відповідає за обробку ситуації, коли один із вузлів виходить із ладу (failover) або повертається до роботи (fallback). Вихід із ладу може статися випадково (після апаратного або про­грамного збою) або навмисно (з ініціативи адміністратора кластера). При цьо­му групи ресурсів перерозподіляються між іншими вузлами з урахуванням поточного навантаження на вузли і переваг, заданих для цих груп. У разі по­верненні вузла до роботи менеджер виведення з ладу переводить групи ресур­сів назад під керування цього вузла. Цей менеджер, крім того, може зупиняти і перезапускати окремі ресурси у разі їхніх збоїв.