Настройка keepalive как аналог OneConnect profile от F5#
Для повторного использования уже открытых TCP-соединений с серверами бэкенда используйте механизм keepalive.
Особенности:
Если в upstream-группе определено несколько серверов, то keepalive-соединения устанавливаются с каждым из них в соответствии с выбранным методом балансировки.
Мастер-процесс запускает несколько рабочих процессов в зависимости от настройки директивы worker_processes и у каждого рабочего процесса будет собственный пул keepalive-соединений:
Если все запросы обрабатывает один рабочий процесс, то они могут проксироваться в одно и то же установленное соединение.
Если запросы распределяются между несколькими рабочими процессами, то для каждого процесса формируются свои keepalive-соединения с бэкендом.
Настройка#
Задайте директиву keepalive в
upstream
.Пример:
upstream http_backend { server 192.168.0.1; server 192.168.0.2; keepalive 32; }
Для HTTP установите директиву proxy_http_version в
1.1
, а поле заголовкаConnection
в proxy_set_header очистите:Пример:
server { # ... location / { proxy_pass http://http_backend; proxy_http_version 1.1; proxy_set_header Connection ""; # ... } }
Если требуется разделять потоки по IP-адресам, используйте привязку по sticky learn в группе upstream в сочетании с директивой geo.
Пример:
geo $idmask { ranges; default ZZ; 10.21.0.0-10.21.0.255 tau; 10.21.4.0-10.21.4.255 chi; 10.21.8.0-10.21.8.255 alpha; 10.21.20.0-10.21.20.255 nu; } upstream http_backend { server 10.21.8.6:80; server 10.21.8.13:80; sticky learn create=$idmask lookup=$idmask zone=client_sessions:1m timeout=60s; keepalive 32; } server { listen 10.21.8.8:80; server_name localhost; location / { proxy_http_version 1.1; proxy_set_header Connection ""; proxy_pass http://http_backend; } }
В этом случае в пределах одного рабочего процесса поведение Angie ADC будет очень похоже на механизм OneConnect в F5 BIG-IP.