Dynami c служба маршрутизации на Docker роя - PullRequest
0 голосов
/ 04 мая 2020

Мне нужно найти способ динамической маршрутизации запросов к указанному c контейнеру моей службы. Я сделаю упрощенный пример моего приложения, чтобы помочь вам понять. У меня есть служба API отдыха, работающая на рое Docker. API имеет две конечные точки.

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

Итак, допустим, я масштабирую свой сервис до 3 экземпляров и новый запрос первая конечная точка приходит. Запрос, например, попадает во второй экземпляр 3. Через некоторое время приходит второй запрос с session_id, который был создан ранее, в качестве аргумента пути. Этот запрос должен также go ко второму экземпляру.

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

Кто-нибудь знает, как мне добиться функциональности как это? Заранее благодарю за любую помощь!

1 Ответ

0 голосов
/ 06 мая 2020

Вы ищете балансировщик нагрузки с поддержкой постоянных / липких сеансов.

Docker Enterprise поддерживает это, настраивая липкие сеансы при создании службы.

$> docker service create \
 --name demo \
 --network demo \
 --detach=false \
 --replicas=5 \
 --label com.docker.lb.hosts=demo.local \
 --label com.docker.lb.sticky_session_cookie=session \
 --label com.docker.lb.port=8080 \
 --env METADATA="demo-sticky" \
 ehazlett/docker-demo

См. https://docs.docker.com/ee/ucp/interlock/usage/sessions/ для получения дополнительной информации.

Этого также можно добиться с помощью балансировщика нагрузки Traefik . См. Развертывание ваших веб-приложений с отслеживанием состояния в Docker Swarm с использованием Traefik Sticky Sessions , чтобы узнать, как это настроить.

...