Haproxy - проксі сервер, linuxspace
High Availability Proxy або HAProxy - популярний проксі сервер для Linux, Solaris і FreeBSD з можливістю балансування навантаження TCP / HTTP з відкритим програмним кодом. Його основне завдання - підвищення продуктивності серверного середовища шляхом розподілу робочого навантаження серед кількох серверів (web, додатки, бази даних). Ним користуються такі відомі проекти як GitHub, Imgur, Instagram і Twitter.
HAProxy доступний в репозиторіях більшості дистрибутивів Linux. Якщо ви користувач FreeBSD. то нижче будуть надані потрібні порти. Також ви можете встановити HAProxy за допомогою менеджера пакетів.
- Для DEB-based дистрибутивів, наприклад Debian і Ubuntu, виконайте наступну команду:
$ Sudo apt-get install haproxy
- Для RPM-based дистрибутивів, наприклад Red Hat, Fedora і CentOS, виконайте наступну команду:
$ Sudo yum install haproxy
- Для SUSE-based дистрибутивів, наприклад SUSE Enterprise Linux і openSUSE, виконайте наступну команду:
$ Sudo zypper install haproxy
- Для FreeBSD і подібних операційних систем, HAProxy можна встановити з колекції портів і шлях до нього наступний: / usr / ports / net / haproxy. В якості альтернативи, ви можете встановити його за допомогою менеджера пакетів:
$ Sudo pkg install net / haproxy
Це встановить HAProxy на вашу систему. У тому випадку, якщо команда для вашого дистрибутива або операційної системи не працює, перевірте документацію або репозиторій вашої системи, для правильної установки HAProxy.
Параметри конфігурації для HAProxy налаштовуються за допомогою файлу haproxy.cfg. Вищевказані команди установки зазвичай поміщають даний файл в директорію / etc / haproxy /, проте цей шлях може бути зовсім іншим (це залежить від вашої операційної системи).
Щоб налаштувати HAProxy для роботи з Galera кластером, додайте наступні рядки в конфігураційний файл haproxy.cfg.
# Load Balancing for Galera Cluster
listen galera 192.168.1.10:3306
balance source
mode tcp
option tcpka
option mysql-check user haproxy
server node1 192.168.1.1:3306 check weight 1
server node2 192.168.1.2:3306 check weight 1
server node2 192.168.1.3:3306 check weight 1
- balance визначає політику вибору пункту призначення, тобто який сервер повинен розподіляти вхідні з'єднання.
- mode tcp визначає тип з'єднань, які він повинен розподіляти. Galera кластер використовує TCP з'єднання.
- option tcpka включає активну функцію для підтримки TCP з'єднання.
- option mysql-check user
в ключает перевірку сервера бази даних, щоб визначити, чи є в даний час вузол чинним. - server
check weight 1 про пределяет вузли, які необхідні HAProxy для їх подальшого використання в маршрутизації з'єднань.
Політика вибору пункту призначення
Коли HAProxy отримує нове з'єднання, існує цілий ряд алгоритмів, за допомогою яких він вибирає куди направити цей зв'язок. Цей алгоритм вибирається параметром balance, який описувався вище.
У наведеному вище прикладі конфігурації HAProxy налаштований на використання політики вибору джерела сигналу. Для ваших власних реалізацій. виберіть політику, яка найкраще працює з інфраструктурою і навантаженням.
Перевірка бази даних Сервера
На додаток до маршрутизації TCP з'єднань до Galera кластеру. HAProxy може також виконувати основні перевірки працездатності на сервері бази даних. Якщо це дозволено, то HAProxy по починає з'єднуватися з вузлом і розбере отриману відповідь або помилки, щоб визначити чи знаходиться цей вузол в робочому стані. Ви можете включити цю опцію за допомогою mysql-check. Тим не менш, вона вимагає щоб ви створили користувача в кластері HAProxy. якого ви будете використовувати при підключенні.
$ CREATE USER 'haproxy'@'192.168.1.10';
Після завершення налаштування HAProxy і вузлів, щоб почати працювати з HAProxy ви повинні запустити його на сервері. Для серверів. використовують init, запустіть наступні команди:
$ Service haproxy start
Для серверів. використовують systemd, виконайте іншу команду:
$ Systemctl start haproxy
Тепер HAProxy працює. Коли нові сполуки звертаються до цього сервера, то він направляє їх через вузли в кластері.
Як приклад викладаю відмінний конфігураційний файл:
# -----------------------
# Global settings
# -----------------------
global
log 127.0.0.1 local2
chroot / var / lib / haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket / var / lib / haproxy / stats
defaults
log global
retries 2
mode http
timeout connect 30000
timeout server 50000
timeout client 50000
listen myql_cluster 0.0.0.0:3306
balance source
mode tcp
option tcpka
server node1 85.34.56.45 check weight 1
server node2 85.34.56.45 check weight 1
server node2 85.34.56.45 check weight 1
listen stats *: 1936
stats enable
stats uri /
stats hide-version
stats auth admin: MakeAmericaGreatAgain