Redundância de links - Mon + Shell Script
Este script foi desenvolvido, de maneira simples, para sanar a necessidade de realizar redundância com dois links de Internet.
Instalando o Mon
Para melhor funcionamento do script desenvolvido, optei por fazer a chamada deste script a partir do Mon, que é uma ferramenta muito utilizada para fins de monitoramento de disponibilidade.
Utilizando distribuições baseadas em Debian, execute o seguinte comando:
# aptitude install mon
O Debian deve, automaticamente, executar o Mon nas próximas reinicializações.
Edite o arquivo /etc/mon/mon.cf e deixe-o da seguinte maneira:
O script irá atuar testando os links para tomar ações de remoção e adição de rotas conforme disponibilidade dos links.
Abaixo, as possibilidades e ações que o script irá tomar:
Segue o script na página seguinte.
Utilizando distribuições baseadas em Debian, execute o seguinte comando:
# aptitude install mon
O Debian deve, automaticamente, executar o Mon nas próximas reinicializações.
Edite o arquivo /etc/mon/mon.cf e deixe-o da seguinte maneira:
# Definições globais
serverbind = localhost
trapbind = localhost
cfbasedir = /etc/mon
alertdir = /usr/lib/mon/alert.d
mondir = /usr/lib/mon/mon.d
maxprocs = 20
histlength = 100
randstart = 30s
logdir = /var/log/mon
dtlogfile = /var/log/mon/downtime.log
dtlogging = yes
monerrfile = /var/log/mon/error
# Definição do hostgroup de nome "localnode"
# contendo o host local (localhost)
hostgroup localnode localhost
# Monitorar hostgroup de nome "localnode"
watch localnode
# Serviços a serem checados
service availability
description Checagem de disponibilidade dos links Internet
interval 5s
monitor availability.monitor
period wd {Mon-Sun}
serverbind = localhost
trapbind = localhost
cfbasedir = /etc/mon
alertdir = /usr/lib/mon/alert.d
mondir = /usr/lib/mon/mon.d
maxprocs = 20
histlength = 100
randstart = 30s
logdir = /var/log/mon
dtlogfile = /var/log/mon/downtime.log
dtlogging = yes
monerrfile = /var/log/mon/error
# Definição do hostgroup de nome "localnode"
# contendo o host local (localhost)
hostgroup localnode localhost
# Monitorar hostgroup de nome "localnode"
watch localnode
# Serviços a serem checados
service availability
description Checagem de disponibilidade dos links Internet
interval 5s
monitor availability.monitor
period wd {Mon-Sun}
O script irá atuar testando os links para tomar ações de remoção e adição de rotas conforme disponibilidade dos links.
Abaixo, as possibilidades e ações que o script irá tomar:
- Link 1 OK | Link2 OK → Verifica as rotas e mantém como rota padrão a rota apontada na variável: $pref_gw
- Link1 Down | Link 2 Ok → Verifica as rotas e mantém como rota padrão a rota apontada na variável: $iface_eth2_gw
- Link1 OK | Link2 Down → O script não toma ações. Para este caso, mantenho um servidor Zabbix que monitora os links e informa as falhas do secundário mesmo que não seja a rota padrão.
Segue o script na página seguinte.