有什么方法可以使用node.js在Kubernetes中选出我的应用程序的领导者?

时间:2019-05-06 13:22:08

标签: javascript node.js distributed-system bully-algorithm

我试图在我的分布式node.js应用程序中实现领导者选举算法。我使用Kubernetes作为容器管理器并部署docker容器。我没有运行在不同Pod中的其他应用程序实例的主机和端口的详细信息

Kubernetes已经使用了领导者选举算法来一次选择一个领导者,但是我的应用程序位于容器和吊舱内,它不知道我是否是领导者。还提供了一个示例代码来了解谁是当前领导者。

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

此代码有助于了解哪个容器是领导者,但它需要一些特殊特权才能调用kubernetes API。

Bully / Ring算法可以是一个解决方案,但是由于不使用Redis或zookeeper等队列/集中式服务存在一个限制,因为我们需要另一个进程来运行这些服务,但是我可以使用共享文件系统,因为它不会需要监视额外的过程。

不确定是否可以在不运行新进程的情况下使用redis / zookeeper,并且可以在应用程序内部完成。

我如何通过对应用程序执行ping操作以检查其是否关闭然后使其掌握才能使用该应用程序实施该解决方案。在此过程中,还会发生很多比赛情况。

我尝试过使用Kubenetes领导者算法选举领导者,但是由于对API的访问受限,因此无法使用。

尝试了Bully算法,但是由于容器位于不同的容器中,因此它们彼此之间不会相互了解。

尝试过环形算法,但与欺负算法相同。

我希望使用任何算法来实现领导人选举,但不会引入任何新流程。

1 个答案:

答案 0 :(得分:0)

查看此blog post,了解如何通过使用 sidecar 模式和 nodejs 应用程序来实现这一点