nginx hashing no parâmetro GET

4

Eu tenho dois servidores Varnish e pretendo adicionar mais servidores de verniz. Eu estou usando um balanceador de carga nginx para dividir o tráfego para esses servidores de verniz. Para utilizar o máximo de RAM de cada servidor de verniz, preciso que o mesmo pedido chegue ao mesmo servidor de verniz. O mesmo pedido pode ser identificado por um parâmetro GET no URL de solicitação, digamos 'a'

Em um código normal, eu faria algo parecido- (se eu precisar dividir todo o tráfego entre 2 servidores Varnish)

if($arg_a % 2 == 0) {
    proxy_pass varnish1;
}

if($arg_a % 2 == 1) {
    proxy_pass varnish2;
}

Isso basicamente faz uma verificação par / ímpar no parâmetro GET ae depois decide qual pool upstream enviará a requisição. Minha pergunta é -

  1. Qual é o equivalente nginx de tal código. Eu não sei se o nginx aceita modulas
  2. Existe uma função hash melhor / eficiente embutida com o nginx (0.8.54) que eu possivelmente possa usar. No futuro, quero adicionar mais pools upstream, portanto, não preciso alterar% 2 para% 3% 4 e assim por diante
  3. Qualquer outra maneira alternativa de resolver este problema
por Sparsh Gupta 22.01.2011 / 22:13

1 resposta

2

Pegue a variável da string de consulta (por exemplo, $ arg_x) e conecte-a ao link

    
por 22.01.2011 / 22:31

Tags