Verniz com vários sites / caixas

2

É possível que o Varnish redirecione o tráfego para IPs diferentes com base na URL?

Por exemplo, a configuração a seguir é viável (e, em caso afirmativo, como seria a aparência da VCL):

  1. *. example.com aponta para o endereço IP do verniz
  2. Quando uma solicitação é feita para foo.example.com , o verniz verifica o cache e envia a solicitação para o endereço IP do Server1 em uma falha de cache.
  3. Quando uma solicitação é feita para bar.example.com , o verniz verifica o cache e envia a solicitação para o endereço IP do Server2 em uma falha de cache.

foo e bar são (na maioria das vezes) sites completamente não relacionados. Eles usam o mecanismo, mas têm conteúdo diferente e seu próprio banco de dados distinto. Como anteriormente não havia penalidade por fazer isso (além do custo), dividimos os itens em duas caixas separadas para que uma tonelada de tráfego para foo não tenha um impacto negativo sobre os visitantes que navegam em torno de > bar .

Eu poderia configurar duas instâncias de verniz e ter uma para servir o conteúdo estático de foo e a outra para servir de barra, mas como não parece haver muita sobrecarga para executar o verniz, eu acho (talvez erroneamente) que seria faça mais sentido ir com um servidor Varnish que redireciona o tráfego para a caixa apropriada em um erro de cache.

    
por jerhinesmith 03.01.2011 / 18:06

1 resposta

4

Sim, é. Tente definir em default.vcl seus backends primeiro:

backend foo {
  .host = "1.2.3.4"; # IP of foo backend
  .port = "80";
}

backend bar {
  .host = "1.2.3.6"; # IP of bar backend
  .port = "80";
}

e use no código vcl_recv () semelhante a:

 if (req.http.host ~ "foo.example.com") {
        set req.backend = foo;
 }else{
        set req.backend = bar;
 }

Existe uma boa documentação (boa o suficiente para tais exemplos;)) no link e você pode fazer muito mais com VCL. É muito legal.

    
por 03.01.2011 / 18:51

Tags