<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Здравстуйте,
<div class="moz-forward-container">
<div dir="ltr">
<div><br>
</div>
<div>есть такой сетап:</div>
<div>интернет -> внешний alb -> энджин (ECS-Cluster) ->
внутренний alb -> кучка сервисов (ECS-Cluster).</div>
<div><br>
</div>
<div>alb меняет время от времени свой айпи адрес, а энджин новый
адрес не резольвит. Нашол <a moz-do-not-send="true"
href="https://distinctplace.com/2017/04/19/nginx-resolver-explained/">https://distinctplace.com/2017/04/19/nginx-resolver-explained/</a>.
Как узнать айпи адрес резольвера? ЛоадБалансер прикреплён к
двум AZ: CIDR <a moz-do-not-send="true"
href="http://10.180.24.0/21">10.180.24.0/21</a> и <a
moz-do-not-send="true" href="http://10.180.32.0/21">10.180.32.0/21</a>.
Правильно ли я понимаю, что конфигурация должна выглядить
следующим образом (особенно айпи резольвера при ECS):</div>
<div><br>
</div>
<div>
<div> server {</div>
<div> listen <a moz-do-not-send="true"
href="http://0.0.0.0:8000">0.0.0.0:8000</a>;</div>
<div><br>
</div>
<div> location /service {</div>
<div> resolver 10.180.24.2 10.180.32.2
valid=5s;<br>
</div>
<div> set $upstream_endpoint
<a class="moz-txt-link-freetext" href="http://$">http://$</a>{ALB_URL};<br>
</div>
<div> proxy_pass $upstream_endpoint;</div>
<div> }</div>
</div>
<div>
<div><br class="gmail-Apple-interchange-newline">
location /otherservice {</div>
<div> resolver 10.180.24.2 10.180.32.2
valid=5s;</div>
</div>
<div>[...]</div>
<div><br>
</div>
<div>
<div>Как я понимаю, то при смене айпи есть вероятность в
течении 5ти секунд, что возникнет предыдущая ощибка:</div>
<div><br>
</div>
<div>connect() failed (113: No route to host) while connecting
to upstream</div>
<div><br>
</div>
<div>Как можно избежать этого?</div>
</div>
<div><br>
</div>
<div>
<div>Ну и вопрос удобства. Что можно куда вынести из локейшн?
В данный момент конфиг выглядит следующим образом:</div>
<div><br>
</div>
<div> upstream frontend {</div>
<div> server ${ALB_URL};</div>
<div> }</div>
<div><br>
</div>
<div> server {</div>
<div> listen <a moz-do-not-send="true"
href="http://0.0.0.0:8000">0.0.0.0:8000</a>;</div>
<div><br>
</div>
<div> location /service {</div>
<div> proxy_pass <a
moz-do-not-send="true" href="http://frontend"><a class="moz-txt-link-freetext" href="http://frontend">http://frontend</a></a>;</div>
<div> }
<div><br>
</div>
<div> location /otherservice {</div>
<div> proxy_pass <a
moz-do-not-send="true" href="http://frontend"><a class="moz-txt-link-freetext" href="http://frontend">http://frontend</a></a>;</div>
<div> }</div>
</div>
<div>[...]</div>
<div><br>
</div>
<div>И так как блоков сервер и локейшн много, не хотелось бы
копипейстить. Где и что можно применять стоит в
документации, но вопрос в том, будет ли работать хак с
обновлением айпи адреса в резольвере?</div>
</div>
<div><br>
</div>
<div>
<div>С уважением,</div>
<div><br>
</div>
<div>Антон</div>
</div>
</div>
<br>
</div>
<br>
</body>
</html>