Pesquisar este blog

quinta-feira, 21 de julho de 2011

Mikrotik - Como configurar o LOADBALANCE ou balancear dois links de internet no Mikrotik


Balanceamento de carga
Todo o hardware tem o seu limite, e muitas vezes o mesmo serviço tem que ser repartido por várias máquinas, sob pena de se tornar congestionado. Estas soluções podem-se especializar em pequenos grupos sobre os quais se faz um balanceamento de carga: utilização do CPU, de armazenamento, ou de rede. Qualquer uma delas introduz o conceito de clustering, ou server farm, já que o balanceamento será, provavelmente, feito para vários servidores.

Balanceamento de armazenamento (storage)
O balanceamento do suporte de armazenamento permite distribuir o acesso a sistemas de ficheiros por vários discos (software/hardware RAID), pelo que derivam ganhos óbvios em tempos acesso. Estas soluções podem ser dedicadas ou existir em cada um dos servidores do cluster.
  • Soluções
  • RAID
  • Storage Area Network

Bc1.jpg
Figura 1 - Balanceamento de carga (NAT).

Bc2.jpg
Figura 2 - Balanceamento de carga (Direct Routing).

Balanceamento de rede
O balanceamento da utilização da rede passa sobretudo por reencaminhar o tráfego por caminhos alternativos a fim de descongestionar os acessos aos servidores. Este balanceamento pode ocorrer a qualquer nível da camada OSI.
A Figura 1 sugere a existência de um mecanismo/dispositivo responsável pelo balanceamento (director). Na verdade, ele pode existir sob várias formas, dependendo do(s) serviço(s) que se pretende balancear. Este director serve também de interface entre o cluster de servidores e os clientes do(s) serviço(s) - tudo o que os clientes conhecem é o endereço semi-público deste servidor. Esta abordagem (clássica) é algo limitada, em termos de escalabilidade, ao número de tramas que o director consegue redireccionar, principalmente devido à velocidade dos buses das placas de rede. Existem, no entanto, outras soluções mais complexas que tiram melhor partido das características do protocolo TCP/IP em conjunto com routing especializado (NAT, IP Tunneling, Direct Routing).
Exemplo Um exemplo de um site a utilizar técnicas de balanceamento de carga é a própria Wikimedia Foundation e os seus projectos. Em Junho de 2004, a carga era balanceada usando uma combinação de:
Round robin DNS, que distribui os pedidos uniformemente para um dos três servidores de cache Squid;
Estes servidores de cache usam os tempos de resposta para distribuir os pedidos para cada um dos sete servidores de páginas. Em média, os servidores Squid já têm em cache páginas suficientes para satisfazer 75% dos pedidos sem sequer consultar os servidores de páginas; Os scripts PHP que formam a aplicação distribuem a carga para um de vários servidores de base de dados dependendo do tipo do pedido, com as atualizações indo para um servidor primário e as consultas para um ou mais servidores secundários.
Soluções (software) Existem soluções que operam exclusivamente em apenas algumas camadas (níveis) do Modelo OSI:
  • Nível 4: Linux Virtual Server
  • Nível 5/6/7: Zeus Load Balancer

Balanceamento de CPU
Este tipo de balanceamento é efectuado pelos sistemas de processamento distribuído e consiste, basicamente, em dividir a carga total de processamento pelos vários processadores no sistema (sejam eles locais ou remotos).
*Fonte: Wikipedia


Aplicação:
Tenho visto muitas pessoas confusas, quanto a aplicação do loadbalance... Algums sugerem colocar lo 5 ou 10 links, pelo fato de ser "melhor"... Para que todos possam aproveitar o máximo dos recursos do loadbalance e também não gastar dinheiro desnecessariamente, deixemos claro as seguintes coisas:
Loadbalance, como o próprio nome diz é "BALANCEAMENTO DE CARGA" ou seja, divisão de carga da sua rede e entre os links... Muitas pessoas se enganam e acham que loadbalance soma link (1mb + 1mb = 2mb), o que não é verdade;;; Para ter o máximo de desempenho em uma técnica de loadbalance, devemos primeiramente analizar as necessidades de cada rede, para ae sim, criar um loadbalance com o máximo de desempenho para nossa rede...

LOADBALANCE - IPD X IPD

  • LOADBALANCE - ADSL X IPD
  • LOADBALANCE - ADSL X ADSL

IPD(IP DEDICADO)

