使用HTTP 503的Docker swarm负载平衡

使用HTTP 503的Docker swarm负载平衡,docker,load-balancing,swarm,Docker,Load Balancing,Swarm,对于一个项目,我想使用GPU创建一个具有节点/副本的docker swarm 由于进行负载平衡的默认方式是循环(根据TCP第4层上发生的负载平衡) 我想知道是否有可能让平衡器知道HTTP 503的响应(服务不可用)? 这意味着:如果某个节点/副本的GPU内存太少,无法满足此请求,因此使用HTTP 503进行响应,则平衡器应将该请求传递给下一个节点/副本,直到该请求被接受为止(使用任何响应,您可以尝试将您的服务定义为global,以便每个节点只获得一个正在运行的服务 然后我们可以使用traefik

对于一个项目,我想使用GPU创建一个具有节点/副本的docker swarm

由于进行负载平衡的默认方式是循环(根据TCP第4层上发生的负载平衡)

我想知道是否有可能让平衡器知道HTTP 503的响应(服务不可用)?
这意味着:如果某个节点/副本的GPU内存太少,无法满足此请求,因此使用HTTP 503进行响应,则平衡器应将该请求传递给下一个节点/副本,直到该请求被接受为止(使用任何响应,您可以尝试将您的服务定义为
global
,以便每个节点只获得一个正在运行的服务

然后我们可以使用
traefik
(或类似的负载平衡器)来配置负载平衡逻辑:

  • 为您的服务配置以监视503错误
  • 也可以考虑使用更适当的负载平衡你的工作
还有更“复杂”的解决方案,例如,或

您也可以重新考虑您的体系结构,并将其转换为队列,而不是请求/响应。因此,请求将返回作业id,您可以在稍后处理作业后获取结果

另一种选择是用您熟悉的语言实现代理逻辑,以处理503个错误,从而将请求代理给其他节点


我认为队列逻辑听起来更适合您描述的情况(尽管只是勉强).

GitHub的类似问题您可以通过介绍您自己的负载平衡器来实现这一逻辑,该平衡器可以配置此类规则。好的,您能给我一个链接,以了解如何为docker swarm创建我自己的负载平衡器吗?我所发现的只是一些关于负载平衡的一般信息,我想添加一些将所有GPU连接到PC,并为每个GPU创建至少一个worker实例,我认为将服务定义为全局服务的解决方案不会很好地工作。