HaProxy不是漫无目的的交通

时间:2016-03-25 20:28:51

标签: python http flask load-balancing haproxy

我正在尝试使用haProxy进行简单的负载平衡。我的配置:

global
log /dev/log   local0
log 127.0.0.1   local1 notice
maxconn 200000
user haproxy
group haproxy
daemon

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    retries 3
    option redispatch
    maxconn 200000
    timeout connect     5000
    timeout client     50000
    timeout server     50000
frontend front
    bind *:80
    mode http
    default_backend back

backend back
    mode http
    balance roundrobin
    option httpclose
    option forwardfor
    server webserver01 127.0.0.1:5001 check
    server webserver02 127.0.0.1:5002 check
    server webserver03 127.0.0.1:5003 check
    server webserver04 127.0.0.1:5004 check
    server webserver05 127.0.0.1:5005 check
    server webserver06 127.0.0.1:5006 check

listen sts *:1936
    mode http
    stats enable
    stats uri /

我有六个Flask实例,每个根据配置在不同的端口上。

在Flask中,函数只有time.sleep(5)并返回。

当我在浏览器中打开haproxy IP时 - 它正在运行 - 我的roundrobin策略正在运行。

但是当我用这个IP打开3个或更多页面时,我收到了奇怪的情况。我认为haProxy应该将流量重定向到我的一个Flask实例,但是当我第一次在浏览器中打开此IP并且我正在等待响应(在Flask中睡眠)并打开第二页时,第一页将被加载+ 5秒(time.sleep)。第三页是相似的 - 它将在第二页加载时加载+ 5秒。

我认为当haProxy将流量从一个请求重定向到Flask的一个实例并将第二个请求重定向到第二个实例时,这是无效的 - 这个请求应该彼此分开..我应该在5秒内得到每个请求的响应。不是5,10,15,20 ..

有人可以帮我吗?

祝你好运, 太

1 个答案:

答案 0 :(得分:2)

如果您通过浏览器进行测试,大多数浏览器会限制同一服务器的并行连接数。

可在此问题中找到更多详细信息:Max parallel http connections in a browser?