HA代理分组请求

时间:2017-07-05 07:43:13

标签: load-balancing distributed-computing distributed haproxy

我使用HA代理作为负载均衡器。 我已经以循环方式为负载平衡指定了两个节点。如果我手动发布请求,事情工作正常我可以看到req以循环方式被路由到每个节点。当我使用curl来激发5000个req​​然后我看到大约100个req​​将转到一个节点然后100个转到另一个节点。所以它不是基于req交替。我不认为这是正确的行为准则。是否有一些我需要更改的配置? 还是卷曲行为?

curl -k  <url>?name=[1-5000]

1 个答案:

答案 0 :(得分:1)

您指导curl使用递增计数器发出顺序请求,URL中的括号中的这些数字,curl将通过http keep-alive重用与HAProxy的连接。< / p>

默认情况下,HAProxy也将重用连接到后端,因为这是最有效的行为,避免了建立新TCP连接的开销。当所有请求来自重用连接上的单个客户端并且并发为1时,没有理由人工强制循环分发。

您可以使用多个选项之一强制更改此行为,但它应该是不必要的,因为这主要是测试方法的工件。

  

默认情况下,HAProxy在持久性的保持活动模式下运行   连接:对于每个连接,它处理每个请求和响应,以及   在响应的结束和两端之间使连接空闲   新请求的开始。这种模式可以通过几种选择来改变   as&#34;选项http-server-close&#34;,&#34;选项forceclose&#34;,&#34;选项httpclose&#34;要么   &#34;选项http-tunnel&#34;。设置&#34;选项http-server-close&#34;启用HTTP   服务器端的连接关闭模式,同时保持支持能力   客户端的HTTP保持活动和流水线操作。这提供了最低的   客户端(慢速网络)的延迟和最快的会话重用   服务器端保存服务器资源,类似于&#34;选项forceclose&#34;。   它还允许非keepalive服务器以保持活动模式提供服务   如果客户符合RFC7230的要求。请注意   有些服务器在看到时并不总是符合这些要求   &#34;连接:关闭&#34;在请求中。效果将是保持活力的意志   永远不会被使用。解决方法包括启用&#34;选项   HTTP的假装-存活&#34;

     

http://cbonte.github.io/haproxy-dconv/1.6/configuration.html#4-option%20http-server-close

那为什么每100个交替一次呢?保持活动连接通常无限期使用,因此客户端或服务器将最终关闭连接并建立新连接。