Load Balance e Fail Over no BFW 3.0.258

Tutoriais BrazilFW 3.x em Português

Load Balance e Fail Over no BFW 3.0.258

Mensagempor the-mask » Sex Jan 30, 2015 6:52 am

1 - Introdução:

Este é meu primeiro tutorial para a comunidade do BFW, devido ser um assunto recorrente resolvi abordar o tema dando algumas dicas com base em esperiências próprias utilizando o BFW na versão 3.0.258.


2 - O que você vai precisar:

É primordial que você já tenha noção sobre os conceitos de "Balanceamento de Carga", "Fail Over", "Rotas Estáticas", "Rotas Dinâmicas", "Protocolo TCP/IP" bem como já esteja familiarizado com o "Brazil Firewall" e sua forma de tratar todos os conceitos anteriores.
É válido também ressaltar que não serão abordados de maneira aprofundada a camada física entre o BFW e os equipamentos das operadoras bem como a configuração física e lógica daqueles mesmo equipamentos.


3 - Cenário hipotético:

Para fins práticos será demonstrado aqui um cenário genérico onde o número de links bem como ips e regras podem facilmente ser adaptados para outros cenários.

Empresa com quatro links deseja alocar dois para uso dos clientes, um para aplicações internas (Web, e-mail, ftp, etc) e um de stand-by


Neste ponto é crucial que você saiba que link vai fazer o que e qual a velocidade de cada um para estipularmos uma boa distribuição de carga. Também é importante atribuir uma faixa de ip local que nos permita trabalhar de maneira organizada e com folga.


4 - Botando a mão na massa:

4.1 - Interfaces Lógicas:
Depois de instalado o BFW ficou com a seguinte configuração de interfaces lógica:

  • INTERFACE INTERNET 01 - ALIAS: link1 - ADSL PPPoE - 1 MBps - IP: 192.168.1.2/24 Gateway: 192.168.1.1/24 - Balanceamento de Carga: SIM - Peso: 1
  • INTERFACE INTERNET 02 - ALIAS: link2 - ADSL PPPoE - 5 MBps - IP: 192.168.2.2/24 Gateway: 192.168.2.1/24 - Balanceamento de Carga: SIM - Peso: 5
  • INTERFACE INTERNET 03 - ALIAS: link3 - DEDICADO ESTATICO - 512 KBps - IP: 192.168.3.2/24 Gateway: 192.168.3.1/24 - Balanceamento de Carga: não - Peso: 1
  • INTERFACE INTERNET 04 - ALIAS: link4 - CABO ESTATICO - 1 MBps - IP: 192.168.4.2/24 Gateway: 192.168.4.1/24 - Balanceamento de Carga: não - Peso: 1
  • INTERFACE LOCAL - ALIAS: local1 - IP: 10.0.0.1/8

Como era de se esperar nós temos 04 (quatro) interfaces lógicas de internet, porém, apenas 01 (uma) local. Atentando para os ips das interfaces lógicas você notará que elas estão dentro de uma faixa 16, todavia, isto não é obrigatório e por vezes será impossível, pois nem sempre as operadoras nos permitem alterar os ips dos equipamentos, mesmo assim, foi apresentado desta forma como sugestão para aqueles que possuem Switchs com VLAN, esteja livre para adequar a sua realidade.

Nas intefaces link1 e link2 o ip corresponde ao "ip adicional" aplicado em cada interface de modo que nos possamos chamar os MODENS ADSL, previamente configurado como bridge nos ips/faixas correspondentes, que estão na frente do BFW, pela rede local; na interface link3 foi solicitado ao técnico da empresa de ISDN que configurasse o ROTEADOR da companhia conforme informado acima; e o link4 também foi configurado manualmente.

Na interface local, que neste tutorial se apresenta como única e podem ser tantas quantas seu hardware e criatividade permitam, foi configurada com a maior faixa de ip possível numa rede privada, deste modo podemos trabalhar com a organização de até 524288 subnets e folga de até 16777214 ips. Neste ponto alguns vão achar um absurdo e outros já vão começar a pensar no próprio provedor, de toda forma, eu gosto deste modelo pela capacidade de distribuir ips por subnet a fim de simplificar na hora de fazer regras de iptables, squid, qos e outras, porém, fique a vontade para fazer conforme sua preferência atentando apenas para não colocar dentro do range de nenhuma interface internet e, caso não seja possível, utilizar uma classe imediatamente inferior.

Só para deixar bem claro, mesmo indicando "Peso" no link3 e link4, a informação não será utilizada pelo BFW pois os links não participam do Balanceamento de Carga.


4.2 - Balancemanto de Carga:

O BFW se mostra bem eficiente em balancear a carga para dois ou mais links desde que tudo esteja bem configurado. Note que o balanceamento de carga só está habilitado para dois links, ou seja, até aqui o BFW "sabe" que tem quatro links de internet, porém, só direciona o tráfego para duas, literalmente, ignorando as outras.

4.2.1 - A configuração de "Peso":
Eu resolvi criar um subcapítulo aqui para tentar esclarecer este tópico que em muitas vezes é confundido com "prioridade" e "failover".

Tomando como exemplo incial o nosso "Cenário Hipotético", foi estipulado um peso de 1/5 nos links envolvidos no balanceamento de carga, ou seja, a cada 06 (seis) pacotes que o BFW recebe da rede local, 1 (um) vai para o link1 e 5 (cinco) vão para o link2, pois o link2 é 5x (cinco vezes) mais veloz que o link1.

Tomemos um novo exemplo hipotético onde o link1 atinga 512KBps e o link2 atinga 5MBps, neste caso o peso seria 1/10, poiso link2 é 10X (dez vezes) mais veloz que o link1.

Atenção, o balanceamento de carga permite uma melhora na performance geral do tráfego, isso não quer dizer que você vai sempre conseguir fazer downloads numa velocidade igual a soma dos links envolvidos no balanceamento, isso envolve outras questões como MTU e fragmentação de pacotes e estes assuntos não serão abordados aqui. É valido ressaltar que se o BFW tem controle total dos links o balanceamento de carga já contempla um certo nível Fail Over com o balanceamento ativo.


4.3 - Rotas

Você deve estar se perguntando o que fazer com os outros links que não estão envolvidos no balancemanto de carga, eu respondo: é aqui que entra o SmartRoute do BFW. O SmartRoute pode ser usado para atribuir rotas estáticas a serviços que só devem estar disponíveis numa determinada interface assim como "failover", usando rotas dinâmicas, para um link.

4.3.1 - Rotas Estáticas

Retomando nosso exemplo base, a empresa possui uma máquina que roda serviços de e-mail que atenderá externamente numa interface específica, sabendo-se que a configuração da mesma é 10.1.1.1/8 e que o link3 ficará designado, a regra ficaria da seguinte forma:

Código: Selecionar todos
yes static network source link3 10.1.1.1 0.0.0.0


Caso houvesse, também, um Webserver configurado como 10.1.1.2/8, a regra ficaria da seguinte forma:

Código: Selecionar todos
yes static network source link3 10.1.1.2 0.0.0.0


As duas regras podem ser concatenadas da seguinte forma

Código: Selecionar todos
yes static network source link3 10.1.1.1,10.1.1.2 0.0.0.0


E caso todos os serviços rodem dentro de um mesmo range e utilizem a mesma interface, como são os casos acima, a regra fica assim:

Código: Selecionar todos
yes static network source link3 10.1.1.0/24 0.0.0.0


Note que todas as regra obrigam o tráfego dos pacotes vindos de um determinado ip/range com destino 0.0.0.0 (internet) sejam transmitidos somente pelo link3, neste caso específico, caso o link3 fique fora do ar por qualquer motivo, os serviços ficam fora do ar também.


4.3.2 - Rotas Dinâmicas - Fail Over:

Antes de começar este capítulo e como o assunto é polêmico, pois, alguns colegas afirmam categoricamente que o BFW não faz "Fail Over", vou usar uma metáfora para nós entendermos melhor este assunto pois entra em conflito com o Load Balance:

  • Existe varias caixas com pesos variados e elas precisam ser transportadas do ponto A ao ponto B;
  • Se só existe uma pessoa para carregar as caixa não há como dividir o trabalho, logo, as caixas serão carregas numa velocidade de acordo com o peso de cada uma;
  • Porém se existirem duas pessoas é possível divir o trabalho de duas forma: A primeira forma é distribuir o trabalho uma caixa para cada um, transportando duas por vez ou uma mais pesada os dois juntos, porém, sempre os dois trabalhando juntos (Load Balance); ou a segunda forma que é um carregando sozinho, e caso este desmaie de cansaço, o outro assume (Fail Over), mas nunca as duas formas juntas.
O que eu quis dizer com está babozeira toda é simples, se você quer ter Fail Over você precisa obrigatoriamente ter links ociosos em número igual ao de links em atividade, caso contrário, o que você consegue é balanceamento de carga que, a grosso modo, também contempla um certo nível de Fail Over.

Voltando para nosso caso hipotético, vamos utilizar o range de serviços de modo que eles fiquem no ar o máximo possível, a regra ficaria da seguinte forma:

Código: Selecionar todos
yes dynamic network source link3,link4,link1,link2 10.1.1.0/24 0.0.0.0


Na regra acima nós temos um clássico exemplo de Fail Over, pois, fica determinado que todas máquinas no range 10.1.1.0/24 deverão trafegar pelo link3 e em caso de queda, deverão ser tentados link4, que estava de stand-by, link1 e link2, nesta ordem.
É obvio que se você tem um dominio apontando para o link3 e este caia, seu email-server ou web-server não responderão, porém, ainda assim, enviarão dados, ou seja, seus clientes internos não serão totalmente prejudicados e você ainda poderá ser alertado por e-mail dos problemas caso use programas do tipo WatchDog Email.


5 - Leituras importantes:

Antiga Wiki - http://pt-br.wiki.brazilfw.com.br/Smart_Route/pt-br - Para a versões até 3.0.258
Dokuwiki BFW - http://wiki.brazilfw.com.br/route - Para versõe a partir de 3.0.259



6 - Considerações Finais:

6.1 - Habilitação do redator:

Não sou desenvolvedor do BFW e não possuo qualquer graduação ná área de informática ou redação, portanto, encorajo você a sugerir correções ou uma explanação mais ampla acerca do tópico que possa estar havendo dúvidas, ambiguidades e/ou informações erradas.


6.2 - Comparando o BFW:

Na minha humilde opinião, acredito com franqueza que o BFW já impõe concorrencia às principais plataformas e appliances disponíveis no mercado. É claro que ele (BFW) possui desvantagens em relação àquelas outras, todavia, possui vantagens também.

Numa despretenciosa comparação entre PfSense e BFW, o PfSense ganha no quesito RADIUS, protocolo muito útil para gerenciamento de conexões WIFI, porém, o BFW ganha em serviços agregados, pois, com BFW tenho gateway, Webserver e NAS numa única máquina sem ter virtualizar nada, sem contar que é muito mais fácil fazer controle de banda por usuário no BFW que no PfSense, ainda que o módulo de traffic shapping do PfSense permita tratar os pacotes em nível aplicação e porta, porém, torna-se inviável quando o assunto é limitação de banda em função da franquia de dados quando estas se tornam rotineiras. Portanto esteja ciente das suas necessidades, prioridades e capacidade de investimento de modo a escolher a solução que mais se adeque a sua realidade.

É valido ressaltar que trata-se de um software nacional, em constante desenvolvimento, grátis, em idioma local e cujo desenvolvedores dão suporte na cmunidade, portanto, uma excelente base de comparação.


7 - Conclusão

Aqui é aquela parte em que a Xuxa perguntava: "Quer mandar beijinho pra quem?" "- Pro Papai, pra Mamãe e pra você!" - Bazinga!


Meu intuito neste pequeno tutorial foi explicar de forma mais minuciosa as características de "Load Balance" e "Fail Over" que podem ser encontradas no BFW tão somente baseado em minhas experiências com computadores, redes e BrazilFW, de tal maneira quanto a mim foi possível implementar, testar e explicar. Torço que com este você possa aproveitar as capacidades do BFW tanto ou mais que eu.

Não obstante enfatizo que tudo quanto aqui consta foi vizando o uso com BFW 3.0.258, porém, acredito ser compatível com as mais recentes também.

Que a força esteja com você!
Avatar do usuário
the-mask
BFW Participative
 
Mensagens: 106
Registrado em: Qua Fev 20, 2013 11:56 am
Localização: Belém - Pará - Brasil
BrazilFW Box: Host -> I5-2310 2.80 GHz - 4 GB RAM - 500 GB HDD - Linux Mint 17.1 Cinnamon
Gateway -> Celeron 430 1.80GHz - 1GB RAM - 40 GB HDD - BFW 3.0.258 - DNS, Cache, DHCP, QOS, Webserver, Samba

Voltar para BrazilFW 3.x

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante