我的 haproxy 配置中有类似这样的内容
backend myservice
option httplog
stick-table type string size 10 expire 10m store gpc0
stick store-request req.hdr(MYHDR)
server server1 127.0.0.1:9494 check inter 1s rise 1 fall 1
我只是用上面的内容作为例子。由于 stick 表是通过一个键来索引的;在本例中,它是请求标头 MYHDR。gpc0 计数器能够保存一些值。我可以使用 UDS 套接字和 socat 从外部设置该值。
set table name-of-the-table key <MYHDR> data.gpc0 <someval>
但是,我不知道如何在 haproxy 配置中设置 gpc0 的值。
我的想法是这样的:
对于请求,使用 stick-table 作为通用哈希表并存储 key=req.hdr(MYHDR)、value=src(或其他内容)
稍后我将使用该键的值对不相关的请求做出路由决策。
我无法找到以这种方式使用 stick-table 的方法。我是否遗漏了什么?无论如何,在 haproxy 配置中提供 set-gpc0 方法是否有意义?有增加和清除的方法,但不能设置为特定值。
我意识到 gpc 中的 c 代表计数器,而我并没有真正将其用作计数器,而是将其视为将计数器初始化为特定值,而不是从 0 开始。