sábado, 12 de março de 2011

Alta Disponibilidade (HA) : Pfsense (CARP + PFsync)

    Quem vive a realidade de manter um Infraestrutura de TI com serviços importantes  que devem (ou pelo menos deveriam) estar sempre acessíveis,  Alta Disponibilidade em sistemas é primordial.
    Esta postagem tem o objetivo de demonstrar o recurso de Alta Disponibilidade presente no firewall Open Source Pfsense, que utiliza os recursos CARP e PFsync, funcionalidade do FreeBSD que é a base deste firewall. O modo de funcionamento deste HA cluster é Failover (Ativo-passivo), na indisponibilidade do nó "mestre" o nó "escravo" assume os IPs do Cluster e mantém as conexões ativas. A versão utilizada é a 1.2.3-Release, que é a versão estável neste momento.

Topologia utilizada
  
    Foi realizada uma instalação padrão do PFsense. As máquinas, por recomendação da funcionalidade,  necessitam de uma interface separada para a sincronização da tabela de estados. Assim, ficaram com três interfaces: Lan, Wan e Sync.
   A configuração da alta disponibilidade começa no menu "Firewall", na opção "Virtual IPs". Dentro da Aba "CARP Settings"  é configurado as opções do PFsync e a sincronização de configurações entre os Firewalls.



Configuração do master

      Prosseguindo a configuração do nó escravo.

CARP settings nó escravo

    Após este passo, toda a configuração é realizada no nó mestre (regras, nat, ips virtuais e etc) e automaticamente sincronizada com o nó escravo.
    Antes da criação dos IPs virtuais do Cluster, foi criada uma regra para a interface SYNC permitindo a livre comunicação (Firewall, Rules, aba SYNC).




   Prosseguindo com a criação dos Ips Virtuais para o Cluster (Firewall, Virtual Ips). O VHID deve ser único para cada grupo IPs Virtuais.

Configuração Ip Cluster LAN

Ips Virtuais do Cluster configurados.

    Realizado estes ajustes, foi modificado o modo de funcionamento do NAT para Manual Outbound NAT rule generation (Firewall, NAT, Outbound), e no campo translation colocado o IP virtual da WAN (10.1.1.15).


    Findo isto, o Cluter de Alta Disponibilidade já está funcionando. É possivel visualizar os estados de funcionamento das Interfaces Virtuais pelo Menu "Status", na opção "CARP (failover)".

CARP status mestre


CARP status escravo
    Finalizando, gravei um video demonstrando a funcionalidade em tempo real. É possivel perceber o momento da "virada" onde o nó escravo assume o IP virtual, bem como a continuidade do download sendo realizado e os gráficos do tráfego entre as máquinas.



Vídeo demonstrativo 





2 comentários:

jtriacca disse...

olá, primeiramente excelente post. não achei a data do post, mais se vc puder me tirar uma dúvida ficarei grato;

o IP virtual da LAN, somente quem está como "master" consegue pingar, o "SLAVE" não pinga! outra coisa, quando o 'master" cai o "slave" pinga, então se crio regras no slave (já que o master está down"), mais ao subir o master novamente ele não replica as regras criadas, pelo contrário ao subir e tornar master novamente ele zera as regras criadas no slave. já pssou por isso ?

grato

Altair Junior Ancelmo Soares disse...

Olá,

Eu não entendi muito bem o problema do IP Virtual. Você está tentando pingar pelos firewalls ?
Quanto a questão das regras, esse é o comportamento esperado mesmo. O master sempre replicará as regras (e apagará as que foram criadas no slave após a queda). Imagina uma situação real de uso: Você não irá tornar o slave o master, mas sim "consertar" o master para que o seu ambiente volte a ficar em HA. Lembre-se : o objetivo principal é manter o ambiente funcionando.
Se tiver dúvidas me envia um e-mail. []´s