有没有办法可以根据后端服务器利用率动态改变 haproxy 权重?

有没有办法可以根据后端服务器利用率动态改变 haproxy 权重?

是否有任何实用程序可以帮助根据后端服务器利用率修改后端服务器权重?(例如,feedbackd 用于为 LVS 负载均衡器执行此操作)

答案1

您可以尝试使用不同的负载平衡算法。leastconn似乎是您正在寻找的:

balance leastconn

根据HaProxy v1.4 官方文档

  leastconn   The server with the lowest number of connections receives the
              connection. Round-robin is performed within groups of servers
              of the same load to ensure that all servers will be used. Use
              of this algorithm is recommended where very long sessions are
              expected, such as LDAP, SQL, TSE, etc... but is not very well
              suited for protocols using short sessions such as HTTP. This
              algorithm is dynamic, which means that server weights may be
              adjusted on the fly for slow starts for instance.

与传统相比roundrobin

  roundrobin  Each server is used in turns, according to their weights.
              This is the smoothest and fairest algorithm when the server's
              processing time remains equally distributed. This algorithm
              is dynamic, which means that server weights may be adjusted
              on the fly for slow starts for instance. It is limited by
              design to 4128 active servers per backend. Note that in some
              large farms, when a server becomes up after having been down
              for a very short time, it may sometimes take a few hundreds
              requests for it to be re-integrated into the farm and start
              receiving traffic. This is normal, though very rare. It is
              indicated here in case you would have the chance to observe
              it, so that you don't worry.

答案2

我编写了一个实用程序来执行此操作,您可以在 GitHub 上下载它:haproxy-动态权重haproxy. 它提供了一种根据服务器负载动态自动分配服务器流量的方法。

如果这个python解决memcached方案不适合您,您将看到脚本的文档引用并链接至两个替代方案。

相关内容