Назад | Перейти на главную страницу

Обратный прокси DNS

Я использую Docker для развертывания множества микросервисов за обратным прокси. Я хотел бы сбалансировать нагрузку на свои микросервисы на основе DNS-запросов, а также разрешить автоматическое переключение при отказе и ребалансировку после запуска прокси.

Я ищу прокси-сервер, который поддерживает балансировку нагрузки между серверами, возвращенными из DNS-запроса. Так, например, test.local возвращает серверы 192.168.1.1, 192.168.1.2, 192.168.1.3, и я хотел бы сбалансировать трафик между ними и выполнить некоторые стандартные функции перенаправления обратного прокси.

Nginx выполняет DNS-запросы при запуске, но не выполняет их периодически и не соблюдает TTL, если у вас нет Nginx Plus, что дорого. Если я периодически перезапускаю свой прокси при смене серверов, он может работать, но это приведет к ошибочным запросам и не будет хорошим решением.

Я посмотрел, можно ли это сделать с помощью Apache, но ничего не нашел.

Любая помощь в настройке будет принята с благодарностью, поскольку это последний кусок головоломки, который мне нужен, чтобы сделать мои серверы отказоустойчивыми.

Вы явно достигли уровня сложности, с которым вы не сможете справиться, используя простой docker больше нет.

На этом этапе вам нужно начать использовать инструмент абстракции более высокого уровня для управления вашими ресурсами. Очевидные варианты:

Вы не предоставляете достаточно подробностей о базовой платформе, которые помогли бы выбрать одну из них. Лично я предпочитаю Kubernetes, потому что я могу абстрагироваться практически от любой платформы, и я могу абстрагироваться еще дальше, чтобы обеспечить возможности более высокого уровня, используя OpenShift или Тектонический.

Kubernetes работает с контейнерами, используя стручок как минимальная единица абстракции. Это позволяет кластеру Kubernetes управлять и направлять трафик в модули на основе различных зондов.

На практике это означает, что вы можете выполнять развертывание новых контейнеров без простоев, позволять Kubernetes создавать новые контейнеры в случае сбоя зонда и даже откатывать развертывание (сине-зеленая стратегия).

Это лишь малая часть того, на что способен Kubernetes. Если интересно, в проекте очень хороший документация.

Ознакомьтесь с этим репозиторием на github, который может удовлетворить ваши требования: https://github.com/StalkR/dns-reverse-proxy

Установите пакет go, создайте пакет Debian, установите:

$ go get -u github.com/miekg/dns
$ go get -u github.com/StalkR/dns-reverse-proxy
$ cd $GOPATH/src/github.com/StalkR/dns-reverse-proxy
$ fakeroot debian/rules clean binary
$ sudo dpkg -i ../dns-reverse-proxy_1-1_amd64.deb

Настроить в /etc/default/dns-reverse-proxy и начнем с /etc/init.d/dns-reverse-proxy Начало.