我是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级平衡?
答案 0 :(得分:2)
您可以使用urlp
和urlp_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
,具体取决于您要执行的操作。