Я использую 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
Начало.