10 Балансувальник навантаження з відкритим вихідним кодом для HA та покращеної продуктивності

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

Загалом, існує три основні категорії балансувальників навантаження:

  • Апаратні
  • Хмарні
  • Програмні

Апаратний балансувальник навантаження – це спеціалізований пристрій, призначений для розподілу трафіку та виконання відповідних функцій. Ось деякі відомі постачальники апаратних рішень БН:

Хоча вони коштують дорого, вони надають вам абсолютний контроль над процесом.

Хмарні балансувальники навантаження стають дедалі популярнішими.

Використання хмарного БН є доступним варіантом для отримання всіх потрібних функцій без значних інвестицій в апаратне забезпечення. Ви оплачуєте лише фактичне використання. Нижче представлені деякі з відомих хмарних БН.

Вартість може починатися від 20 доларів на місяць.

І останній тип – програмні балансувальники, де ви самостійно встановлюєте, керуєте та конфігуруєте ПЗ для балансування навантаження. Це може бути як комерційне, так і безкоштовне/з відкритим кодом.

Якщо у вас обмежений бюджет або ви хочете дослідити безкоштовне рішення для балансування навантаження, наведені нижче варіанти можуть бути корисними.

Seesaw

Seesaw, розроблений Google, є надійним віртуальним сервером балансування навантаження на базі Linux, призначеним для забезпечення необхідного розподілу навантаження в рамках однієї мережі.

Seesaw написаний на мові Go та ефективно працює на дистрибутивах Ubuntu/Debian. Він підтримує будь-яку передачу даних та DSR (пряме повернення від сервера) і вимагає двох вузлів Seesaw, які можуть бути як фізичними, так і віртуальними.

Важливо зазначити, що Seesaw працює з мережами четвертого рівня, тому, якщо ви шукаєте рішення для балансування навантаження сьомого рівня, вам варто розглянути інші варіанти.

KEMP

БЕЗКОШТОВНИЙ вдосконалений контролер доставки додатків від KEMP підтримується усіма основними гіпервізорами. Ви можете завантажити та використовувати його у своєму дата-центрі або розгорнути у хмарних сервісах, таких як AWS або Azure.

Це безкоштовне рішення, яке пропонує функціональність комерційного рівня, зокрема:

  • Балансування навантаження рівня 4 для TCP/UDP з використанням циклічного алгоритму або алгоритмів найменшого підключення.
  • Балансування рівня 7.
  • Інтеграція брандмауера веб-додатків (WAF).
  • Вбудований механізм запобігання вторгненням (IPS).
  • Глобальне балансування навантаження сервера з підтримкою декількох сайтів.
  • Кешування, стиснення контенту, перемикання контенту.
  • Постійність веб-кукі.
  • Тунелювання IPSec.
  • Попередня аутентифікація.
  • Let’s Encrypt.
  • Kubernetes.

KEMP LB використовується багатьма відомими брендами, такими як Apple, Sony, JP Morgan, Audi, Hyundai тощо. Безкоштовна версія надає достатньо можливостей; однак, якщо вам потрібні додаткові функції, ви можете розглянути їх комерційну ліцензію.

Якщо ви або ваша організація зацікавлені у дослідженні KEMP LB та потребуєте онлайн-навчання, можете скористатися цим онлайн-курсом Майка Волтона.

HAProxy

Одним з популярних рішень на ринку є HAProxy, який забезпечує високу доступність, проксі та балансування навантаження TCP/HTTP. HAProxy використовується багатьма провідними компаніями по всьому світу, як показано нижче.

Деякі з його ключових особливостей включають:

  • Підтримку IPv6 та сокетів UNIX.
  • Стиснення Deflate та Gzip.
  • Перевірку стану (health check).
  • Закріплення сесії на основі джерела.
  • Вбудовану статистичну звітність (демо можна переглянути тут).

HAProxy також доступний у корпоративній версії, апаратному забезпеченні та віртуальному пристрої.

Найкращий спосіб ознайомитися з HAProxy – випробувати його. Community Edition пропонує багато функцій і є абсолютно БЕЗКОШТОВНОЮ.

Zevenet

Zevenet підтримує L3, L4 та L7 рівні. Він доступний як вихідний код, образ IOS та в репозиторії Docker.

Він забезпечує розширений моніторинг працездатності, тому несправні сервери/сервіси швидко відключаються, щоб гарантувати безперебійну роботу для користувачів. Zevenet, раніше відомий як Zen, ефективно працює з протоколами на основі TCP, такими як FTP, SIP, SSL, HTTP тощо.

Якщо ви шукаєте хостинг для Zevenet, можете скористатися послугами Kamatera.

Neutrino

Neutrino використовується eBay і розроблений на Scala та Netty. Він підтримує алгоритми найменшого підключення та циклічного алгоритму з функціями перемикання:

  • Використання канонічних імен (CNAME).
  • Контекстне перемикання.
  • L4 з використанням номерів портів TCP.

Neutrino продемонстрував здатність обробляти понад 300 запитів на секунду на 2-ядерній віртуальній машині. Порівнюючи з HAProxy, однією з основних переваг Neutrino є перемикання L7.

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

Balance

Balance від In lab networks – це TCP-проксі циклічний LB, що підтримує IPv6 на стороні прослуховування. Це дозволяє використовувати IPv4 на фронтенді та IPv6 на бекенді.

Він має всі основні функції LB.

Pen

Pen був протестований на Linux, FreeBSD, HP-UX, Solaris і Windows, але немає причин, чому він не може працювати на іншому дистрибутиві Unix. Він підтримує протоколи на основі UDP та TCP, такі як HTTP, SNMP, DNS тощо.

Деякі з основних функцій включають:

  • Фільтр GeoIP.
  • Термінацію SSL.
  • Сумісність з IPv4 та IPv6.

Nginx

Можливо, ви здивуєтесь, але Nginx — це не тільки веб-сервер і проксі, але й з відкритим вихідним кодом Nginx підтримує базовий рівень перемикання контенту та розподілу маршрутизації запитів між кількома серверами.

Однак версія Nginx Plus пропонує значно більше можливостей.

Nginx Plus – це комплексне рішення для доставки веб-додатків, що включає балансування навантаження, кешування контенту, веб-сервер, WAF, моніторинг тощо. Він забезпечує високопродуктивне рішення для балансування навантаження для масштабування додатків та обробки мільйонів запитів на секунду.

Traefik

Сучасний та швидкий HTTP-проксі та LB, розроблений на GO. Traefik підтримує різноманітні внутрішні служби, включаючи Amazon ECS, Docker, Kubernetes, Rancher тощо.

Він підтримує WebSockets, HTTP/2, автоматичне оновлення сертифікатів SSL за допомогою чистого інтерфейсу Let’s Encrypt для управління та моніторингу ресурсів.

Go-between

Go-between – це мінімалістичний, але потужний високопродуктивний балансувальник навантаження L4 TCP, TLS та UDP.

Він працює на різних платформах, таких як Windows, Linux, Docker, Darwin, і ви можете зібрати його з вихідного коду, якщо вас це цікавить. Балансування здійснюється на основі алгоритмів, які ви обираєте в конфігурації:

  • IP хеш.
  • Round-Robin.
  • Найменша пропускна здатність.
  • Найменша кількість з’єднань.
  • Вага.

Згідно з тестів продуктивності, Go-between швидший за HAProxy, але не за Nginx.

Якщо ви шукаєте сучасне рішення для балансування L4 з автоматичним виявленням для динамічного середовища, Go-between здається перспективним варіантом. Спробуйте його в дії, щоб перевірити його можливості.

Висновок

Сподіваюся, що наведений вище список програмного забезпечення для балансування навантаження з відкритим кодом допоможе вам у виборі оптимального варіанту для вашої програми. Всі вони є БЕЗКОШТОВНИМИ, тому найкращий спосіб знайти відповідне рішення — це випробувати їх.

Якщо ви хочете отримати нові навички, спробуйте Udemy, де є тисячі відеокурсів.