O HAProxy com localização de redirecionamento de roundrobin de equilíbrio é possível?

2

Estou tentando configurar um HAProxy que escute na porta 80 e na localização do redirecionamento roundrobin qualquer tráfego para dois servidores, além de fazer a saúde check .

Os servidores têm URLs diferentes, de forma que não posso usar server <name> <ip>:<port> check linhas, pois quero que o navegador do cliente leia o link ou link

Aqui está o meu haproxy.cfg:

global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        #log loghost    local0 info
        maxconn 4096
        #debug
        #quiet
        user haproxy
        group haproxy

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen webfarm *:80
       mode http
       stats enable
       stats auth admin:apassword
       balance roundrobin
       option forwardfor
       redirect location https://ssl1.blah.com/gohere
       redirect location https://ssl2.blah.com/gohere

Todos os ponteiros seriam muito apreciados. Esta é a minha primeira aventura com o HAProxy ou qualquer NLB de software.

Obrigado

    
por Joe T 09.02.2011 / 11:13

2 respostas

1

Eu não acho que você pode balancear redirecionamentos. Se o objetivo desta implantação for redirecionar todo o tráfego para esses servidores de http para https, você deverá ouvir dois IPs separados e redirecionar de acordo. Isso significa que o usuário deve conhecer os subdomínios com antecedência.

O que você está tentando fazer me parece não tão bom. Um usuário atingirá seu URL de frontend e será redirecionado para um dos dois subdomínios. Se eles retornarem, eles podem ser redirecionados para o outro subdomínio. Como usuário, eu acharia isso extremamente estranho.

O objetivo do balanceamento de carga é obscurecer os detalhes de implementação de quantos servidores e quais servidores estão no cluster e fornecer um front-end uniforme.

Eu sugeriria algo como o seguinte:

Frontend: 10.80.11.1:80 # http://blah.com/
Backend 1: 10.80.11.5:443
Backend 2: 10.80.11.6:443

Em cada um dos back-ends, tenha seu carregamento de página padrão em /gohere em vez de tentar fazer com que o HA Proxy reescreva o URL. Agora você pode carregar o saldo que quiser, obscurecer os detalhes do usuário.

Se você REALMENTE quiser conseguir reescrever os subdomínios, pode tentar algo assim:

Frontend: 10.80.11.1:80 # http://blah.com
balance roundrobin
Backend: server 10.80.11.2:80
Backend: server 10.80.11.3:80

Frontend: 10.80.11.2:80 # http://ssl1.blah.com
redirect location https://ss1.blah.com

Frontend: 10.80.11.3:80 # http://ssl2.blah.com
redirect location https://ssl2.blah.com

No entanto, você precisa instalar o HA Proxy em todos os três hosts (a menos que qualquer um dos back-ends acima compartilhe um host e tenha vários NICs).

Se você estiver usando o Apache como back-end, poderá conseguir redirecionamentos https de maneira muito simples e não deverá gerenciar isso com o HA Proxy.

    
por 09.02.2011 / 11:57
0

Acho que consigo o que você quer, mas não tenho 100% de certeza. Eu acho que você precisa reescrever a estrofe "listen" como duas estrofes "frontend" e "backend" separadas. Dessa forma, você deve poder adicionar um cheque aos backends, mas ainda terá seu redirecionamento / URL-mangle.

Dê uma olhada em alguns exemplos do haproxy, "listen" é usado para conjuntos de regras curtos e completos, mas o backend + frontend é usado para configurações mais complicadas.

    
por 09.02.2011 / 11:37