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

Download   Open   Back

#!/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	     ###	
########################################################

PHP File Manager