使用 serf 管理服务器和 Docker 容器

使用 serf 管理服务器和 Docker 容器

我使用 Serf 来代替将容器链接在一起,这样我就可以重新启动 Docker 容器而不会断开链接。在每台服务器上,我运行一个容器,该容器暴露了 Serf 端口,其他每个本地容器都链接到该端口,然后使用 Serf 发现其他本地容器。这在单个服务器上运行良好,但我想链接两台服务器并让它们发现在两台服务器上运行的服务,这样我最终就可以根据需要引入另一台从属服务器。

问题是,一旦我通过运行 serf join 和其他服务器的 IP 将它们连接起来,它们就会取得联系,但随后立即看到另一台服务器及其容器出现故障,这是合乎逻辑的。

我能做些什么,只使用一个集群来同时容纳容器和服务器吗?或者除了我自己的解决方案之外,我还能使用其他什么来在服务器和容器之间进行通信?

答案1

你正在寻找的是 Serf 的对应产品,也是由 Hashicorp 开发的,名为领事。事实上,Consul 使用 Serf 库来实现一些基本功能,但它用于更高级别的编排,特别是 Serf 管理的集群。根据我的经验,Serf 非常适合在单个主机上编排容器,而 Consul 非常适合编排主机本身,可以按照您想象的方式有效地连接您的 Serf 实例(Consul 文档对此使用的术语是“数据中心感知”行为)。

相关内容