【问题标题】:Docker Swarm - Route a request to ALL containersDocker Swarm - 将请求路由到所有容器
【发布时间】:2020-08-27 14:51:57
【问题描述】:

有没有什么方法可以将传入请求广播到集群中的所有容器?

编辑:更多信息

我有一个包含许多 docker 容器的分布式应用程序。客户端可以向 swarm 发送请求并让它响应。但是,在某些情况下,客户端需要更改所有服务器实例上的状态,因此我需要能够广播消息或让所有 Docker 容器相互通信,类似于我正在尝试的 MPI避免。

【问题讨论】:

  • 你能详细说明你的用例吗?
  • @johnharris85 我添加了更多信息,尽管我相信这个问题是独立的,不受任何特定用例的约束。
  • 辅助问题是独立的,但价值不仅仅在于“回答问题”,它在于解决问题,有时了解正在解决的问题很有用。
  • @johnharris85 公平点。

标签: docker docker-swarm


【解决方案1】:

没有将单播数据包转换为多播数据包的内置方法,也没有任何常见的第 3 方做法(我见过或听说过)。

我不确定“更改所有服务器实例的状态”是什么意思。我们是在谈论单个服务中所有容器的运行状态吗? 还是实际的底层操作系统?所有服务上的所有容器?等等

在不了解您的用例的情况下,我会说最好设计一些东西,让一个 Swarm 服务接收请求,然后将其存储在一个队列系统中,由后端工作人员接收并“更改所有服务器实例上的状态”。

【讨论】:

  • 我明白了。所以基本上使用后台工作人员轮询消息?为了回答您的问题,它正在更改在单个服务中的所有容器上运行的所有服务器进程的运行时配置。用 HAProxy 替换入口负载平衡器并重新发送请求似乎是合理的吗?
  • 我不是数据包专家,但我没有听说过在 Docker 容器的应用层重复数据包的工具,但这并不意味着它不存在。跨度>
  • 我想使用它的情况是从 swarm 集群中的所有 haproxy 容器中耗尽后端。当我发送 echo "set server backend_X/serv_X state drain" | socat stdio tcp4-connect:X.X.X.X:8888 我联系了一个由 docker 服务决定/负载平衡的随机容器。
【解决方案2】:

这取决于您的具体用例。一种方法是发送docker service update --force,这将导致所有容器重新启动。如果您的容器获取在启动时更改的信息,它将具有所需的效果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2021-08-09
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多