балансування навантаження

Системи балансування навантаження Web-серверів (Частина 1)

Інструменти для настройки продуктивності Web-серер

Індустрія електронної комерції продовжує розвиватися, і сьогодні все нові компанії починають спілкуватися зі своїми клієнтами за допомогою Web. Високопродуктивний сайт, здатний надавати матеріали швидко і без збоїв, не тільки допомагає залучати нових клієнтів. Він стає найважливішою передумовою успішної діяльності підприємств електронної торгівлі та підвищення їх конкурентоспроможності. Чи потенційні клієнти коли-небудь повернуться на дратівливо "тихохідний" вузол, де відвідувач довго чекає реакції на свій запит, а то і зовсім залишається без відповіді. Ось чому при плануванні інфраструктури вузла Web в будь-якій організації заходів по підвищенню його продуктивності слід приділяти особливу увагу.

Існує кілька способів підвищення швидкодії сайту: можна збільшити смугу пропускання, встановити високопродуктивне мережеве обладнання, розробити ефективні програми для Web, оптимізувати і модернізувати програмні і апаратні компоненти Web-сервера, а також взяти на озброєння технологію кешування в середовищі Web.

Ще один спосіб підвищення продуктивності вузла Web полягає в тому, щоб збільшити кількість Web-серверів і сайтів і розміщувати на них "дзеркальні" копії матеріалів. Таким чином можна розподілити загальне навантаження за всіма компонентами системи і скоротити час повернення інформації при виконанні сервером внутрішніх процедур обробки клієнтських запитів. При цьому зберігаються і існуючі сервери, оскільки виводити їх з експлуатації і замінювати новими не доведеться.

Не так давно постачальники налагодили випуск систем балансування навантаження - програмних продуктів, які вирівнюють навантаження, розподіляючи її по декількох серверах. Крім того, вони підвищують відмовостійкість Web-серверів: в разі відмови однієї машини направляють пакети даних на інший сервер або сайт. Таким чином, час очікування скорочується, а число необроблених запитів зводиться до мінімуму. Системи балансування навантаження можна використовувати як при наявності лише одного Web-сайту, так і при роботі з цілим рядом вузлів. Отримавши уявлення про те, що таке системи балансування навантаження і як вони працюють, можна визначити найбільш важливі їх характеристики, які слід враховувати при виборі засобу вирівнювання навантаження.

Що таке система балансування навантаження

Рис.2 Система балансування для одного сайту.

Рис.3 Система балансування для кількох сайтів.

Моніторинг стану серверів

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

При проведенні зовнішнього моніторингу система балансування навантаження розраховує час відгуку сервера, для чого направляє на сервер запит і заміряє час відповіді. Найпростіша техніка виконання зовнішнього моніторингу сервера передбачає використання ping-тестів по протоколу управління повідомленнями Internet Control Message Protocol (ICMP). Ці тести дозволяють системі переконатися в готовності сервера до роботи і дізнатися, скільки часу необхідно для передачі інформації з сервера на систему балансування і назад. Якщо система балансування навантаження не отримує відгуку від сервера після декількох послідовних запитів, вважається, що даний сервер недоступний. Як правило, адміністратори підключають Web-сервери безпосередньо до системи балансування навантаження, тому якщо час, що витрачається на передачу, занадто велике, система робить висновок, що сервер працює з великим навантаженням.

Тут, однак, треба відзначити, що в ході ping-тестів сервера по протоколу ICMP діагностується тільки стек протоколів IP; описаний метод не дає уявлення про стан стека TCP, який використовується протоколом передачі гіпертексту HTTP. Щоб переконатися в правильності функціонування стека TCP сервера, засіб балансування навантаження робить спробу встановити з'єднання по протоколу TCP, для чого потрібно здійснити складається з трьох етапів обмін підтверджуючими повідомленнями. Робиться це так. Спочатку засіб балансування навантаження направляє серверу TCP-пакет, в якому значення біта SYN встановлено рівним 1. Якщо після цього система балансування отримує від сервера TCP-пакет, в якому значення біта SYN дорівнює 1, а значення біта ACK теж встановлено рівним 1, вона спрямовує сервера другий TCP-пакет із значенням біта SYN рівним 0 і значенням біта ACK рівним 1. Якщо обмін підтверджуючими повідомленнями завершився успішно, значить, TCP-стек сервера функціонує нормально. По завершенні такого обміну засіб балансування навантаження негайно розриває з'єднання з сервером, щоб виключити непродуктивне використання його ресурсів. Якість TCP-з'єднання з сервером оцінюється системою за таким показником, як час, необхідний для виконання всіх трьох етапів обміну підтверджують повідомленнями.

Однак при тому, що зовнішній моніторинг дає можливість отримати про сервер корисну інформацію, як метод діагностики він має свої недоліки. Про таких істотних характеристиках сервера, як стан центрального процесора, пам'яті, системної шини, шини введення / виводу, мережевий інтерфейсної плати, а також про низку важливих ресурсів системи і прикладних програм адміністратор має лише уривчасті відомості або взагалі ніяких. Детальну інформацію про навантаження сервера може надати тільки внутрішній моніторинг. Для його виконання в системі балансування навантаження передбачені спеціальні агенти внутрішнього моніторингу, які встановлюються на кожному сервері. Агент постійно контролює стан своєї "середовища проживання" і повідомляє про нього засобу балансування. Багато постачальників пропонують інструментальні засоби для роботи зі сценаріями, які дозволяють адміністраторам створювати утиліти внутрішнього моніторингу для Web-додатків. Внутрішній моніторинг широко застосовується в програмних системах балансування, але в апаратних пристроях і в рішеннях на базі комутаторів цей метод діагностики реалізується рідко.

вибір сервера

З урахуванням інформації, отриманої в ході зовнішнього і внутрішнього моніторингу серверів, система балансування навантаження може виділити сервер, який здатний краще за інших впоратися з обробкою клієнтського запиту. Якщо робочі характеристики апаратних і програмних компонентів всіх серверів пулу рівнозначні, можна налаштувати систему балансування навантаження так, щоб вона виділяла сервер для обробки чергового запиту за принципом кругового списку, враховуючи при цьому стан сервера. Але якщо система балансування управляє як сервером з процесором Pentium III, так і ще однією машиною, на якій встановлений процесор Pentium Pro, існує можливість відрегулювати цю систему для роботи в іншому режимі: більш потужному серверу буде діставатися більше число запитів. Інакше кажучи, мова йде про те ж принципі кругового списку, тільки з урахуванням вагових коефіцієнтів.

Сучасні системи балансування навантаження дозволяють адміністратору визначати правила вибору сервера на свій розсуд. Можна, наприклад, включити в ці правила такі критерії, як коефіцієнт завантаження ЦП і пам'яті, число відкритих з'єднань TCP і кількість пакетів, що надходять на мережеву інтерфейсну плату того чи іншого сервера. Формула, за якою система балансування визначає рівень завантаженості серверів, може виглядати приблизно так: (10 * рівень використання ЦП) + (3 * рівень використання пам'яті) + (6 * число відкритих TCP-з'єднань) + (3 * число переданих пакетів) = завантаження сервера. При отриманні запиту від клієнта система балансування навантаження розраховує за цією формулою навантаження кожного сервера і направляє запит серверу з найменшим навантаженням.

Схожі статті