четверг, 6 июня 2019 г.

Haproxy/Nginx. Dynamic DNS resolution of backends

Сделана связка Spotinst + Route53 Integration. Идея простая - изменился состав или количество Backend Spot EG, это отразилось в записи Route53, например prod-event.prod-us.local.
Теперь надо сделать для Haproxy DNS resolve для бэков:
Новая секция в haproxy.cfg:

resolvers aws
  parse-resolv-conf
  resolve_retries       3
  timeout resolve       1s
  timeout retry         1s
  hold timeout         10s
  hold valid           10s
  hold obsolete        10s


Очень важно добавить в секцию default:

 default-server          init-addr last,libc,none

Иначе при старте ничего не отрезолвится и будет всегда висеть 0 Backends

И секция для бэков такая например:

backend events
    server-template event 1-3 prod-event.prod-us.local:80 check resolvers aws

ну и hatop покажет список из 3-х серверов, те что живы будут UP.

Для Nginx - кусок из конфига с опциями по теме:
server {
    resolver 127.0.0.1 valid=10s;

    location ~* /(event|callback|rejection) {
      set $backend_servers prod-event.prod-us.local;
      proxy_pass http://$backend_servers:80;
    }

Комментариев нет: