配置HAProxy以根据url_param路由流量

时间:2016-11-30 10:53:25

标签: apache load-balancing haproxy

我是HAProxy的新手。我花了几个小时试图找出如何做但却无法获得任何线索。我的要求是:

如果请求的终点是/ special,那么我需要检查URL_PARAM。

  

例如:localhost / special?id = 10

根据ID,我需要将其路由到3台服务器之一。 If id <=3 server1, if id > 3 and id <=6 server2 else server3

如果所有3台服务器之间的端点不是/特殊循环。

如何实现这种2级平衡?

1 个答案:

答案 0 :(得分:2)

您可以使用urlpurlp_val来提取ID。然后,使用acl match the integer

acl is_special     path_beg /special
acl small_id         urlp_val(id) le 3
acl medium_id        urlp_val(id) 4:6
acl high_id          urlp_val(id) gt 6

use_backend bck1     if is_special small_id
use_backend bck2     if is_special medium_id
use_backend bck3     if is_special high_id
default_backend      bck_all

然后,创建3个后端:每个案例一个。

编辑:

如果要在查询参数上使用正则表达式,请使用urlp_reg

acl small_id       urlp_reg(id) ^[0-3]
acl medium_id      urlp_reg(id) ^[4-6]
acl high_id        urlp_reg(id) ^[7-9]

同时检查stick,具体取决于您要执行的操作。