File "loadbalancing.sh"
Full path: /www/wwwroot/fabriciovc.eti.br/downloads/scripts/debian/xen/debian/loadbalancing.sh
File size: 4.6 KiB (4715 bytes)
MIME-type: text/x-shellscript
Charset: utf-8
#!/bin/bash
function _CRIARTABELAS {
echo -e "\\033[1;31m###########################################################"
echo -e "### TABELA DE ROTEAMENTO NAO ENCONTRADA ###"
echo -e "###########################################################\\033[0;39m"
echo -e "### Lembre-se de criar em /etc/iproute2/rt_tables ###"
echo -e "### as entradas para as tabelas de roteamento ###"
echo -e "### link1 e link2. ###"
echo -e "### ###"
echo -e "### Ex.: ###"
echo -e "### echo \"100 link1\" >> /etc/iproute2/rt_tables ###"
echo -e "### echo \"110 link2\" >> /etc/iproute2/rt_tables ###"
echo -e "### ###"
echo -e "###########################################################"
}
function _VERIFICA {
if [ $? -eq 0 ]
then
echo -e "\\033[1;32m OK \\033[0;39m"
else
echo -e "\\033[1;31m FALHOU \\033[0;39m"
fi
}
T_L1=`grep -i link1 /etc/iproute2/rt_tables | cut -d "l" -f2`
T_L2=`grep -i link2 /etc/iproute2/rt_tables | cut -d "l" -f2`
if [ -z $T_L1 ] || [ -z $T_L2 ]
then
_CRIARTABELAS
else
if [ $T_L1 != ink1 ] || [ $T_L2 != ink2 ]
then
_CRIARTABELAS
else
echo -e "\\033[1;33mCRIANDO REDUNDANCIA DE LINKS \\033[0;39m"
# -----------
#Enderecos IP dos roteadores ligados aos links
## Roteador ligado ao primeiro link
#RO_L1=200.1.1.1
RO_L1=10.0.9.120
## Roteador ligado ao segundo link
#RO_L2=200.2.2.1
RO_L2=10.0.15.120
#Enderecos IP do gateway linux ligado aos roteadores
## IP na rede do primeiro link
#IP_L1=200.1.1.2
IP_L1=10.0.9.8
## IP na rede do segundo link
#IP_L2=200.2.2.2
IP_L2=10.0.15.8
#Interfacoes do gateway linux
##Interface ligada ao roteador do primeiro link
IF_L1=eth0
##Interface ligada ao roteador do segundo link
IF_L2=eth1
# Limpar regras
## Limpa tabela do link1
echo -n "Limpando tabela do link1..........................: "
ip route flush table link1
_VERIFICA
# ---
## Limpa tabela do link2
echo -n "Limpando tabela do link2..........................: "
ip route flush table link2
_VERIFICA
# Definir rotas
## Adiciona uma rota na tabela link1 para usar o roteador do link1
## como roteador default
echo -n "Criando rota default na tabela do link1...........: "
ip route add default via $RO_L1 dev $IF_L1 src $IP_L1 proto static table link1
_VERIFICA
## Proibe que outras decisoes de roteamento sejam tomadas nesta tabela
ip route append prohibit default table link1 metric 1 proto static
# ---
## Adiciona uma rota na tabela link2 para usar o roteador do link2
## como roteador default
echo -n "Criando rota default na tabela do link2...........: "
ip route add default via $RO_L2 dev $IF_L2 src $IP_L2 proto static table link2
_VERIFICA
## Proibe que outras decisoes de roteamento sejam tomadas nesta tabela
ip route append prohibit default table link2 metric 1 proto static
# Definir regras
## Exclui regra anterior de direcionamento
echo -n "Limpando regra de roteamento anterior no link1....: "
ip rule del from $IP_L1 table link1
_VERIFICA
## Adiciona uma regra para que pacotes originados pelo IP
## do gateway linux que pertence a rede do primeiro link
## procure por rotas na tabela link1
echo -n "Criando regra de roteamento para o link1..........: "
ip rule add from $IP_L1 table link1
_VERIFICA
# ---
## Exclui regra anterior de direcionamento
echo -n "Limpando regra de roteamento anterior no link2....: "
ip rule del from $IP_L2 table link2
_VERIFICA
## Adiciona uma regra para que pacotes originados pelo IP
## do gateway linux que pertence a rede do primeiro link
## procure por rotas na tabela link1
echo -n "Criando regra de roteamento para o link2..........: "
ip rule add from $IP_L2 table link2
_VERIFICA
# Definir balanceamento
## Eclui a rota default atual
echo -n "Limpando rota default.............................: "
ip route del default
_VERIFICA
## Faz o balanceamento de carga entre os links
echo -n "Criando rota default balancenado entre os links...: "
ip route add default scope global nexthop via $RO_L1 dev $IF_L1 weight 1 nexthop via $RO_L2 dev $IF_L2 weight 1
_VERIFICA
## Limpa o cache da tabela de roteamento atual
ip route flush cache
# -----------
# -----------
fi
fi
### DICAS ###
########################################################
### Para visualizar as rotas definidas: ###
### ip route show ###
### --- ###
### Para visualizar as regras definidas: ###
### ip rule show ###
########################################################
########################################################
### Para alterar o tempo de atualizacao do cache de ###
### rotas: ###
### vi /proc/sys/net/ipv4/route/gc_interval ###
### Defina o tempo neste arquivo em segundos ###
########################################################