Usando IP virtual com stunnel e haproxy

1

Temos uma configuração de balanceador de carga, na qual uma solicitação HTTPS flui pelas seguintes etapas: -

Client -> DNS -> stunnel on Load-Balancer -> HAProxy on LB -> Web-Server

Essa configuração funciona perfeitamente quando o stunnel está ouvindo o IP local do Load-Balancer.

No entanto, em nossa configuração, temos dois balanceadores de carga e queremos poder ouvir um IP virtual, que só existe em um LB por vez (o keepalived inverte o IP para o segundo LB se o primeiro cair sobre).

O HAProxy não tem nenhum problema em fazer isso (e eu posso pingar o IP virtual atribuído no balanceador de carga que estou testando), mas parece que o stunnel odeia o conceito.

Alguém já conseguiu isso antes (abaixo está minha configuração stunnel - como você pode ver, estou realmente ouvindo o tráfego ALL em 443): -

cert= /etc/ssl/certs/mycert.crt
key = /etc/ssl/certs/mykey.key
;setuid = nobody
;setgid = nogroup

pid = /etc/stunnel/stunnel.pid
debug = 3
output = /etc/stunnel/stunnel.log

socket=l:TCP_NODELAY=1
socket=r:TCP_NODELAY=1

[https]
accept=443
connect=127.0.0.1:8443
TIMEOUTclose=0
xforwardedfor=yes

Desculpe pela pergunta prolixa!

    
por isNaN1247 17.03.2011 / 20:13

1 resposta

2

A chave é permitir que interfaces inexistentes sejam ligadas por programas (como stunnel, HA-proxy). Assim, quando o keepalived inverte o IP virtual para essa caixa, os programas já estão ouvindo e aguardando o tráfego nessa interface.

Isso pode ser feito modificando seu /etc/sysctl.conf incluindo o par chave / valor de:

net.ipv4.ip_nonlocal_bind=1

Mais aqui: link

Em seguida, você faria melhor modificando suas configurações stunnel e HA-proxy para codificar a vinculação ao IP da interface virtual específica. Em vez de deixá-lo "aberto".

    
por 17.03.2011 / 23:32