/ ip firewall mangle
add chain=prerouting in-interface= Link1 connection-state=new nth=1,1,0 action=mark-connection
new-connection-mark=Link1 passthrough=yes comment="Balanceamento de carga" disabled=no
add chain=prerouting in-interface= Link1 connection-mark=Link1 action=mark-routing
new-routing-mark=Link1 passthrough=no comment="" disabled=no
add chain=prerouting in-interface= Link2 connection-state=new nth=1,1,1 action=mark-connection
new-connection-mark=Link2 passthrough=yes comment="" disabled=no
add chain=prerouting in-interface= Link2 connection-mark=Link2 action=mark-routing
new-routing-mark=Link2 passthrough=no comment="" disabled=no
/ ip firewall nat
add chain=srcnat out.interface= Link1 Actoin=Link1 comment="Nat Link1" disabled=no
add chain=srcnat out.interface= Link2 Actoin=Link2 comment="Nat Link2" disabled=no
/ ip route
add dst-address=0.0.0.0/0 gateway=192.168.254.254 scope=255 target-scope=10 routing-mark=Link1
comment="Gateway adsl1" disabled=no
add dst-address=0.0.0.0/0 gateway=192.168.253.253 scope=255 target-scope=10 routing-mark=Link2
comment="Gateway adsl2" disabled=no
add dst-address=0.0.0.0/0 gateway=192.168.254.254 scope=255 target-scope=10 comment="principal" disabled=yes

Tratamento de portas

/ ip firewall mangle

add chain=prerouting protocol=tcp dst-port=80 action=mark-routing new-routing-mark=link2
passthrough=yes \
comment="HTTP no link2" disabled=no
add chain=prerouting routing-mark=link2 action=mark-packet new-packet-mark=link2 passthrough=yes \
comment="Pacotes marcados do Link2" disabled=no

add chain=prerouting protocol=tcp dst-port=443 action=mark-routing new-routing-mark=link2
passthrough=yes \ comment="HTTPS no Link2" disabled=no
add chain=prerouting routing-mark=link2 action=mark-packet new-packet-mark=link2 passthrough=yes \
comment="Pacotes marcados do Link2" disabled=no

add chain=prerouting protocol=tcp dst-port=1863 action=mark-routing new-routing-mark=link2
passthrough=yes \
comment="MSN no Link2" disabled=no
add chain=prerouting routing-mark=link2 action=mark-packet new-packet-mark=link2 passthrough=yes \
comment="Pacotes marcados do Link2" disabled=no

add chain=prerouting protocol=tcp dst-port=21 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="FTP no link1" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp dst-port=22 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="SSH no Link1" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp dst-port=23 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="TELNET" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp dst-port=25 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="SMPTP" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp dst-port=53 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="DNS" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp dst-port=110 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="POP3" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp dst-port=1080 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp p2p=all-p2p action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="p2p no link1" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

LOADBALANCE - DIVIDINDO CARGA DE FORMA PERSONALIZADA ENTRE OS LINKS

Tratamento de portas

/ ip firewall mangle
add chain=prerouting protocol=tcp dst-port=80 action=mark-routing new-routing-mark=link2
passthrough=yes \
comment="HTTP no link2" disabled=no
add chain=prerouting routing-mark=link2 action=mark-packet new-packet-mark=link2 passthrough=yes \
comment="Pacotes marcados do Link2" disabled=no

add chain=prerouting protocol=tcp dst-port=443 action=mark-routing new-routing-mark=link2
passthrough=yes \
comment="HTTPS no Link2" disabled=no
add chain=prerouting routing-mark=link2 action=mark-packet new-packet-mark=link2 passthrough=yes \
comment="Pacotes marcados do Link2" disabled=no

add chain=prerouting protocol=tcp dst-port=1863 action=mark-routing new-routing-mark=link2
passthrough=yes \
comment="MSN no Link2" disabled=no
add chain=prerouting routing-mark=link2 action=mark-packet new-packet-mark=link2 passthrough=yes \
comment="Pacotes marcados do Link2" disabled=no

add chain=prerouting protocol=tcp dst-port=21 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="FTP no link1" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp dst-port=22 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="SSH no Link1" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp dst-port=23 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="TELNET" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp dst-port=25 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="SMPTP" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp dst-port=53 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="DNS" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp dst-port=110 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="POP3" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp dst-port=1080 action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

add chain=prerouting protocol=tcp p2p=all-p2p action=mark-routing new-routing-mark=link1
passthrough=yes \
comment="p2p no link1" disabled=no
add chain=prerouting routing-mark=link1 action=mark-packet new-packet-mark=link1 passthrough=yes \
comment="Pacotes marcados do Link1" disabled=no

Nenhum comentário: