Loadbalance
Publicado por Marcelo Viana (última atualização em 06/01/2012)
[ Hits: 8.641 ]
Homepage: infSite.org
LoadBalance para servidor com dois links de Internet e um para rede local.
O Script faz o balanciamento através de marcação de pacotes (ip rule) para serem distribuídos pelo "ip route" de acordo com a tabela indicada.
# Em outros casos, poderá servir apenas de exemplo para ser estudado.
#!/bin/bash
### INTERFACES:
rede1="eth0"
iface1="eth1"
iface2="eth2"
### Obs.: As interfaces tem que está de acordo com os gateways.
### Exemplo: eth1 10.15.20.21 gateway 10.15.20.10
### Exemplo: eth2 10.26.20.21 gateway 10.26.20.1
### GATEWAYS
gw1="10.15.20.1"
gw2="10.26.20.1"
### Outras variáveis
nomeScript="loadbalance-s.sh"
op=0
a=true
### HABILITA ROTEAMENTO:
echo "1" > /proc/sys/net/ipv4/ip_forward
function start(){
### Chama funções.
limpeza ; nat ; rotas ; looping
}
function limpeza(){
### Limpa tabelas.
iptables -t mangle -F
iptables -t mangle -X
iptables --flush
iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -X
ip route flush cache
}
function nat(){
### MASCARAMENTO(NAT) E MARCAÇÃO DE PACOTES PARA ROTEAMENTO.
iptables -t nat -A POSTROUTING -o $iface1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o $iface2 -j MASQUERADE
iptables -t mangle -A PREROUTING -p tcp -m multiport --dports 80,443 -j MARK --set-mark 1
}
function marcacao1(){
### Altera a marcação de pacotes da tabela "mangle"
iptables -t mangle -R PREROUTING 1 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 1
}
function marcacao2(){
### Altera a marcação de pacotes da tabela "mangle"
iptables -t mangle -R PREROUTING 1 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 2
}
function rotas(){
### MARCA E PRIORIZA DE ACORDO COM A TABELA
ip rule add fwmark 1 table 10 prio 0
ip rule add fwmark 2 table 20 prio 0
### DESTINA OS PACOTES
ip route add default via $gw1 dev $iface1 table 10
ip route add default via $gw2 dev $iface2 table 20
}
function looping(){
### LOOP PARA MUDAR A MARCAÇÃO
while [ $a ]; do
sleep 1
if [ $op == 0 ]; then
op=1
marcacao1
else
op=0
marcacao2
fi
done
}
function para(){
### PARA O LOADBALANCE.
a=false
limpeza
kill -9 `ps aux |grep $nomeScript|awk '{print $2}'`
}
function helpp(){
### HELP
echo "Uso: loadbalance + opção"
echo "Modos:"
echo "./$nomeScript start &"
echo "./$nomeScript stop &"
echo "sh $nomeScript start &"
echo "sh $nomeScript stop &"
echo "Modo depuração: sh -x $nomeScript start"
}
case $1 in
### RECEBE VALOR EXTERNO
'start') start ; exit ;;
'stop') para ; exit ;;
'--help') helpp ; exit ;;
*) echo "Utilize start ou stop. Ex.: ./$nomeScript start."; exit ;;
esac
# É o Senhor que mostra os caminhos. Obrigado Senhor por me ajudar atravez de tantos exemplos.
# www.technocristo.com
consistir variável numérica ou alfa-numérica
Compara colunas e mostra a maior
Troca periódica de senhas para usuários
Script para encontrar arquivos .wam, .mpeg
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
Secure boot, artigo interessante, nada técnico. (4)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









