Keepalived para mais de 20 endereços virtuais

11

Eu configurei keepalived em duas máquinas Debian para alta disponibilidade, mas encontrei o número máximo de IPs virtuais que eu posso atribuir ao meu vrrp_instance . Como eu poderia configurar e falhar em mais de 20 IPs virtuais?

Esta é a configuração muito simples:

LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 -  10.200.85.200

Cada máquina também está executando a ligação Apache (posterior Nginx) nos IPs virtuais para terminação de certificado de cliente SSL e proxy para servidores da Web de backend. A razão pela qual eu preciso de tantos VIPs é a incapacidade de usar o VirtualHost em HTTPS.

Este é o meu keepalived.conf:

vrrp_script chk_apache2 {
        script "killall -0 apache2"
        interval 2
        weight 2
}

vrrp_instance VI_1 {
        interface eth0
        state MASTER
        virtual_router_id 51
        priority 101
        virtual_ipaddress {
            10.200.85.100
            .
            . all the way to
            .
            10.200.85.200
}

Uma configuração idêntica está na máquina BACKUP e está funcionando bem, mas somente até o 20º IP.

Eu encontrei um HOWTO discutindo esse problema. Basicamente, eles sugerem ter apenas um VIP e rotear todo o tráfego "via" esse IP, e "tudo ficará bem". Será esta uma boa abordagem? Estou executando firewalls pfSense na frente das máquinas.

Cite o link acima:

ip route add $VNET/N via $VIP

or

route add $VNET netmask w.x.y.z gw $VIP

Obrigado antecipadamente.

EDITAR:

@ David Schwartz disse que faria sentido adicionar uma rota, então eu tentei adicionar uma rota estática ao firewall pfSense, mas isso não funcionou como eu esperava.

rota pfSense:

Interface:            LAN
Destination network:  10.200.85.200/32 (virtual IP)
Gateway:              10.200.85.100    (floating virtual IP)
Description:          Route to VIP .100

Também verifiquei se o encaminhamento de pacotes estava ativado em meus hosts:

$ cat /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1

Estou fazendo isso errado? Eu também removi todos os VIPs do keepalived.conf para que ele só falhasse em 10.200.85.100.

    
por cvaldemar 23.11.2011 / 20:26

1 resposta

12

A solução mais simples, embora não altere sua arquitetura atual, é usar virtual_ipaddress_excluded . Por exemplo

vrrp_instance VI_1 {
    interface eth0
    state MASTER
    virtual_router_id 51
    priority 101

    virtual_ipaddress {
        10.200.85.100
    }

    virtual_ipaddress_excluded {
        10.200.85.101
        . all the way to
        10.200.85.200
    }
}

virtual_ipaddress_excluded contém uma lista de endereços IP que o keepalived exibirá no servidor, no entanto, eles não são incluídos no próprio pacote VRRP, portanto eles não contam para o limite de 20 endereços IP .

Em minhas configurações, gosto de alocar um IP especificamente para virtual_ipaddress . isto é, aquele que está incluído nos pacotes VRRP e coloca todo o resto em virtual_ipaddress_excluded . Essa é uma boa ideia porque você não precisa alterar o IP principal apenas porque um cliente saiu.

    
por 04.12.2011 / 00:54