Eu tenho algo parecido com isso na minha configuração 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
Acabei de usar o acima como exemplo. Desde que a tabela da vara é indexada por uma chave; neste caso, é o cabeçalho de solicitação MYHDR. O contador gpc0 é capaz de manter algum valor. Eu posso definir o valor externamente a partir do exterior usando o soquete UDS e socat.
set table name-of-the-table key <MYHDR> data.gpc0 <someval>
No entanto, não consigo descobrir como definir o valor de gpc0 na configuração haproxy.
O que tenho em mente é isto:
Para uma solicitação, use a tabela-pau como uma tabela hash de propósito geral e armazene key = req.hdr (MYHDR), value = src (ou algum outro material)
Usarei o valor da chave posteriormente para tomar decisões de roteamento para solicitações não relacionadas.
Eu não consegui descobrir uma maneira de usar a mesa de pau dessa maneira. Existe algo que eu perdi? Em qualquer caso, faz sentido fornecer um método set-gpc0 na configuração haproxy? Existem maneiras de incrementar e limpar, mas não de um valor específico.
Eu percebo que o c em gpc significa contador e eu não estou exatamente usando como um contador, mas pense nisso como inicializando um contador para um valor específico ao invés de começar em 0.
Tags haproxy