Балансировка нагрузки является очень полезным методом для распределения входящего сетевого трафика через ряд серверов. С помощью этого метода вы можете уменьшить использование ресурсов, снизить время отклика и избежать перегрузки сервера. На этом уроке, мы будем направим вас через этапы настройки балансировки нагрузки в Nginx на Linux.
Балансировка нагрузки в Nginx является одним из наиболее эффективных вариантов, доступных для достижения полного резервирования приложений, и это относительно легко и быстро установить. Мы настроим балансировку нагрузки Nginx с использованием круговых механизмов Робина. Таким образом, он будет пересылать все запросы на соответствующий сервер, включенный в конфигурацию Nginx.
Давайте начнем с установки и настройки.
Войдите на сервер в качестве пользователя root
ssh root@IP_Address
и убедитесь, что все пакеты, установленные на сервере в актуальном состоянии
apt-get update && apt-get upgrade
Нам нужен веб-сервер Nginx, установленный на Linux VPS. Выполните следующую команду, чтобы установить Nginx
apt-get install nginx
После установки, проверьте, что веб-сервер активен
service nginx status ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running)
Теперь откройте конфигурационный файл Nginx вашего сайта текстовым редактором vim
vim /etc/nginx/sites-available/yourdomain.ru.conf
и добавьте конфигурацию балансировки нагрузки в верхнюю часть файла
upstream loadbalancer { server vps1.yourdomain.ru; server vps2.yourdomain.ru; server vps3.yourdomain.ru; }
Вы должны установить порт 80 на всех серверах, перечисленных выше Nginx.
В том же файле конфигурации yourdomain.ru.conf нам нужно добавить модуль upstream в конфигурацию virtualhost
server { location / { proxy_pass http://loadbalancer; } }
Сохраните файл и перезапустите Nginx для того, чтобы изменения вступили в силу.
service nginx restart
Эта конфигурация будет в равной степени распределить весь входящий трафик по всем трем серверам (vps1.yourdomain.ru, vps2.yourdomain.ru, vps3.yourdomain.ru). Nginx может быть также выполнен с возможностью более эффективно распределять трафик. Он поставляется с опциями балансировки, такие как weight balancing, max fails и IP hash balancing.
Мы можем использовать эту опцию, чтобы указать часть трафика распределятся по каждому из серверов, которые мы перечислили в upstream.
Например:
upstream loadbalancer { server vps1.yourdomain.ru weight=1; server vps2.yourdomain.ru weight=2; server vps3.yourdomain.ru weight=5; }
В этом примере, vps2.yourdomain.ru получит в два раза больше трафика по сравнению с vps2.yourdomain.ru и vps3.yourdomain.ru получит в пять раз больше трафика, чем vps1.yourdomain.ru.
Если вы используете настройки Nginx по умолчанию, он будет посылать данные на серверы, даже если они упали. Мы можем использовать опцию Max fails для возможности предотвратить такие случаи.
upstream loadbalancer { server vps1.yourdomain.ru max_fails=4 fail_timeout=20s; server vps2.yourdomain.ru weight=2; server vps3.yourdomain.ru weight=4; }
В приведенном выше примере, Nginx будет пытаться подключиться к vps1.yourdomain.ru и если он не отвечает на запросы в течение более 20 секунд, он сделает еще одну попытку. После четырех попыток vps1.yourdomain.ru будет рассматриваться как нерабочий.
С помощью этого метода, посетители всегда будут отправлены на тот же сервер. Таким образом, если посетитель получил содержание vps1.yourdomain.ru, то он будет всегда передается на этот сервер, если только серверы не упали или недоступны.
upstream loadbalancer { ip_hash; server vps1.yourdomain.ru; server vps2.yourdomain.ru; server vps3.yourdomain.ru down; }
В этом примере, vps3.yourdomain.ru, как известно, недоступен, и он помечен как упал.
PS. Если вам понравился этот пост, пожалуйста поделитесь им с друзьями в социальных сетях помощью кнопок на левой стороне поста или просто оставьте комментарий ниже. Заранее благодарю.