Welcome! Log In Create A New Profile

Advanced

host not found in upstream: не появилась возможность игнорировать?

March 16, 2017 09:56AM
Здравствуйте.

У нас крутится nginx в докере, и проксирует запросы на большое количество сервисов, тоже в контейнерах.
Все это хозяйство объединено в Docker overlay network, и адресация идет не по реальным хостнеймам, а по именам/алиасам докер-контейнеров (DNS-резолвинг обеспечивает сетевая инфраструктура докера).

Конфиг примерно такой:

upstream my_upstream1 {
server DOCKER_CONTAINER1:8080 max_fails=0;
server DOCKER_CONTAINER2:8080;
keepalive 32;
}

# еще куча апстримов
upstream my_upstream2...
upstream my_upstream3...

server {
server_name myurl.com;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
location / {
proxy_pass http://my_upstream1;

#также пробовали вариант с переменной
set $my_var my_upstream1;
proxy_pass http://$my_var;
}
}

Проблема, наверное, уже понятна: если хоть один контейнер исчезает (упал, удалили, машина провалилась под землю, whatever), то соответствующее имя не резолвится и NGINX крэшится при старте.
Подчеркну, что проблема не в резолвере - он работает совершенно верно, исчезнувший контейнер и не должен резолвиться - всё, его нет, и докер убирает соответствующую запись из своего DNS.

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

Можно ли что-то сделать - на уровне штатного конфига - чтобы NGINX всё же стартовал?
В гугле пишут, что либо ничего не сделать, либо использовать переменную в proxy_pass - но нам не помогло. Если хоть одно имя хоть в одном upstream не резолвится, NGINX не стартует.
Может быть, появился какой-то новый workaround?

Если нет, то, насколько я понимаю, остается вариант цеплять к NGINXу дополнительный DNS, который все эти апстримы будет резолвить хоть бы на 127.0.0.1?

Большое спасибо.
Subject Author Posted

host not found in upstream: не появилась возможность игнорировать?

obolobova March 16, 2017 09:56AM

Re: host not found in upstream: не появилась возможность игнорировать?

Valery Kholodkov March 16, 2017 10:26AM

Re: host not found in upstream: не появилась возможность игнорировать?

obolobova March 16, 2017 03:19PM

Re: host not found in upstream: не появилась возможность игнорировать?

Vladimir Homutov March 16, 2017 03:28PM

Re: host not found in upstream: не появилась возможность игнорировать?

Valery Kholodkov March 16, 2017 04:46PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 67
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready