2012-01-24 31 views
1

我的问题有两个关于haproxy的部分。URL特定的平衡

问题1:

,我与交易相关事宜与上传大量的XML文档,下载结果也是相当大的服务。上传的XML文档由工作人员用来生成响应,稍后可以从工作人员处下载。这里是一个粗略的设置:

--request - > www.domain.com - >工人(1或2).domain.com

www.domain.com是静态内容服务器,和也是haproxy所在的地方。所有请求最初都会在这里。静态内容(html,图片等)应由www.domain.com上的nginx提供。

但是,具有特定网址的请求,例如www.domain.com/[upload]/ [id1]或www.domain.com/[download]/[id1]需要由工作人员自己提供。这里另外的一个问题是,转发需要基于url来保持粘性。

例如:

假设一个XML文件被上传到www.domain.com/upload/123。 haproxy会看到这个url包含上传,并将请求发送到worker1.domain.com或worker2.domain.com。稍后,当发送GET请求到www.domain.com/download/123时,我需要haproxy将其路由到最初提供相同标识(123)的上载请求的工作人员。基本上,我不能有一个给定的ID上传请求去worker1,然后下载请求相同的ID去worker2。用haproxy会有这样的可能吗?

问题2:

鉴于我上传文件到www.domain.com/upload,并HAProxy的路线worker1.domain.com,将整个文件通过HAProxy的?也就是说,虽然worker1.domain.com会收到该文件,但haproxy是否也会采用相同的带宽命中,因为它正在进行转发?

非常感谢!

回答

0
  1. 该解决方案将需要每个工人一个后端加上负载均衡后端:
    • HAProxy的发送所有定期请求一般后端
    • 工人设置cookie客户
    • 随后请求在通过检查该cookie(具有hdr_sub(饼干)),像``use_backend worker1发送到特定工人后端如果{hdr_sub(饼干)SRV = 1}
  2. 是,整个文件通过haproxy。您可以让工作人员直接将客户端重定向到工作人员,在这种情况下,客户端将继续使用该工作人员。但是,如果工人倒闭,客户将无法找到不同的工人。根据您的使用情况,haproxy代理整个文件虽然不是问题,但它非常高效。

你可能可以用表格做后端选择,但我不知道如何。不过,您可以将事物存储在后端的表格中,然后在前端中读取。

+0

谢谢你的回复w00t,这清除了我的问题! – thenava