【问题标题】:Custom load balance logic in HAProxyHAProxy 中的自定义负载均衡逻辑
【发布时间】:2021-09-27 02:33:55
【问题描述】:

我正在开发一个视频会议应用程序。我们有一个创建房间的服务器池,一个房间可以有 n 个用户。我正在探索 HAProxy 和其他几个负载平衡器,但找不到任何我想要的解决方案。

我的要求如下

  1. 应在创建时负载最低的服务器上创建房间。
  2. 该房间的所有用户都应加入同一台服务器。

我尝试了具有一致散列的 url_param 平衡逻辑,但它随机分配负载。现代 L7 负载均衡器是否有可能,或者我是否需要为此场景编写一些自定义逻辑(在某些负载均衡器中)或单独的应用程序?

有没有什么方法可以根据连接或 CPU 使用情况平衡负载,同时保持会话粘性?

【问题讨论】:

    标签: load-balancing haproxy


    【解决方案1】:

    balance documentation 说你可以选择像leastconn 这样的算法,并且这只适用于没有可用的持久性信息,或者当连接被重新分配到另一个服务器时。 所以答案的第二部分是棍子表。阅读docs about stick match and other stick keywords

    所以用棍子表它看起来像这样:

    backend foo
        mode http
        balance leastconn
        stick store-request src
        stick-table type ip size 200k expire 30m
        server s1 192.168.1.1:8080
        server s2 192.168.1.2:8080
    

    文档中有更多示例。
    您需要弄清楚(或告诉我们)的是我们如何根据请求知道房间客户想要的房间并制定这样的表格和规则。如果它在 URL 或 http 标头中,那么它在 haproxy 中是完全可行的。
    如果leastconn 不够好,则可以选择使用haproxy's unix socket CLI 动态调整服务器的权重并使用roundrobin 算法。还可以为服务器配置agent 选项以动态设置服务器的权重。

    【讨论】:

      猜你喜欢
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 2017-04-12
      • 2018-11-16
      • 1970-01-01
      • 2016-03-08
      相关资源
      最近更新 更多