Я развертываю 3-х уровневое приложение с использованием Docker Swarm, похожее на:
--> BACK01-01 -- --> BACK02-01
| | |
FRONTEND-01 ----------------> BACK01-02 --------> BACK02-02
| | |
--> BACK01-03 -- --> BACK02-03
Frontend Back Service 01 Back Service 02
Это рой из 3 узлов, где каждая служебная задача *-01
выполняется на manager-node
, каждая служебная задача *-02
выполняется на worker-node-01
, а каждая служебная задача *-03
выполняется на worker-node-02
Все коммуникации между службами используют GRPC и создают новое соединение для каждого запроса.
Все, что я хочу с этим, - это распределить нагрузку по каждой реплике.
Последовательно я сделал запрос к frontend
, который делает запрос к back01
, который делает запрос к back02
. Но после 50 запросов все внутренние запросы, направленные к back01-03
и back02-03
, а другие никогда не были достигнуты.
Я использовал конфигурацию службы по умолчанию, и стек был развернут с использованием portainer GUI
Есть что-то, чего я не понимаю?
P.S .: Я проверил баланс нагрузки службы с помощью простого сервера HTTP и GRPC, возвращающего идентификатор контейнера, с 4 репликами в одном узле, и каждый из них возвращал последовательно.