LINUX.ORG.RU
ФорумAdmin

nginx upstream. как переключиться на постоянку?

 


0

1

Приветствую! Есть два сервера приложений дублирующие друг друга. Работают на портах 8080 и 8081. Стали странно зависать - соединение по порту создают, но не отвечают (виснут не одновременно).

Задача настроить nginx upstream что бы переключал запросы от зависшего - рабочему.

upstream up_svet {
    server 127.0.0.1:8080 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8081 max_fails=1 fail_timeout=5s backup;
}

server {
listen       80;
server_name svet.ru;

 location /platform {
#       proxy_pass http://localhost:8080/platform;
        proxy_pass http://up_svet;
        proxy_redirect default;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        add_header Front-End-Https on;
        proxy_buffering off;
        proxy_connect_timeout       40;
        proxy_send_timeout          40;
        proxy_read_timeout          40;
        send_timeout                40;
#        proxy_next_upstream error timeout;

    }

При отключенном 8080 - переключение на 8081 работает идеально.

При зависшем 8080 переключение работает НО! каждый следующий запрос опять идёт в 8080 и ждёт тайм аута 40 сек. Пользоваться сайтом не возможно.

Приложу лог:

40.006, 0.002|24/Jul/2019:09:30:04 +0300|192.168.98.14|192.168.98.88:8080, 127.0.0.1:8081|"GET /platform/javax.faces.resource/theme.css.xhtml?ln=primefaces-platform-P1Platform HTTP/1.1"|304|40.006, 0.002
40.000, 0.002|24/Jul/2019:09:30:04 +0300|192.168.98.14|127.0.0.1:8080, 192.168.98.88:8081|"GET /platform/javax.faces.resource/css/layout.less.xhtml?ln=primefaces-platform-P1Platform HTTP/1.1"|304|40.000, 0.002
0.000, 0.000, 0.002|24/Jul/2019:09:30:04 +0300|192.168.98.14|[::1]:8081, [::1]:8080, 192.168.98.88:8081|"GET /platform/javax.faces.resource/fonts/RubikRegular.ttf.xhtml?ln=primefaces-platform-P1Platform HTTP/1.1"|304|0.000, 0.000, 0.002
0.001|24/Jul/2019:09:30:04 +0300|192.168.98.14|127.0.0.1:8081|"GET /platform/javax.faces.resource/fa/fontawesome-webfont.woff2.xhtml?ln=primefaces&v=6.2?v=4.7.0 HTTP/1.1"|304|0.001
0.039|24/Jul/2019:09:30:05 +0300|192.168.98.14|127.0.0.1:8081|"GET /platform/catalogfile/cons_libraryFiles/PTSansRegular/PT_Sans-Web-Regular.ttf HTTP/1.1"|200|0.039
0.002|24/Jul/2019:09:30:05 +0300|192.168.98.14|192.168.98.88:8081|"GET /platform/javax.faces.resource/images/resize.png.xhtml?ln=primefaces-platform-P1Platform HTTP/1.1"|304|0.002
0.004|24/Jul/2019:09:30:06 +0300|192.168.98.14|127.0.0.1:8081|"GET /platform/catalogfile/cons_libraryFiles/calendarIcon/calendarIcon.png HTTP/1.1"|200|0.004
1.389|24/Jul/2019:09:30:06 +0300|192.168.98.14|192.168.98.88:8081|"GET /platform/dmsfile/3db34fb2-1111-4a93-ba4d-c5497916ef55 HTTP/1.1"|200|1.389
40.004, 40.000, 0.001, 0.104|24/Jul/2019:09:34:45 +0300|192.168.98.254|127.0.0.1:8080, 192.168.98.88:8080, [::1]:8080, 127.0.0.1:8081|"GET /platform/portal/cons_main HTTP/1.1"|200|40.004, 40.000, 0.001, 0.104
0.002|24/Jul/2019:09:34:46 +0300|192.168.98.254|192.168.98.88:8081|"GET /platform/javax.faces.resource/theme.css.xhtml?ln=primefaces-platform-P1Platform HTTP/1.1"|304|0.002
0.000, 0.002|24/Jul/2019:09:34:46 +0300|192.168.98.254|[::1]:8081, 127.0.0.1:8081|"GET /platform/javax.faces.resource/css/add.less.xhtml?ln=primefaces-platform-P1Platform HTTP/1.1"|304|0.000, 0.002
0.001|24/Jul/2019:09:34:46 +0300|192.168.98.254|192.168.98.88:8081|"GET /platform/javax.faces.resource/css/layout.less.xhtml?ln=primefaces-platform-P1Platform HTTP/1.1"|304|0.001
0.001|24/Jul/2019:09:34:46 +0300|192.168.98.254|127.0.0.1:8081|"GET /platform/javax.faces.resource/css/mini-screen.less.xhtml?ln=primefaces-platform-P1Platform HTTP/1.1"|304|0.001
0.001|24/Jul/2019:09:34:46 +0300|192.168.98.254|192.168.98.88:8081|"GET /platform/javax.faces.resource/components.css.xhtml?ln=primefaces&v=6.2 HTTP/1.1"|304|0.001
0.001|24/Jul/2019:09:34:46 +0300|192.168.98.254|192.168.98.88:8081|"GET /platform/javax.faces.resource/screen.css.xhtml?ln=css HTTP/1.1"|304|0.001
0.001|24/Jul/2019:09:34:46 +0300|192.168.98.254|127.0.0.1:8081|"GET /platform/javax.faces.resource/fileupload/fileupload.css.xhtml?ln=primefaces&v=6.2 HTTP/1.1"|304|0.001

Тут видно что он сначала стучится на 8080 - виснет там ожидая тайм аута 40сек и потом переключает. Я могу уменьшить тайм ауты, но это не дело.

Не обходимо как то исключать «зависший» сервер из приоритета.

Буду рад любым подсказкам - спасибо!



Последнее исправление: ishk0 (всего исправлений: 1)

Вам нужно увеличить fail_timeout. Читайте документацию к этим опциям

goingUp ★★★★★
()

Можно просто убрать backup и nginx не будет пытаться постоянно вернуться к первому сервису.

А если хочется. То делай его третьим или четвёртым в списке. В идеале на разных хостах)

WoozyMasta
()
Ответ на: комментарий от WoozyMasta

Боюсь это не работает. Так как соединение по порту 8080 (с зависшим сервером) создаётся, а fail_timeout игнорируется вообще.

Я пробовал вместо backup ставить weight или не ставить ничего. Но он всё равно начинает с 8080 и висит пока не провисит весь

proxy_connect_timeout 40

потом загружает страницу. И при запросе следующей страницы, снова начинает ждать 8080 ((

ishk0
() автор топика
Ответ на: комментарий от ishk0

Скажите, а есть команда linux или nginx, разорвать все соединения по порту 8080 ?

(я просто придумал как curl`ом проверять завис сервер или нет. Написал скриптик и мне бы разрывать зависшие соединения 80800

ishk0
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.