簡體   English   中英

有什么方法可以使用 node.js 在我的 Kubernetes 應用程序中選舉領導者嗎?

[英]Is there any way we can elect leader in my application in Kubernetes using node.js?

我正在嘗試在我的分布式 node.js 應用程序中實現領導者選舉算法。我使用 Kubernetes 作為容器管理器並部署 docker 容器。我沒有在不同 pod 中運行的其他應用程序實例的主機和端口的詳細信息。

Kubernetes 已經使用領導選舉算法一次選擇一個領導,但我的應用程序在容器和 pod 內,它不知道我是否是領導。 還有一個示例代碼可用於了解誰是當前的領導者。

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

此代碼有助於了解哪個容器是領導者,但它需要一些特殊權限才能調用 kubernetes API。

Bully/Ring 算法可以是一個解決方案,但由於不使用任何隊列/集中式服務(如 redis 或 zookeeper)有限制,因為我們需要另一個進程來運行這些服務,但我可以使用共享文件系統,因為它不需要監控一個額外的過程。

不確定是否可以在不運行新進程的情況下使用 redis/zookeeper,並且可以在應用程序本身內完成。

我如何使用應用程序來實現這個解決方案,或者通過 ping 他們來檢查它是否關閉,然后讓自己掌握。 在這個過程中也會出現很多競爭條件。

我試過用Kubenetes leader算法來選舉leader,但是由於API訪問受限,無法使用。

嘗試過 Bully 算法,但由於容器位於不同的 pod 中,因此它們彼此不知道。

嘗試了 Ring 算法,但與 Bully 算法存在相同的問題。

我希望使用任何算法來實現領導者選舉,但不引入任何新流程。

查看這篇博客文章,了解如何使用 sidecar 模式和 nodejs 應用程序實現這一目標

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM