Есть ли способ, которым мы можем выбрать лидера в моем приложении в Kubernetes, используя node.js? - PullRequest
1 голос
/ 06 мая 2019

Я пытаюсь реализовать алгоритм выбора лидера в своем распределенном приложении node.js. Я использую Kubernetes в качестве диспетчера контейнеров и развертываю контейнеры Docker. У меня нет сведений о хосте и порте других экземпляров приложения, работающих в разных модулях. .

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

https://github.com/kubernetes-retired/contrib/tree/master/election

Этот код помогает узнать, какой контейнер является лидером, но для вызова kubernetes API требуются особые привилегии.

Алгоритм Bully / Ring может быть решением, но поскольку существует ограничение не использовать какие-либо очереди / централизованные сервисы, такие как redis или zookeeper, так как нам нужен другой процесс для их запуска, но я могу использовать общую файловую систему, так как она не будет требуется мониторинг дополнительного процесса.

Не уверен, возможно ли использовать redis / zookeeper без запуска нового процесса, и это можно сделать внутри самого приложения.

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

Я попробовал алгоритм лидера Kubenetes, чтобы выбрать лидера, но из-за ограниченного доступа к API его невозможно использовать.

Алгоритм Tried Bully, но поскольку контейнеры находятся в разных модулях, они не знают друг о друге.

Алгоритм Tried Ring, но такая же проблема, как и у алгоритма Bully.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...