Como posso acessar diretamente um servidor por trás do HAProxy?

2

Estou tentando habilitar uma forma de desenvolvedores / testadores acessarem servidores específicos por trás de um HAProxy, para facilitar o teste. A maneira como fazemos isso agora é acessando o nome do host do servidor (por exemplo, server1.mywebsite.com) diretamente, mas vimos diferenças relacionadas a hosts virtuais, ssl, etc ... Gostaria de definir um cookie ou um query string arg ou algo assim eu posso forçar um servidor a ser usado ...

algo como www.mywebsite.com (com cookie super_secret_cookie = server1) ou www.mywebsite.com?super_secret_key=server1

Para ser claro, isso seria usado por usuários internos, não pelo público em geral.

Idéias?

Edit: estou usando a versão 1.3.12

    
por Nick P. 02.08.2011 / 22:01

2 respostas

4

Eu acho que sua pergunta está desatualizada, mas para aqueles que vêm depois, aqui está como eu fiz:

definimos alguma acl:

frontend http-in
acl has_server1_cookie  hdr_beg(cookie) server1

use_backend single_server1_backend if has_server1_cookie

e, claro, temos que definir esse back-end:

backend single_server1_backend 
server server1.mywebsite.com 192.168.1.123:80 maxconn 32 check

podemos até adicionar à seção de back-end o seguinte

reqadd backend:\ server1

que irá dizer ao haproxy para adicionar a cada requisição despachada para o server1 um cabeçalho http

backend: server1

que é bom e aguarda a verificação apenas para ter certeza de que realmente funciona ..

    
por 19.08.2011 / 18:51
0

Você está desnecessariamente complicando as coisas. Se você tem "diferenças relacionadas a hosts virtuais, ssl, etc", então FIX THOSE. Quando você começa a manipular as coisas com cookies e query string args (você vai modificar seu aplicativo para persistir essa query string arg através de cada requisição? Mesmo mais complicações ...) você apenas torna as coisas mais complicadas , o que significa mais difícil de depurar, mais provável que seja acidentalmente quebrado por uma mudança não relacionada, e geralmente você só dificulta a vida para si mesmo e para todos os outros.

Então, dê um passo atrás e, em vez de perguntar sobre a implementação de uma solução incompleta que você criou, faça uma pergunta sobre como resolver seu problema . "Nós temos um haproxy e gostaríamos de acessar as máquinas diretamente, mas quando fazemos isso, conseguimos ( descrever a diferença com hosts virtuais )."

Meu palpite para o problema do vhosts é que eles não são configurados para aceitar o nome da máquina diretamente, o que é trivial para corrigir - uma entrada extra em server_name (ou um novo ServerAlias ) leva você até lá. Para SSL, isso é um pouco mais complicado se você não estiver usando um certificado curinga, mas como são apenas usuários internos, ignorar o aviso SSL é uma solução (semi) válida para o problema - ou é possível executar um certificado SSL separado para o material por máquina (em uma CA interna). Se você estiver encerrando o SSL no balanceador de carga, pare de fazer então .

    
por 03.08.2011 / 00:35

Tags