Для установки балансировщика нагрузки на сервере Linuxвыберите программный балансировщик (HAProxy или Nginx), установите через пакет вашего дистрибутива. manager, настройте пулы фронтенда и бэкенда с проверками работоспособности и SSLОткройте порты брандмауэра 80/443, затем проверьте отказоустойчивость. Для обеспечения высокой доступности добавьте второй узел и виртуальный IP-адрес с помощью Keepalived.
В этом пошаговом руководстве вы узнаете, как установить балансировщик нагрузки на Linux-сервер с использованием HAProxy. Nginxнастройте проверки работоспособности и SSL Завершение работы, развертывание высокой доступности с помощью Keepalived, усиление безопасности, мониторинг производительности и избегание распространенных ошибок. Инструкции понятны новичкам, но при этом технически точны и основаны на реальном опыте хостинга.
Что такое балансировщик нагрузки (и почему это важно)?

Балансировщик нагрузки распределяет входящий трафик между несколькими серверами приложений для повышения надежности, скорости и масштабируемости. В Linux популярными вариантами с открытым исходным кодом являются HAProxy (высокопроизводительный прокси-сервер уровня L4/L7) и Nginx (веб-сервер и обратный прокси L7). Вы можете балансировать HTTP/HTTPS (уровень 7) или чистый TCP (уровень 4), добавлять проверки работоспособности, сохранение сессий и т. д. SSL разгрузка.
Кому следует использовать это руководство
Это руководство предназначено для разработчиков, системных администраторов и владельцев сайтов, которые хотят настроить балансировщик нагрузки Linux перед веб-приложениями, API, WordPress или микросервисами. Предполагается наличие базовых знаний командной строки Linux и доступа с правами суперпользователя (sudo).
Параметры балансировки нагрузки в Linux
Выбор подходящего инструмента зависит от профиля вашего трафика, функциональных возможностей и операционных предпочтений.
- HAProxy (рекомендуется): Отличная производительность, расширенные проверки работоспособности, устойчивость к изменениям, расширенная маршрутизация, TLS, наблюдаемость.
- Nginx (с открытым исходным кодом): Отлично подходит в качестве обратного прокси/балансировщика L7, простая настройка, мощная экосистема; пассивные проверки работоспособности работают сразу после установки.
- IPVS/LVS (через keepalived): Балансировка нагрузки на уровне ядра (Layer 4) для очень высокой пропускной способности; меньше функций уровня 7 (Layer 7).
Для большинства веб-нагрузок начните с HAProxy или NginxЕсли вам нужны миллионы одновременных подключений с минимальными накладными расходами и простой логикой уровня L4, рассмотрите LVS/IPVS.
Предпосылки
- Сервер Linux: Ubuntu 22.04/24.04 или RHEL/AlmaLinux/Rocky 8/9.
- Права доступа root/sudo и базовые знания работы с сетями.
- Для балансировки трафика потребуется как минимум два серверных приложения.
- DNS запись, указывающая на публичный IP-адрес вашего балансировщика нагрузки (или плавающий/виртуальный IP-адрес в конфигурациях высокой доступности).
- Доступ брандмауэра к открытым портам 80/443 (и 8404/9000 для статистики, опционально).
Быстрое решение: HAProxy против Nginx
- Выбирайте HAProxy, если вам нужны расширенные проверки состояния системы, подробные метрики, таблицы сравнения или ресурсоемкие приложения. SSL/TLS offload.
- Выбирать Nginx Если вы предпочитаете привычный стек веб-сервера и прокси или уже используете его для статического контента и кэширования.
Установите HAProxy в Ubuntu/Debian.
Используйте команду `pt` для установки, затем настройте интерфейсы/бэкенд, проверки работоспособности и, при необходимости, другие параметры. SSL прекращение.
sudo apt update
sudo apt install -y haproxy
# Enable HAProxy at boot
sudo systemctl enable haproxy
# Verify version
haproxy -vБазовая балансировка нагрузки HTTP с использованием алгоритма циклического распределения и проверок работоспособности:
# /etc/haproxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
maxconn 50000
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5s
timeout client 50s
timeout server 50s
option http-server-close
option redispatch
retries 3
frontend fe_http
bind *:80
mode http
option forwardfor
default_backend be_app
backend be_app
mode http
balance roundrobin
option httpchk GET /health
http-check expect status 200
server app1 10.0.0.11:80 check
server app2 10.0.0.12:80 check
listen stats
bind *:8404
mode http
stats enable
stats uri /stats
stats refresh 10ssudo haproxy -c -f /etc/haproxy/haproxy.cfg # syntax check
sudo systemctl restart haproxy
sudo systemctl status haproxy --no-pagerДобавить HTTPS (SSL завершение) с помощью Let's Encrypt или вашего собственного пакета сертификатов:
# Concatenate fullchain + private key into a single PEM (PEM must include key)
sudo mkdir -p /etc/haproxy/certs
sudo cat /etc/letsencrypt/live/example.com/fullchain.pem /etc/letsencrypt/live/example.com/privkey.pem | sudo tee /etc/haproxy/certs/example.com.pem > /dev/null
sudo chmod 600 /etc/haproxy/certs/example.com.pem
# Update haproxy.cfg to add HTTPS frontend
frontend fe_https
bind *:443 ssl crt /etc/haproxy/certs/example.com.pem alpn h2,http/1.1
mode http
redirect scheme https code 301 if !{ ssl_fc }
option forwardfor
http-response set-header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
default_backend be_app
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
sudo systemctl reload haproxyДополнительно: включить сохранение состояния для приложений с сохранением состояния (например, устаревших приложений). PHP сессии):
backend be_app
mode http
balance roundrobin
cookie SRV insert indirect nocache
option httpchk GET /health
server app1 10.0.0.11:80 check cookie s1
server app2 10.0.0.12:80 check cookie s2Установите HAProxy на RHEL/AlmaLinux/Rocky.
sudo dnf install -y haproxy
sudo systemctl enable haproxy
sudo systemctl start haproxy
# SELinux: allow HAProxy to make outbound connections if needed
sudo setsebool -P haproxy_connect_any 1
# Firewalld: open HTTP/HTTPS and stats
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --add-port=8404/tcp --permanent
sudo firewall-cmd --reloadУстановите Nginx в качестве балансировщика нагрузки (Ubuntu/RHEL)
Nginx Отлично подходит для балансировки нагрузки на уровне 7 и обратного проксирования. По умолчанию использует пассивные проверки работоспособности (переключается при возникновении ошибок в вышестоящем сервере).
# Ubuntu/Debian
sudo apt update && sudo apt install -y nginx
sudo systemctl enable nginx
# RHEL family
sudo dnf install -y nginx
sudo systemctl enable --now nginx
sudo firewall-cmd --add-service=http --add-service=https --permanent
sudo firewall-cmd --reloadСоздайте блок для балансировки нагрузки HTTP-трафика, включающий вышестоящий и серверный потоки:
# /etc/nginx/conf.d/lb.conf
upstream app_backend {
least_conn;
server 10.0.0.11:80 max_fails=3 fail_timeout=30s;
server 10.0.0.12:80 max_fails=3 fail_timeout=30s;
keepalive 64;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://app_backend;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
location = /health {
access_log off;
add_header Content-Type text/plain;
return 200 "OK";
}
}sudo nginx -t
sudo systemctl reload nginxДля HTTPS установите сертификаты с помощью Certbot или вашего провайдера, либо завершите TLS-соединение. Nginx и перенаправлять обычный HTTP-трафик на бэкэнды.
Высокая доступность: добавьте виртуальный IP-адрес с помощью Keepalived.
Чтобы избежать единой точки отказа, разверните два узла балансировки нагрузки (LB1 и LB2) и используйте между ними виртуальный IP-адрес (VIP) с помощью протокола VRRP (Keepalived). В случае отказа LB1, LB2 автоматически возьмет на себя управление.
# Install Keepalived
# Ubuntu/Debian
sudo apt install -y keepalived
# RHEL family
sudo dnf install -y keepalived
# Allow binding to VIP before assignment (recommended on the LB that runs HAProxy/Nginx)
echo "net.ipv4.ip_nonlocal_bind = 1" | sudo tee /etc/sysctl.d/99-nonlocalbind.conf
sudo sysctl --systemПример конфигурации Keepalived (используйте разные приоритеты на каждом узле; более высокий приоритет имеет значение):
# /etc/keepalived/keepalived.conf (LB1 - MASTER)
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass StrongSecret123
}
virtual_ipaddress {
203.0.113.50/32 dev eth0
}
track_script {
chk_haproxy
}
}
vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
weight -30
}# /etc/keepalived/keepalived.conf (LB2 - BACKUP)
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass StrongSecret123
}
virtual_ipaddress {
203.0.113.50/32 dev eth0
}
track_script {
chk_haproxy
}
}
vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
weight -30
}sudo systemctl enable --now keepalived
ip addr show dev eth0 | grep 203.0.113.50 # VIP should appear on MASTER
# Open VRRP (protocol 112) if your firewall filters it (most clouds allow by default)Укажите свой DNS Записи A/AAAA сохраняются на VIP-адрес. Проверьте переключение на резервный сервер, остановив HAProxy или Keepalived на LB1; VIP-адрес должен переключиться на LB2 в течение нескольких секунд.
Повышение безопасности
- межсетевой экран: Разрешите только порты 80/443 (и 22 с вашего IP-адреса). Ограничьте доступ к конечным точкам статистики по IP-адресу или авторизации.
- ТЛС: Используйте современные шифры, включите HTTP/2, HSTS, OCSP stapling и автоматическое продление подписки Let's Encrypt.
- Заголовки: Установите параметры X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Content-Security-Policy (в зависимости от возможностей вашего приложения).
- Наименьшие привилегии: Запускайте службы от имени пользователя без прав root там, где это поддерживается; следите за обновлением пакетов.
- SELinux/AppArmor: Продолжайте применять ограничения и устанавливайте необходимые логические значения (например, haproxy_connect_any).
Мониторинг и ведение журнала
- HAProxy: Включите конечную точку статистики и экспортер Prometheus (haproxy_exporter). Записывайте логи в syslog, анализируйте их с помощью ELK или Loki.
- Nginx: Журналы доступа/ошибок, а также stub_status или nginx-exporter для Prometheus.
- Синтетические проверки: Мониторинг времени на VIP-серверах и в бэкэндах.
- Производительность: Смотреть CPU, память, дескрипторы файлов и количество соединений.
Проверка балансировщика нагрузки
- Базовая доступность: curl -I http://example.com или https://example.com
- Пересылка заголовка: curl -I -H “Хост: example.com” http://VIP
- Распространение: Временно добавьте заголовок ответа на каждом бэкэнде для идентификации серверов, затем обновите страницу.
- Нагрузка: ab -n 1000 -c 50 https://example.com или siege -c50 -t1M https://example.com
- Отказоустойчивость: Остановите один бэкэнд; трафик должен перенаправляться без ошибок.
# Quick troubleshooting helpers
sudo ss -ltnp | grep -E "80|443|8404"
journalctl -u haproxy -f
journalctl -u nginx -f
journalctl -u keepalived -f
curl -I http://127.0.0.1:8404/stats
nginx -t && haproxy -c -f /etc/haproxy/haproxy.cfgРаспространенные ошибки (и способы их устранения)
- SSL несоответствие: Убедитесь, что порядок ключа и данных в HAProxy PEM корректен; перезагрузите HAProxy после обновления.
- Проверки состояния здоровья не пройдены: Бэкенды должны предоставлять конечную точку с кодом 200 OK (например, /health). Если она публичная, защитите её внутри системы.
- Функция «Залипание сессий» не работает: Подтвердите установку cookie, и приложение будет его учитывать; избегайте удаления cookie из кэширующих слоев.
- Заголовки прокси: Для корректного определения URL-адресов приложений и протокола HTTPS всегда пересылайте заголовки Host и X-Forwarded-*.
- Межсетевой экран блокирует: Откройте порты в ОС и группе безопасности облака. Протокол VRRP (протокол 112) должен передаваться между балансировщиками нагрузки.
- Ошибки привязки VIP: Установите параметр net.ipv4.ip_nonlocal_bind=1 на узлах, которые запускают прокси-серверы до подключения виртуального IP-адреса.
Реальные сценарии
- WordPress в больших масштабах: Прекратить TLS-соединение на HAProxy, кэшировать статические ресурсы в Nginx за ним или CDN, и включайте "липкие" сессии только если ваш PHP Хранилище сессий не централизовано (лучше использовать Redis для сессий).
- Микросервисы API: Используйте HAProxy с маршрутизацией по пути или хосту к нескольким бэкэндам. Добавьте ограничение скорости и автоматические выключатели с помощью таблиц блокировки.
- Развертывание без простоев: Добавьте новые узлы бэкэнда, отключите старые (установите вес 0 или отключите), а затем удалите их после завершения соединений.
YouStable Совет: Инфраструктура, упрощающая балансировку нагрузки
Если вы предпочитаете не manage Каждую деталь выбирайте сами. YouStableАвтора облачный VPS с выделенным сервером vCPUБлагодаря высокой пропускной способности и возможности использования плавающих IP-адресов, HAProxy/Nginx Кластеры просты в использовании. Наша служба поддержки может подсказать лучшие практики. SSLБезопасность и высокая доступность без привязки к конкретному поставщику.
Краткое описание (оптимизированное для поисковых систем): Как установить балансировщик нагрузки на сервер Linux
- Выберите инструмент: HAProxy (расширенный L4/L7) или Nginx (Обратный прокси L7).
- Установите через apt/dnf и включите службу.
- Настройка интерфейса: 80/443 с проверками состояния, заголовками и SSL прекращение.
- Определите бэкэнды: Пул серверов с проверками и возможностью сохранения сессий.
- Безопасность: Усильте защиту TLS, брандмауэра и административных точек доступа.
- Чешуя и гиалуроновая кислота: Добавить второго левого защитника и VIP-персону Keepalived.
- Мониторинг и тестирование: Метрики, журналы и синтетические проверки.
Часто задаваемые вопросы: Установка балансировщика нагрузки на сервер Linux
Что лучше подходит для балансировки нагрузки в Linux: HAProxy или Nginx?
Для большинства производственных сред HAProxy предлагает более сложные проверки работоспособности, расширенную маршрутизацию и подробные метрики. Nginx Отлично, если вы уже используете его в качестве... веб-сервер и нуждаются в простой балансировке уровня L7. Оба варианта хорошо справляются с высокой нагрузкой; выбор следует делать исходя из потребностей в функциях и опыта команды.
В чём разница между балансировкой нагрузки на уровне 4 и уровне 7?
Четвертый уровень (TCP/UDP) пересылает соединения без проверки HTTP-трафика. Он быстрый и эффективный (например, IPVS, HAProxy в режиме TCP). Седьмой уровень понимает HTTP/HTTPS, что позволяет осуществлять маршрутизацию на основе пути, манипулировать заголовками, использовать cookie и т.д. SSL завершение. Используйте L7 для веб-приложений, которым требуется более интеллектуальная маршрутизация.
Как мне добавить SSL к моему балансировщику нагрузки Linux?
Завершайте TLS-соединение на балансировщике нагрузки с помощью сертификатов Let's Encrypt или сертификатов, выданных провайдером. В HAProxy используйте PEM-файл, содержащий полную цепочку соединений и закрытый ключ. NginxУстановите параметры ssl_certificate и ssl_certificate_key. Обеспечьте использование надежных шифров, HTTP/2 и HSTS, а также автоматизируйте продление сертификата.
Как обеспечить высокую доступность балансировщика нагрузки?
Разверните как минимум два узла балансировки нагрузки и назначьте виртуальный IP-адрес с помощью Keepalived/VRRP. DNS к VIP-адресу. В случае отказа основного балансировщика нагрузки резервный автоматически возьмет на себя его функции. Убедитесь, что оба узла используют общие сертификаты и конфигурацию посредством автоматизации.
Нужны ли мне «липкие сессии» для WordPress? PHP Программы?
Предпочтительно использовать централизованные сессии (Redis/Memcached), чтобы любой бэкенд мог обрабатывать любой запрос. Если это невозможно, включите «липкие» сессии в HAProxy (с помощью cookie) или Nginx (ip_hash) в качестве временного решения. В долгосрочной перспективе следует вынести сессии и загрузки за пределы узла, чтобы избежать привязки пользователей к одному узлу.
Как отслеживать состояние балансировщика нагрузки в Linux?
Используйте страницу статистики HAProxy и утилиту haproxy_exporter в Prometheus, или Nginx Ведение логов с помощью nginx-exporter/stub_status. Отслеживание времени ответа, ошибок, количества подключений и состояния бэкэнда. Централизация логов и настройка оповещений о доступности VIP-адресов и сбоях бэкэнда.
Могу ли я использовать один и тот же сервер для балансировки нагрузки и веб-хостинга?
Можно, но разделение ролей повышает надежность, безопасность и масштабируемость. Для небольших сайтов достаточно одного решения. Nginx Может предоставлять статический контент и выступать в качестве прокси для серверов приложений. Для более крупных систем следует выделить балансировщик нагрузки и масштабировать бэкэнды независимо, в идеале на облачном VPS, например, таком как... YouStable.
Следующие шаги
- Начните с установки HAProxy на VPS под управлением Linux и настройте проверки работоспособности.
- Добавить завершение TLS и усиленные заголовки.
- Для обеспечения высокой доступности разверните дополнительный балансировщик нагрузки и функцию Keepalived.
- Автоматизируйте настройку и синхронизацию сертификатов с помощью Ansible.
- Регулярно проводите мониторинг с помощью Prometheus/Grafana и проверяйте отказоустойчивость.
Выполнив описанные выше шаги, вы сможете уверенно установить балансировщик нагрузки на сервер Linux, масштабировать свои приложения и поддерживать высокую доступность. Если вам нужен более быстрый старт, YouStableПлатформа VPS от и экспертная поддержка помогут вам развернуть отказоустойчивую архитектуру с балансировкой нагрузки за считанные часы, а не дни.