Балансировка нагрузки – наиболее распространенная практика распределения входящего веб-трафика между несколькими внутренними серверами. Это делает приложение высокодоступным, даже если по какой-то причине некоторые серверы выходят из строя. Балансировка нагрузки увеличивает эффективность и надежность веб-приложения. Балансировщик нагрузки HAProxy используется с той же целью. Это наиболее широко используемый в промышленности балансировщик нагрузки. Согласно официальному сайту, HAProxy используется ведущими компаниями, такими как AWS, Fedora, Github и многими другими.
HAProxy или High Availability Proxy обеспечивает высокую доступность и решение для прокси. Он написан на C и работает на сетевом и прикладном уровнях модели TCP/IP. Лучше всего то, что у него есть бесплатная версия сообщества, и это приложение с открытым исходным кодом. Он работает в операционных системах Linux, FreeBSD и Solaris. Корпоративная версия тоже есть, но имеет свою цену.
В этой статье мы увидим, как установить HAProxy и настроить сервер балансировки нагрузки в Debian 10.
Предпосылки:
- «Sudo» доступ ко всем машинам и базовые знания о запуске команд в терминале Linux.
- Частные IP-адреса добавлены к балансировщику нагрузки и внутренним серверам.
- Операционная система Debian 10 установлена на всех машинах.
Установка HAProxy на Debian 10
В этой статье мы предположим следующую конфигурацию IP-адреса:
- Балансировщик нагрузки HAProxy 10.0.12.10
- Веб-сервер1: IP-адрес: 10.0.12.15
- Веб-сервер2: IP-адрес: 10.0.12.16
Шаг 1. Обновите системный репозиторий Debian и пакеты.
Сначала выполните приведенные ниже команды на всех системах, чтобы обновить пакеты программного обеспечения до последней версии.
$ sudo apt update $ sudo apt upgrade -y
Шаг: 2 Установите Nginx на внутренние серверы
Подготовьте свои внутренние серверы, установив веб-сервер Nginx на каждом. Вы также можете установить другие веб-серверы, такие как apache.
Чтобы установить Nginx, выполните следующие команды на каждом внутреннем сервере в вашей среде:
$ sudo apt install nginx
Шаг: 3 После того, как Nginx будет установлен на ваших внутренних серверах, запустите службу, как показано ниже:
$ sudo systemctl start nginx
СОВЕТ : Мы также можем управлять веб-сервером nginx, используя следующую команду:
$ sudo /etc/init.d/nginx “option” option: start reload restart status stop
Шаг: 4 Создайте собственные индексные страницы в веб-папке каждого веб-сервера Nginx. Это поможет нам определить, какой внутренний сервер обслуживает входящие запросы.
На каждом веб-сервере выполните следующие задачи:
Сделайте резервную копию исходного индексного файла с помощью следующей команды:
$ sudo cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
Добавьте собственный текст в файл index.html. Мы добавляем IP-адрес каждого веб-сервера.
Для веб-сервера 1:
$ sudo echo "Web server 1: 10.0.12.15" | sudo tee /usr/share/nginx/html/index.html
Для веб-сервера 2:
$ sudo echo "Web server 2: 10.0.12.16" | sudo tee /usr/share/nginx/html/index.html
Вы также можете использовать редактор Vim, если вам это удобнее. Это показано ниже:
$ sudo vi /usr/share/nginx/html/index.html
Когда файл откроется, введите текст и сохраните файл.
Откройте файл виртуального хоста по умолчанию в каталоге “/etc/nginx/sites-available/”.
$ sudo nano /etc/nginx/sites-available/default
Теперь внутри блока сервера измените корневую директиву с “/var/www/html” на “/usr/share/nginx/html”.
Чтобы проверить конфигурацию Nginx, выполните следующую команду:
$ sudo nginx -t
Шаг 5: Теперь перезапустите службу с помощью команды:
$ sudo systemctl restart nginx
Вы можете проверить статус nginx, используя следующую команду:
$ sudo systemctl status nginx
Шаг: 6 Чтобы установить HAProxy в Debian 10 (Buster), выполните следующую команду на балансировщике нагрузки.
$ sudo apt install haproxy -y
Совет: после установки HAProxy вы можете управлять HAProxy с помощью сценария инициализации. Для этого установите для параметра «enabled» значение 1 в “/etc/default/haproxy”, как показано ниже:
$ sudo vi /etc/default/haproxy ENABLED=1
Теперь со сценарием инициализации можно использовать следующую опцию:
$ sudo service haproxy “option.” option: start reload restart status stop
Шаг: 7 Теперь настройте балансировщик нагрузки HAProxy, отредактировав файл конфигурации по умолчанию haproxy, то есть «/etc/haproxy/haproxy.cfg». Чтобы отредактировать этот файл, выполните следующую команду
$ sudo vi /etc/haproxy/haproxy.cfg
Совет: сделайте резервную копию исходного файла, чтобы мы были в безопасности, если что-то пойдет не так. Чтобы выполнить резервное копирование, используйте следующую команду:
$ sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.orig
Теперь перейдите в конец файла и отредактируйте следующую информацию:
frontend Local_Server bind 10.0.12.10:80 mode http default_backend webserver backend webserver mode http balance roundrobin option forwardfor http-request set-header X-Forwarded-Port %[dst_port] http-request add-header X-Forwarded-Proto https if { ssl_fc } option httpchk HEAD / HTTP/1.1rnHost:localhost server web1 10.0.12.15:80 server web2 10.0.12.16:80
Шаг: 8 Проверьте синтаксис конфигурации указанного выше файла с помощью следующей команды:
$ sudo haproxy -c -f /etc/haproxy/haproxy.cfg
Если все пойдет правильно, появится такой вывод: “Configuration file is valid.”. Если вы получите какую-либо ошибку в выводе, перепроверьте файл конфигурации и проверьте его еще раз.
Шаг: 9 Теперь перезапустите службу HAProxy, чтобы применить изменения.
$ sudo service haproxy restart
Тестирование конфигурации
Теперь пора проверить, правильно ли работает наша установка. Введите IP-адрес системы балансировки нагрузки в веб-браузере (в нашем случае это 10.0.12.10) и постоянно обновляйте страницу 2–4 раза, чтобы убедиться, что балансировщик нагрузки HAProxy работает правильно. Вы должны увидеть разные IP-адреса или любой текст, который вы ввели в файл index.html, когда продолжите обновлять страницу несколько раз.
Другой способ проверки – отключить один веб-сервер и проверить, обслуживает ли другой веб-сервер запросы.
На этом пока все! Попробуйте поэкспериментировать с HAProxy, чтобы узнать больше о том, как он работает. Например, вы можете попробовать:
- Интеграция другого веб-сервера рядом с nginx.
- Изменение алгоритма балансировки нагрузки на другой, кроме циклического.
- Настройка проверки работоспособности HAProxy, чтобы определить, работает ли внутренний сервер.
- Применение липких сеансов для подключения пользователя к одному и тому же внутреннему серверу.
- Использование статистики HAProxy для получения информации о трафике на серверах.
HAProxy имеет обширную документацию, доступную как для версии сообщества HAProxy, так и для версии HAProxy для предприятий . Изучите эту документацию, чтобы получить больше информации о повышении производительности и надежности вашей серверной среды.
Это руководство было успешно выполнено в Debian 10 (Buster). Попробуйте установить HAProxy на другие дистрибутивы на основе Debian, такие как Ubuntu, Linux Mint и т. д. Пожалуйста, не забудьте поделиться этим руководством с другими.