对于一个项目,我想使用GPU创建带有节点/副本的docker群。
由于默认的负载均衡方法是循环(并且根据this link负载均衡发生在TCP层4上),
我想知道是否可以使平衡器知道HTTP 503(服务不可用)的响应吗? 这意味着:如果某个节点/副本的GPU内存不足以处理此请求,因此使用HTTP 503进行响应,则平衡器应将该请求传递到下一轮的下一节点/副本,直到被接受为止(任何响应<500)
可以做到这一点吗?如果没有,是否可以创建类似的行为?
答案 0 :(得分:1)
您可以尝试将服务定义为global
,以使每个节点仅获得一个正在运行的服务。
然后,我们可以使用traefik
(或类似的负载均衡器)来配置负载均衡逻辑:
还有更多的“复杂”解决方案,例如HAproxy,kong proxy或consul。
您也可以重新考虑您的体系结构,并将其转换为队列,而不是请求/响应。因此,请求将返回一个作业ID,您可以在处理该作业之后稍后再获取结果。
另一种选择是使用您喜欢的语言来实现代理逻辑,以处理503错误以将请求代理到其他节点。
我认为队列逻辑听起来更适合于您所描述的情况(尽管仅仅是)。