Проксирование на aws/alb

Anton Bessonov exelib на gmail.com
Чт Май 25 10:37:50 UTC 2017


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

есть такой сетап:
интернет -> внешний 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;
                 }
[...]

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

С уважением,

Антон


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20170525/57d21eaa/attachment.html>


Подробная информация о списке рассылки nginx-ru