Tech Recipe Book
My Services
  • Book
    • About the author
    • Architect
      • Algorithms
        • DB index algorithms
          • How does database indexing work
        • Neural network optimization
          • Neural Network Optimization
        • Route search
          • Road network in a database to build a route
          • Traveling Salesman Problem (TSP)
      • Architecture Frameworks
        • DODAF
        • TOGAF
        • Enterprise Architecture (EA) Tools Reviews 2023 | Gartner
      • Zero Trust
      • Billing
        • SHM billing system
      • Bots
        • Discord
        • Telegram
          • Chat GPT Telegram bot
          • Получаем статистику Telegram-канала при помощи api и python или свой tgstat с регистрацией и смс
          • Как хостить телеграм-бота (и другие скрипты на Python) на Repl.it бесплатно 24/7
          • Создание Telegram бота на PHP #1: основные понятия для работы с API
          • Создание Telegram бота на PHP #2: создание первого бота для Telegram
          • Создание Telegram бота на PHP #3: примеры отправки сообщений с кнопками в Telegram
          • Создание Telegram бота на PHP #4: отправка файлов и изображений в Telegram
          • Создание Telegram бота на PHP #5: работа с хуками
      • Business intelligence
      • Cloud Storage
        • Ceph
        • Virtual Distributed File System
      • Cryptography
        • Open Source PKI Software
        • OpenPGP
          • Email Encryption
          • Kleopatra
          • Miscellaneous Tools
          • Server side applications
      • Message broker
        • Kafka
          • Kafka UI-tools
          • Kafka streams ksqlDb
        • RabbitMQ
      • DB
        • MySQL
          • Auto sharding
          • MariaDB Zabbix monitoring
          • MySQL and MariaDB replication with Zabbix monitoring
        • Postgres
          • HA PostgreSQL with Patroni, Haproxy, Keepalived
          • Mass parallel requests - Greenplum
          • PostgreSQL cluster for development and testing
        • Vitess - Scalable. Reliable. MySQL-compatible. Cloud-native. Database.
      • Identity and Access Management (IDM)
        • FreeIPA - Identity, Policy, Audit
        • FreeIPA as an Enterprise solution
        • Keycloak
          • Keycloak HA cluster
        • Open Identity Platform
        • SSO
          • Keycloak for Java app
          • OpenAM
          • OpenIG
      • Firewall
        • nftables
      • Infrastructure As a Code
        • Ansible
        • IaC Packer Ansible Teraform
        • Installing Jenkins using terraform in Kubernetes in Yandex Cloud with letsencypt
        • Teraform Crosplan Pulumi
        • Yandex IaC solutions
      • Kubernetes
        • Installation
          • Install Kubernetes cluster
          • Deploying a Kubespray cluster to OpenStack using Terraform
          • Kube deploy in Yandex cloud
        • Frameworks
          • Deckhouse
            • LDAP authentification
            • On premise Install
            • Yandex Cloud Install
          • K3S
          • OpenShift OKD
          • RKE2
          • Rancher
            • Rancher Install
        • Auth
          • Keycloak in k8s
          • LDAP
        • GUI management Lens
        • Monitoring
          • Monitoring with Falco
          • Network monitoring
          • Nginx ingress
          • Prometheus Graphana for sample Nodejs app
          • Rsource monitoring Avito
        • Exposing services
          • Exposing Kubernetes Services
          • Cilium BGP
        • CNCF
        • Helm
          • Repositories
            • Artifact Hub | official
            • Bitnami | vmware
          • Awesome helm charts and resources
          • Essential Services for Modern Organizations
          • Security and Compliance
          • Additional charts
        • Isolation
          • vcluster - Virtual Kubernetes Clusters
          • Kiosk
          • KubeArmor
          • Control Plane Hardening
          • Hierarchical namespaces
        • Security Center
          • Minesweeper
          • NeuVector by SUSE
          • SOAR in Kubernetes
          • Security Сenter for Kubernetes
        • Terraform CI security
          • Terraform plan analysis with Checkov and Bridgecrew
          • Yandex Terraform scan
        • Vulnerability management
          • Aqua
          • Sysdig
          • Kyverno
          • GitLab
          • NeuVector by SUSE
        • Image scanning
          • Snyk
          • Sysdig
          • Harbor
          • Trivy
        • Signature verification
          • Sigstore
        • Control plane security
          • Gatekeeper
            • Applying OPA Gatekeeper
          • Kyverno
            • Policy as a code. Kyverno
        • Runtime Security
          • Osquery
          • Falco
          • ClamAV
        • Network security
          • Cilium
          • Control Plane Hardening (API restriction)
          • Network policy recipes
          • Service mesh
            • Istio HA, LoadBalance, Rate limit
          • mTLS Autocert
        • Honeypot
          • Building honeypot using vcluster and Falco
        • Backup
          • Kasten K10
        • Secrets
          • Vault CSI Driver
      • Load Balance
        • Nginx
        • HAProxy
          • Proxy methods
          • HAProxy for RDP
          • Payment gateway A/B test with HAProxy
          • HAPRoxy for Percona or Galera
      • Monitoring
        • Zabbix
          • Apache Zabbix
          • Disc Quota
          • Nginx Zabbix
          • SSL certificates Zabix
          • Zabbix notifications
        • Nagios
          • Datacenter monitoring
        • Prometheus and Grafana
      • Windows
        • Sysmon enhanced Windows audit
        • Sysmon to Block Unwanted File
      • Linux
        • Rsync
        • Debian based
          • Apt-Cacher NG
          • Unattended Upgrades in Debian / Ubuntu
        • RedHat basede
          • RPM Server
        • Logs analysis
        • Build armhf qemu
      • NGFW
      • CI/CD
        • DevSecOps
          • DAST
            • Burp
              • Dastardly
            • StackHawk
            • ZAP and GitHub Actions
          • SAST
            • Checkmarx
            • OSV by Google
            • Snyk
            • SonarQube
        • GitLab Runner in Yandex Cloud
        • Dynamic Gitlab Runners in Yandex Cloud
        • GitLab runner in Kubernetes with Werf
        • Kubernetes deploy strategies
        • Kubernetes highload deploy. part 1
        • Kubernetes highload deploy. part 2
        • Kubernetes Argo Rollouts
        • Jenkins in Kubernetes
        • Ansible Semaphore
        • Image storage, scaning and signing
        • Install WireGuard with Gitlab and Terraform
        • CI/CD example fror small web app
        • Threat matrix for CI CD Pipeline
      • SIEM / SOC
        • Datadog
        • Splunk
          • Splunk — general description
        • MaxPatrol
          • MaxPatrol 8 and RedCheck Enterprise
        • QRadar IBM
        • Cloud Native Security Platform (CNAPP) - Aqua
        • OSSIM | AT&T
          • AlienVault (OSSIM) install
        • Wazuh
        • EDR
          • Cortex XDR | Palo Alto Networks
          • Cynet
          • FortiEDR | Fortinet
          • Elastic
        • Elastic
          • Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on Ubuntu 22.04
          • Setting Up Elastic 8 with Kibana, Fleet, Endpoint Security, and Windows Log Collection
        • Threat Intelligence
          • MISP
          • msticpy Microsoft
          • X-Force | IBM
          • Elastic
      • VPN
        • Full-Mesh VPN fastd, tinc, VpnCloud
        • Wireguard
          • WireGuard for Internet access
          • WireGuard on MikroTik and Keenetic
          • WireGuard site to site
        • SoftEther VPN Project
        • Cisco AnyConnect client
        • OpenConnect
        • SSTP python server
      • OS hardening
        • CIS Benchmarks
      • Cloud Providers
      • OpenNebula
        • OpenNebula Edge Cloud - Open Source Cloud & Edge Computing
        • Discover OpenNebula – Open Source Cloud & Edge Computing Platform
        • OpenNebula Multi-Cloud
        • Kubernetes on OpenNebula
        • The Open Source Alternative to Nutanix
        • The Simple Alternative to OpenStack
        • OpenNebula Partner Ecosystem
      • OpenStack
        • Install manual
        • Install with DevStack
      • VM
        • Create a VHD file from a Linux disk
        • Backup / Migration
          • Coriolis
          • Proxmox Backup Server
        • oVirt
        • VMware vCenter
        • Proxmox
      • Docker
        • Container optimization
        • Ubuntu RDP container
      • LXC
        • LXD on Ubuntu 18.04
        • Install, Create and Manage LXC in Ubuntu/Debian
    • Big Data
      • OLAP data qubes
      • Storage and autoscale in Lerua
    • Machine Learning
      • Yandex YaLM 100B. GPT model
      • Kaggle Community Datasts Models
      • AI in video production
      • Image search
      • Chat bots
        • You.com
        • Chat GPT
          • Implementing GPT in NumPy
        • Jailbreak Chat
      • Coding plugins CodeWhisperer
    • Malware
      • Isiaon/Pitraix: Modern Cross-Platform Peer-to-Peer Botnet over TOR
      • theZoo A repository of LIVE malwares
    • Pentest
      • Red Team
        • MITRE ATT&CK matrix
        • C2 Frameworks
          • Brute Ratel C4
          • Cobalt Strike
          • Covenant
          • Havoc Framework
          • Merlin
          • Metasploit
          • Sillenttrinity
          • Sliver
        • Manage and report
          • Dradis Framework
          • Hexway
        • Underground
      • Social engineering
        • Social Engineer Toolkit setoolkit
      • OSINT
        • OSINT for comapny
        • Instagram fishing
      • Forensics
        • Forensics tools
      • Pentesting Methodology
      • Web
      • CI/CD Methodology
      • Cloud Methodology
        • Hacking The Cloud
      • Kubernetes Pentesting
      • Android
        • SSL Unpinning for Android applications
      • iOS
        • SSL unpinning iOS and macOS applications
      • HackBar tool
      • CyberChef Tools
      • Python virtualenv
      • IppSec - YouTube
      • Hacktricks.xyz
    • Compliance
      • 152 ФЗ. Personal data
      • PCI DSS and ГОСТ Р 57580.1-2017
      • Cloud compliance
      • ГОСТ Р 57580.1-2017 для Kubernetes
      • Kubernets as DevSecOps and NIST compliance
      • NIST SP 800-61 cyberincidece control
      • CIS Kubernetes Benchmark v1.6 - RKE2 v1.20
      • CIS Kubernetes Benchmark v1.23 - RKE2
      • Requirements for Russian Banks
      • Tools
        • Chef InSpec
        • Elastic SIEM
    • Asset management
      • CMDBuild
    • Project management
    • Incident management SRE
    • Risk management
      • IT risk management
      • BSI-Standard 200-3
    • Web Dev
      • Cookie security
      • OWASP Top 10 2021
      • Docker nginx php mysql
      • Docker tor hiddenservice nginx
      • Docker Compose wp nginx php mariadb
      • Dependency Checking
        • Nexus Analyzer
        • OWASP dependency-check
      • Yii skeeks cms
      • YiiStudio
    • Art
      • GTK Themes
      • Themes for Xfce Desktop
      • XFCE / Xubuntu Windows 95
      • Moscow events
      • Photo goods
      • Russian style gifts
    • Cryptocurrency
      • News
      • Arbitrage
      • Stocks
      • Exchange aggregators
      • Where to use
      • Prepaid cards
        • BitFree
        • Pyypl Your Money at Your Fingertips
    • IT magazines
      • WIKI and Writeups tools
        • BookStack
        • GitBook
        • MkDocs
        • Wiki.js
        • DokuWiki
    • Languages
    • Learning
      • (ISC)2
        • CISSP
      • Offensive Security
        • OSCP
        • OSEP
        • OSED
      • DevSecOps
        • Certified DevSecOps Professional (CDP)
        • Certified DevSecOps Expert (CDE)
      • Web Security Academy: PortSwigger
    • Relocation
      • London experience
      • IT visas in 2022
      • Remote work
      • Running business in UAE
    • Freenet
      • Independent online services: the philosophy of a free Internet
      • Tor Project Anonymity Online
      • I2P Anonymous Network
    • Services
      • SMS Registration
        • Registering ChatGPT in Russia
      • Local and regional eSIMs for travellers - Airalo
      • Digital busines cards
      • No KYC services and exchanges
Powered by GitBook
On this page
  • Что такое балансировка нагрузки?
  • Что такое балансировка нагрузки Nginx?
  • Преимущества
  • Настраиваем Nginx
  • Установка Nginx
  • Настройка Nginx в качестве балансировщика нагрузки
  • Выбор метода балансировки нагрузки
  • Round Robin
  • Round Robin с добавлением веса
  • Least Connection
  • Least Connection с добавлением веса
  • IP Hash
  • URL Hash
  • Перезапустите Nginx
  • Проксирование HTTP-трафика на группу серверов
  • Балансировка нагрузки с включённым HTTPS
  • Проверка работоспособности
  • Пассивные проверки работоспособности
  • Активные проверки здоровья
  • Самоуправляемый балансировщик нагрузки в сравнении с управляемым сервисом
  • Ограничение количества соединений
  • Заключение

Was this helpful?

  1. Book
  2. Architect
  3. Load Balance

Nginx

Last updated 1 year ago

Was this helpful?

Что такое балансировка нагрузки?

Существует несколько типов балансировщиков нагрузки:

  • Балансировщик нагрузки приложений.

  • Сетевой балансировщик нагрузки.

  • Балансировщик нагрузки шлюза.

  • Классический балансировщик нагрузки.

Также существует множество непосредственно самих балансировщиков нагрузки, и все они имеют различные варианты использования:

В этой статье мы будем рассматривать Nginx.

Что такое балансировка нагрузки Nginx?

Он гарантирует, что ни один сервер не будет перегружен и что все запросы будут обработаны своевременно. Nginx использует различные алгоритмы для определения оптимального распределения трафика, а также может быть настроен для обеспечения отказоустойчивости в случае выхода из строя одного из серверов.

Лично я использую Nginx open source для настройки своих стабилизаторов нагрузки, и именно его я собираюсь показать вам в этой статье.

Преимущества

Балансировка нагрузки помогает масштабировать приложение, справляясь со скачками трафика без увеличения расходов на облако. Она также помогает устранить проблему единой точки отказа. Поскольку нагрузка является распределённой, то в случае сбоя одного из серверов — сервис всё равно продолжит работу.

Настраиваем Nginx

Установка Nginx

Первым шагом является установка Nginx. Он может быть установлен в Debian, Ubuntu или CentOS. Я собираюсь использовать Ubuntu, которую уже настроил на своём виртуальном сервере.

sudo apt-get update
sudo apt-get install nginx

Настройка Nginx в качестве балансировщика нагрузки

Создадим новый файл конфигурации для балансировщика нагрузки:

cd /etc/nginx/sites-available/
sudo nano default
http {
   upstream app{
      server 10.2.0.100;
      server 10.2.0.101;
      server 10.2.0.102;
   }

   # Этот сервер принимает весь трафик на порт 80 и передает его вышестоящему потоку.
   # Обратите внимание, что имя вышестоящего потока и proxy_pass должны совпадать.

   server {
      listen 80;

      server_name mydomain.com;

      location / {
          include proxy_params;

          proxy_pass http://app;

          proxy_redirect off;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";
      }
   }
}

В файле необходимо определить директиву upstream и server. Upstream определяет, куда Nginx будет передавать запросы после их получения. Она содержит IP-адреса группы серверов (бэкенда), на которые могут быть отправлены запросы в зависимости от выбранного метода регулирования нагрузки. По умолчанию Nginx использует метод балансировки round-robin для распределения мощности между серверами.

Сегмент server определяет порт 80, через который Nginx будет получать запросы. Он также содержит переменную proxy_pass.

Переменная proxy_pass используется для указания NGINX, куда отправлять получаемый трафик. В данном случае переменная proxy_pass указывает на 3 сервера. Это позволяет NGINX направлять получаемый трафик на любой из IP-адресов вышестоящих серверов. Nginx одновременно выступает в роли обратного прокси и балансировщика нагрузки.

Обратный прокси — это сервер, который находится между бэкенд-серверами и перехватывает запросы от клиентов.

Выбор метода балансировки нагрузки

Следующий шаг — определение метода распределения нагрузки. Существует несколько методов, которые мы можем использовать. К ним относятся:

Round Robin

Round Robin — это метод балансировки нагрузки, при котором каждому серверу в кластере предоставляется равная возможность обрабатывать запросы. Этот метод часто используется в веб-серверах, где каждый запрос сервера равномерно распределяется между серверами.

Одно из ограничений заключается в том, что некоторые серверы будут простаивать просто потому, что они будут ждать своей очереди. В нашем примере, если A получит задание и выполнит его за секунду, это будет означать, что он будет простаивать до следующего задания. По умолчанию для распределения нагрузки между серверами Nginx использует именно метод round robin.

Round Robin с добавлением веса

Чтобы решить проблему простоя серверов, мы можем использовать server weights (серверные веса), чтобы указать Nginx, какие серверы должны иметь наибольший приоритет. Weighted Round Robin — один из самых популярных методов балансировки нагрузки, используемых сегодня.

Этот метод предполагает присвоение веса каждому серверу, а затем распределение трафика между серверами на основе этих весов. Это гарантирует, что серверы с большей пропускной способностью получат больше трафика, и поможет предотвратить перегрузку какого-либо из серверов.

Для того чтобы включить весовые параметры сервера, нужно обновить конфигурацию Nginx:

http {
   upstream app{
      server 10.2.0.100 weight=5;
      server 10.2.0.101 weight=3;
      server 10.2.0.102 weight=1;
   }

  server {
      listen 80;

      location / {
          proxy_pass http://app;
      }
   }
}

Least Connection

Метод наименьшего числа соединений (Least Connection) — это популярная техника, используемая для равномерного распределения рабочей нагрузки между несколькими серверами. Метод работает путём маршрутизации каждого нового запроса на соединение — на сервер с наименьшим количеством активных соединений. Это гарантирует, что все серверы используются одинаково и ни один из них не перегружен.

http {
   upstream app{
      least_conn;
      server 10.2.0.100;
      server 10.2.0.101;
      server 10.2.0.102;
   }
   server {
      listen 80;

      location / {
          proxy_pass http://app;
      }
   }
}

Least Connection с добавлением веса

Данный метод используется для распределения рабочей нагрузки между несколькими вычислительными ресурсами (такими как серверы) с целью оптимизации производительности и минимизации времени отклика. Этот метод учитывает количество активных соединений на каждом сервере и присваивает соответствующие веса. Целью является распределение рабочей нагрузки таким образом, чтобы сбалансировать нагрузку и минимизировать время отклика.

http {
   upstream app{
      least_conn;
      server 10.2.0.100 weight=5;
      server 10.2.0.101 weight=4;
      server 10.2.0.102 weight=1;
   }
   server {
      listen 80;

      location / {
          proxy_pass http://app;
      }
   }
}

IP Hash

Метод балансировки IP Hash использует алгоритм хэширования для определения того, какой сервер должен получить каждый из входящих пакетов. Это полезно, когда за одним IP-адресом находится несколько серверов, и вы хотите убедиться, что каждый пакет с IP-адреса клиента направляется на один и тот же сервер. Он берёт IP-адрес источника и IP-адрес назначения и создаёт уникальный хэш-ключ. Затем он используется для распределения клиента между определёнными серверами.

Преимущество этого подхода в том, что он может обеспечить более высокую производительность, чем другие методы, такие как round-robin.

http {
   upstream app{
      ip_hash;
      server 10.2.0.100;
      server 10.2.0.101;
      server 10.2.0.102;
   }
   server {
      listen 80;

      location / {
          proxy_pass http://app;
      }
   }
}

URL Hash

Регулировка нагрузки URL Hash также использует алгоритм хэширования для определения того, какой сервер получит каждый из запросов на основе URL.

Он также похож на метод балансировки IP Hash, но разница в том, что мы хэшируем конкретные URL, а не IP. Это гарантирует, что все запросы равномерно распределяются между серверами, обеспечивая лучшую производительность и надёжность.

Перезапустите Nginx

После того как вы настроили регулировщик нагрузки с нужным вам методом балансировки, вы можете перезапустить Nginx, чтобы изменения вступили в силу.

sudo systemctl restart nginx

Проксирование HTTP-трафика на группу серверов

Прокси-сервер — это сервер, который выступает в качестве посредника между клиентом и другим сервером. Прокси-сервер может использоваться для предоставления клиентам доступа к группе серверов, например, группе веб-серверов, путём перенаправления запросов от клиента на соответствующий сервер.

Прямой прокси защищает идентификационные данные клиентов, а обратный прокси защищает данные внутренних серверов.

Прямой прокси

Обратный прокси

Балансировка нагрузки с включённым HTTPS

Распределение нагрузки с включённым HTTPS — это отличный способ повысить производительность вашего сайта. Используя балансировщик, вы можете распределить рабочую нагрузку вашего сайта между несколькими серверами, что поможет снизить потребление ресурсов каждым отдельным сервером.

Кроме того, включив HTTPS, вы можете обеспечить шифрование всех соединений между серверами и посетителями вашего сайта, что поможет обеспечить дополнительную безопасность для вашего сайта.

Проверка работоспособности

Балансировщики нагрузки часто используются для распределения входящего трафика между группой серверов, чтобы избежать перегрузки какого-либо одного сервера. Проверка работоспособности является важной частью обеспечения правильной маршрутизации трафика балансировщиком нагрузки, поскольку она помогает определить, когда сервер не работает или работает неправильно.

Nginx может отслеживать здоровье наших HTTP-серверов в вышестоящей группе. Также он может выполнять пассивные проверки состояния и активные проверки состояния.

Пассивные проверки работоспособности

Nginx анализирует операции по мере их выполнения и пытается восстановить неудачные соединения для пассивной проверки работоспособности. Он идентифицирует сервер как недоступный и временно прекращает передачу запросов к нему, пока тот снова не будет признан активным, если операцию всё ещё невозможно возобновить.

Чтобы пометить вышестоящий сервер как недоступный, нам нужно определить два параметра в директиве upstream: failed_timeout и max_fails.

failed_timeout задаёт время, в течение которого должно произойти определённое количество неудачных попыток, чтобы сервер был помечен как недоступный.

max_fails задаёт количество неудачных попыток.

upstream app{
      server 10.2.0.100 max_fails=3 fail_timeout=60s;
      server 10.2.0.101;
      server 10.2.0.102;
   }

Активные проверки здоровья

Nginx может периодически проверять здоровье вышестоящих серверов, отправляя специальные запросы на проверку здоровья каждому серверу и проверяя правильность ответа.

server {
    location / {
        proxy_pass http://app;
        health_check;
    }
}

Самоуправляемый балансировщик нагрузки в сравнении с управляемым сервисом

Существует два основных типа балансировщиков нагрузки: самоуправляемые и управляемые. Самоуправляемые балансировщики нагрузки обычно дешевле, но для их настройки и обслуживания требуется больше технических знаний. Управляемые балансировщики нагрузки стоят дороже, но часто имеют больше функций и поддержку.

Если вы хотите спокойно спать по ночам 😂, то управляемые балансировщики нагрузки гораздо лучше, так как они избавляют от головной боли, связанной с постоянной отладкой.

Ограничение количества соединений

Одним из способов повышения производительности балансировщика нагрузки является ограничение количества соединений, которые он пытается установить с каждым сервером. Это поможет предотвратить перегрузку балансировщиком одного из серверов и обеспечит равномерное распределение трафика между всеми ними.

Схожи ли обратный прокси и балансировщик нагрузки?

Да, обратный прокси и регулятор нагрузки во многом похожи. Они оба могут использоваться для повышения производительности и доступности веб-сайта или приложения, а также для распределения трафика между несколькими серверами.

Заключение

Балансировка нагрузки подразумевает эффективное распределение входящего сетевого трафика между группой -серверов. Задача же регулятора — распределить нагрузку между несколькими установленными бэкенд-серверами.

— это высокопроизводительный веб-сервер, который также может использоваться в качестве регулятора нагрузки — это процесс распределения веб-трафика между несколькими серверами с помощью Nginx.

Вы можете использовать либо , либо для балансировки нагрузки HTTP-трафика на группу серверов.

Мощность распределяется поочерёдно, что означает, что у каждого сервера будет своё время для выполнения запроса. Например, если у вас есть три сервера, A, B и C, то балансировщик нагрузки сначала распределит нагрузку на A, затем на B и, наконец, на C, прежде чем перераспределить нагрузку на A. Этот метод довольно прост, но имеет некоторую долю ограничений.

Этот метод часто используется в сочетании с другими методами, такими как , для обеспечения равномерного распределения мощностей на все серверы. Сервер приложения с наибольшим параметром веса будет иметь приоритет (больше трафика) по сравнению с сервером с наименьшим числом (весом).

Это очень важный момент в случае . Это позволяет нам, разработчикам, выпускать изменения для отдельной части пользователей, чтобы они могли всё протестировать и предоставить отзывы, прежде чем отправлять их в релиз.

Прокси-сервер также может обеспечивать , что позволяет повысить производительность за счёт снижения необходимости посылать запросы на сервер для каждого просмотра страницы. Nginx может действовать как прямой, так и обратный прокси-сервер. Разница между прямым и обратным прокси заключается в том, что прямой прокси находится перед несколькими клиентами, а обратный прокси — перед несколькими бэкендами.

Однако у него есть и ряд определённых проблем. Одна из них заключается в том, что для каждого запроса необходимо выполнить и , что может привести к задержке ответов.

Я предпочитаю, чтобы мои бэкенд-серверы приложений взаимодействовали с регулятором нагрузки по протоколу HTTP (), а балансировщик нагрузки взаимодействовал с клиентами по протоколу HTTPS. Таким образом, при маршрутизации запросов к серверам приложений не нужно учитывать TLS-рукопожатия и поиск DNS.

К сожалению, я не использовал активные проверки здоровья, поскольку они, похоже, применимы только для Nginx Plus. Подробнее об активных проверках здоровья вы можете прочитать .

Балансировка нагрузки — это хороший способ распределения запросов между приложений. Он обеспечивает высокую доступность и гарантирует постоянную работоспособность сервера. Использование балансировщика Nginx для распределения нагрузки выгодно ещё и потому, что он служит как обратным прокси, так и балансировщиком нагрузки. Он также имеет открытый исходный код, поэтому вы всегда сможете получить от Nginx именно то, что нужно вам. Надеюсь, эта статья помогла вам настроить балансировщик нагрузки Nginx.

бэкенд
Haproxy
Nginx
mod_athena
Varnish
Balance
Linux Virtual Server (LVS)
Nginx
Nginx open source
Nginx Plus
вышестоящих
Session Persistence
развёртывания canary
кэширование
TLS-рукопожатие
поиск DNS
SSL-терминация
здесь
инстансами
https://habr.com/ru/companies/first/articles/683870/