Balanceador de Carga OpenSource (Camada 4) que pode passar pelo IP original do cliente?

1

Estou configurando um aplicativo da web que usa SSL para todas as solicitações. Ele precisa ter espaço para dimensionamento e também estar altamente disponível. Parece que a maneira "recomendada" de lidar com isso é configurar um par de balanceadores de carga da Camada 4 para HA, que passam para um farm de servidores para descriptografia SSL, que então vão para um farm de balanceadores de carga da Camada 7 e depois finalmente para os servidores da web. (Veja: link )

Eu usei o HAProxy no passado, então tentei com uma configuração como essa. Basicamente eu tinha HAProxy in TCP mode => STunnel => HAProxy in HTTP mode => Apache . Quando fiz isso, o IP do cliente que estava disponível para o apache era o do segundo servidor HAProxy. Eu poderia melhorar um pouco fazendo com que o STunnel adicionasse um cabeçalho X-Forwarded-For, mas isso só me dava o endereço IP do primeiro servidor HAProxy. Eu não consegui encontrar uma maneira de deixar o Apache saber o endereço IP do cliente original.

Com base na documentação que li, não acho que o HAProxy seja capaz de passar pelo endereço IP do cliente original no modo tcp. Isso está correto? Em caso afirmativo, existe algum balanceador de carga de código aberto que possa fazer isso? Caso contrário, há balanceadores de carga comerciais / de hardware que possam?

Eu também devo observar que esse balanceador de carga não precisa, estritamente, ser um balanceador de carga da camada 4. Eu só preciso ser capaz de passar através do tráfego SSL para STunnel (ou o que eu acabar usando para descriptografia SSL).

Como observação, tentei configurá-lo sem o balanceador de carga da camada 4 (ou seja, o STunnel é a primeira parte da cadeia). Isso resolveu o problema de IP do cliente. No entanto, conforme previsto no artigo acima, o STunnel foi o gargalo. Começou a perder pedidos entre 500 e 600 pedidos por segundo. E, claro, isso não pode ser escalonado (mantendo o HA) apenas adicionando mais caixas. Com base nos requisitos que recebi, esse aplicativo deve ser capaz de lidar com o tráfego de pico de 1.000 a 5.000 solicitações por segundo.

    
por phylae 10.04.2011 / 07:01

3 respostas

2

Eu recomendo strongmente olhar para o LVS. link

Ele tem a capacidade de fazer roteamento NAT normal, mas também de encapsulamento IP e roteamento direto que são enviados diretamente de volta ao cliente.

    
por 11.04.2011 / 05:27
0

Você analisou: link que reescreverá o IP com base no X-Forwarded -para o cabeçalho.

    
por 10.04.2011 / 07:29
0

O BigIP da F5 é uma solução comercial que funciona muito bem. O X-Forwarded-For é implementado como uma opção de perfil http. Não é barato embora.

O Apache TrafficServer pode ser configurado para inserir um cabeçalho X-Forwarded-For e não custa nada. Eu nunca usei isso, mas ele tem uma variável de configuração: proxy.config.http.append_xforwards_header

    
por 11.04.2011 / 05:23