Здравстуйте,

есть такой сетап:
интернет -> внешний alb -> энджин (ECS-Cluster) -> внутренний alb -> кучка сервисов (ECS-Cluster).

alb меняет время от времени свой айпи адрес, а энджин новый адрес не резольвит. Нашол https://distinctplace.com/2017/04/19/nginx-resolver-explained/. Как узнать айпи адрес резольвера? ЛоадБалансер прикреплён к двум AZ: CIDR 10.180.24.0/21 <http://10.180.24.0/21> и 10.180.32.0/21 <http://10.180.32.0/21>. Правильно ли я понимаю, что конфигурация должна выглядить следующим образом (особенно айпи резольвера при ECS):

        server {
                listen 0.0.0.0:8000 <http://0.0.0.0:8000>;

                location /service {
                        resolver 10.180.24.2 10.180.32.2 valid=5s;
                        set $upstream_endpoint http://${ALB_URL};
                        proxy_pass $upstream_endpoint;
                }

                location /otherservice {
                        resolver 10.180.24.2 10.180.32.2 valid=5s;
[...]

Как я понимаю, то при смене айпи есть вероятность в течении 5ти секунд, что возникнет предыдущая ощибка:

connect() failed (113: No route to host) while connecting to upstream

Как можно избежать этого?

Ну и вопрос удобства. Что можно куда вынести из локейшн? В данный момент конфиг выглядит следующим образом:

        upstream frontend {
                server ${ALB_URL};
        }

        server {
                listen 0.0.0.0:8000 <http://0.0.0.0:8000>;

                location /service {
                        proxy_pass http://frontend;
                }

                location /otherservice {
                        proxy_pass http://frontend;
                }
[...]

И так как блоков сервер и локейшн много, не хотелось бы копипейстить. Где и что можно применять стоит в документации, но вопрос в том, будет ли работать хак с обновлением айпи адреса в резольвере?

С уважением,

Антон


_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить