Welcome! Log In Create A New Profile

Advanced

Проблемы с proxy_connect_timeout

August 07, 2017 07:30AM
Всем привет, не могу понять некоторые аспекты директивы proxy_connect_timeout из ngx_stream_proxy_module и ngx_http_proxy_module, это по сути одна директива которая всегда работает по одному принципу? почему она входит в состав двух различных модулей?

Опишу сложившуюся ситуацию: есть 2 сервера (соответственно 2 адреса), на каждом крутится несколько бэкендов, у каждого бэкенда свой порт который он слушает (около пяти портов на адресе). Организована балансировка без весов с помощью least_conn подобным образом:
upstream backend_service {
least_conn;
server backend-server1.vds.com:7000 max_fails=1 fail_timeout=5;
server backend-server1.vds.com:7001 max_fails=1 fail_timeout=5;
server backend-server2.vds.com:7000 max_fails=1 fail_timeout=5;
server backend-server2.vds.com:7001 max_fails=1 fail_timeout=5;

Бэкенды крутятся как сервисы systemd и в силу различных причин такое иногда бывает что один из сервисов может упасть и не подняться, или может потребуется его остановить. Дело в том, что в такой ситуации балансировщик кидает пользователя на апстрим, который в момент запроса лежит, при этом сам сервер на котором крутится бэкенд работает и порт для бэкенда открыт, соответственно proxy_connect_timeout почему-то не срабатывает, видимо его волнует лишь доступность сервера и открыт ли порт, а что там дальше -нет. Соответственно при запросе пользователь ждет 60с, которые выставлены по умолчанию в proxy_read_timeout, апстрим маркируется как упавший, отрабатывает fail_timeout=5 и все по-новой, а наша цель перекинуть пользователя на рабочий бэкенд как только понятно что тот к которому он пытается подключиться лежит.
Возникает вопрос - это нормальное поведение? Есть-ли способы разрешить мою ситуацию без сложных костылей?
И да, выставить значение proxy_read_timeout поменьше я не могу - нужно учитывать низкое качество соединения у пользователя, и низкое значение этой директивы может его просто зациклить в перекидывании туда-сюда (или нет?).
Спасибо.
Subject Author Posted

Проблемы с proxy_connect_timeout

d.sibilkov August 07, 2017 07:30AM

Re: Проблемы с proxy connect timeout

Maxim Dounin August 07, 2017 10:42AM

Re: Проблемы с proxy connect timeout

d.sibilkov August 08, 2017 11:13AM

Re: Проблемы с proxy connect timeout

Maxim Dounin August 08, 2017 11:44AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 284
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready