Вадим
есть nginx c апстримом
location / {
resolver 127.0.0.11 valid=10s;
resolver_timeout 3s;
proxy_pass http:<имя_сервиса>:5000
}
если стартую кластер в compose режиме - имя сервиса резолится в nginx почти сразу - в браузере смотрю http://localhost доступно
если запускаю в режиме swarm - nginx ложится с ошибкой
20/03/02 19:19:22 [emerg] 1#1: host not found in upstream "web-app" in /etc/nginx/nginx.conf
подымает еще один инстанс который опять же ложится и только 3й инстанс успешно резолвит имя сервиса в ip-адрес и все это занимает 20 секунд
где тут собака порылась? )
кто с этим же столкнется - нужно в nginx всего лишь добавить переменную с доменным именем сервиса и затем подставить ее в адрес апстрима
location / {
resolver 127.0.0.11 valid=10s;
resolver_timeout 3s;
set $dns_name = <имя сервиса>;
proxy_pass http://$dns_name:5000
}
When you use a variable to specify the domain name in the proxy_pass directive, NGINX re‑resolves the domain name when its TTL expires.
NGINX startup or reload operation doesn’t fail when the domain name can’t be resolved, and we can control how often NGINX re‑resolves the name.
это же так очевидно !! 😂🙈
swarm не такой уж плохой :)