(Resolvido) pfSense 2.0.1 + Load Balancer = Nem com reza brava :(
-
Pessoas, boa noite!
Domingão, chovendo e sem a patroa por perto já viu: bora resolver os pepinos do trampo :P
Estou com um pfSense tentando fazer funcionar o load balancer (balanceamento de carga e não de links!). O ambiente será desta forma:LAN = 10.0.0.x/24
pfSense LAN IP = 10.0.0.1
WebServer 1 = 10.0.0.21
WebServer 2 = 10.0.0.22Fui em Services > Load balancer e configurei conforme abaixo:
-
Pools
WebServers - loadbalance - 10.0.0.21 10.0.0.22 - 80 HTTP -
Virtual Servers
WeBCluster tcp 10.0.0.121 80 WebServers
Resumindo: tenho 2 servidores web (10.0.0.21 e 10.0.0.22), configurei um Virtual Server com IP 10.0.0.121 com monitor HTTP.
Preciso balancear as conexões HTTP nos WebServers (10.0.0.21 e 22) apontando o Virtual Server (10.0.0.121) na minha rede interna (LAN).Já testei de tudo quanto é forma e não vai nem a pau. Criei regra firewall permitindo qualquer protocolo e qualquer serviço/porta na LAN Subnet.
Já configurei a regra permitindo HTTP no IP 10.0.0.121 e nada. Se abrir o browser e acessar os IPs 10.0.0.21 e 22 vai na boa, mas como Virtual IP nem.Lembrando que os status do load balancer estão ok (ambos verdinhos). Alguma ajuda?
Obrigado e abraços!
-
-
Para você conseguir fazer esse balanceamento interno funcionar, você vai precisar forçar um nat de saída no pfsense para que as solicitações feitas ao ip do balanceamento sejam respondidas ao firewall e não os ip interno que solicitou.
Exemplo de seqüência de pacotes sem forçar o source nat:
-
10.10.0.51 pede a pagina para 10.0.0.121
-
10.0.0.121 encaminha para 10.0.0.21
-
10.0.0.21 verifica que 10.0.0.51 esta na mesma rede
-
10.0.0.21 responde a solicitação direto para 10.0.0.51
-
10.0.0.51 rejeita a comunicação porque pediu o site para 10.0.0.121 e não para 10.0.0.21
Quatro pontos importantes:
-
10.0.0.121 precisa ser um alias no pfsense para ele poder responder as requisições
-
Não esqueça de deixar uma regra na lan permitindo o acesso ao ip virtual e provavelmente aos servidores web
-
Você precisa mudar a porta da interface web de 80 para não dar conflito com a porta do loadbalance
-
Fazendo o source nat você só era o ip do firewall no log dos servidores web.
-
-
marcelloc,
Uma boa noite e muitíssimo obrigado pela sua explicação. Se entendi certo era mais ou menos o que eu imaginava: para fazer load balance o pfSense necessita que os clientes estejam em uma rede diferente do Virtual Server/Servidores Web que serão balanceados.Pensando em algo como abaixo:
ETH0
VLAN_0_WAN
SUBNET 10.0.0.x/24
GATEWAY 10.0.0.1 (próprio pfSense)ETH1
VLAN_10_SERVIDORES
SUBNET 10.0.10.X/24
GATEWAY 10.0.10.1 (próprio pfSense)ETH2
VLAN_20_CORPORATIVA
SUBNET 10.0.20.X/24
GATEWAY 10.0.20.1 (próprio pfSense)Supondo que minha topologia seja a que descrevi acima eu devo configurar o Load Balance nos servidores Web (10.0.10.21 e 22), com o Virtual Server como 10.0.10.121. Os clientes virão de outra subnet (10.0.20.x), logo eles estarão sendo "NATeados" entre as subnets, e consequentemente o pfSense pode executar o balanceamento. Isso mesmo?
Quanto a porta de acesso eu configurei o pfSense para HTTPS, e desabilitei a regra que joga de HTTP para HTTPS nas opções avançadas. Há algo mais que devo fazer?
Última dúvida mesmo criando o Virtual Server no Load Balance eu ainda preciso criar um álias para o IP do Virtual Server em "Firewall > Virtual IP"?
O pfSense não cria este objeto (Virtual Server) sozinho quando se configura em "Services > Load Balancer"?Abraços e muito obrigado mais uma vez!
Regards,
-
Voce vai precisar do alias de ip ou publica no proprio ip da interface. O serviço de load balance precisa de um ip atribuído no pfsense para funcionar.
Com relação a interface de publicação, eu prefiro publicar o ip virtual na interface onde os clientes estão ou de onde eles vem.
O procedimento de porta está ok se você não precisa publicar https
-
Poutz que me paréca!!! Falar com quem manja é FLÓRIDA!!!
Ficou SHOOOOOOW DE BOLA! Muito obrigado mesmo Marcelloc!!!;D
Também concordo que o melhor é publicar na interface onde os clientes estão (fica mais lógico/sensato ao meu ver!).
Bastou setar o Virtual IP (10.0.10.121) na Interface (CORP/Rede 10.0.10.x/24) que ficou perfeito!Cara, te devo uma gelada!
:DAbraços!!!!!