Добре, про це попросили деякий час назад, і я запізнююсь на вечірку. Все-таки тут є що додати.
Джекі, ти її майже прибив. Ваша ілюстрація показує, як балансування навантажень обробляється на більшості менших і середніх установок.
Ви повинні прочитати вступ про балансування навантаження від Віллі Тарре, до якого Nakedible пов'язаний. Він все ще діє, і це хороший вступ.
Вам потрібно врахувати, як вони відповідають вашим потребам:
- Балансори навантаження TCP / IP (Linux Virtual Server та ін.) Найнижча за кожне з'єднання накладна, найвища швидкість, не може "бачити" HTTP.
- Балансори завантаження рівня HTTP (HAProxy, nginx, Apache 2.2, Pound, Microsoft ARR та ін.). Більш високі накладні, можуть бачити HTTP, можуть gzip HTTP, можуть робити SSL, можуть робити липке балансування навантаження сеансу.
- Зворотні проксі HTTP (сервер трафіку Apache, лак, кальмар). Можна зберігати кешовані об'єкти (деякі веб-сторінки, css, js, зображення) в оперативній пам’яті та пересилати їх наступним клієнтам, не залучаючи веб-сервер із заднім числом. Часто можна робити те саме, що роблять балансири навантаження L7 HTTP.
є другий балансир, як я впевнений, що в якийсь момент і балансиру знадобиться допомога.
Ну, звичайно. Але балансування навантаження просто, і часто один балансир навантаження може швидко працювати . Я посилаюсь на цю статтю, яка вразила нерв в Інтернеті, як лише приклад того, яку продуктивність може забезпечити єдиний сучасний сервер . Не використовуйте кілька ЛБ, перш ніж вам потрібно. Коли вам потрібен загальний підхід, це балансири навантажень на рівні IP на самому фронті (або DNS Round Robin), перехід на балансири навантажень рівня HTTP, перехід на проксі-сервери та веб-сервери.
допомога щодо того, якими мають бути "балансири / ті", та найкращі практики щодо їх налаштування.
Місце неприємності - це обробка стану сеансу і певною мірою поведінка відмови. Налаштування самих балансирів навантажень порівняно просто.
Якщо ви просто використовуєте 2-4 сервери веб-сервера webapp, статичне хешування на основі вихідної IP-адреси може бути життєздатним. Це дозволяє уникнути необхідності спільного стану сеансу серед серверів webapp. Кожен вузол webapp бачить 1 / N загального трафіку, а відображення клієнта-сервера статичне в нормальній роботі. Це не дуже добре для більшого встановлення.
Ці дві кращі алгоритми балансування навантаження, в тому сенсі , що вони мають доброякісний поведінку при високих навантаженнях і рівномірний розподіл навантаження, є кругової і справжня балансування випадкової навантаження. І те й інше вимагає, щоб ваша веб-програма мала глобальний стан сесії, доступний на вузлах webapp. Як це зробити, залежить від стека технологій webapp; але, як правило, для цього доступні стандартні рішення.
Якщо ні статичне хешуваннявання, ні загальний стан сеансу не підходять для вас, то вибір, як правило, " балансуючий сеанс " балансування навантаження та стан сеансу на сервері. У більшості випадків це працює добре, і це цілком життєздатний вибір.
врівноважувач (и) побачать, скільки з'єднань є в кожному екземплярі apache (через деякий список конфігурацій внутрішніх IP-адрес або вічних IP-адрес) і розподіляє з'єднання порівну
Так, деякі сайти використовують це. Існує багато імен для безлічі різних алгоритмів балансування навантаження, які існують. Якщо ви можете обрати кругового або випадкового (або зваженого кругового робіна, зваженого випадкового), то я рекомендую вам це зробити з причин, наведених вище.
І останнє: Не забувайте, що багато постачальників (F5, Cisco та інших компаній високого класу, fx Coyote Point і Kemp Technologies за більш прийнятними цінами) пропонують зрілі пристрої для балансування навантаження .