segunda-feira, outubro 23, 2006

Restarting DNSCACHE using RCSS

Já há algum tempo eu tenho trabalhado na migração de alguns BIND's para DJBDNS,
utilizando a dupla TinyDNS e DNSCACHE.

Um dos problemas encontrados é a sincronização entre o DNSCACHE e o TinyDNS,
o DNSCACHE como o próprio nome já diz é um cache de DNS que em muitas situações
é configurado para fazer dezenas de megas de caches, tornando a sincronização muito
custosa quando o quesito é tempo..

Como eu ja tinha o RCSS* instalado nos servidores, tive apenas que criar uma restart_dnscache() e
colocar em comandos.sh.

restart_dnscache()
{
if [ -d /var/service/dnscache ];then
echo "Restarting cache ($HOSTNAME)"
svc -k /var/service/dnscache
elif [ -d /service/dnscache ];then
echo "Restarting cache ($HOSTNAME)"
svc -k /service/dnscache
fi
}
O primeiro if checa o diretório /var/service/dnscache, comum em sistema FreeBSD
via ports e já o segundo garante o funcionamento para a instalação default do DJB.

Dessa forma já é possível reiniciar o dnscache da seguinte forma:

/etc/periodicos/bin/rcsc -s 200.xxx.xxx.xxx -p 6556 -c '1234567890 restart_dnscache'

Lembrando que a string 1234567890 pode ter qualquer comprimento e composição,
desde que esteja definida em comandos.sh.

Segundo as referências do próprio DJB, eu adicionei as entradas em tinydns/root/Makefile:

@echo "<<RESTARTING CACHE1.XXX.XXX"
/etc/periodicos/bin/rcsc -s 200.XXX.XXX.XXX -p 6556 -c '1234567890 restart_dnscache'
@echo ""
@echo "<<RESTARTING CACHE2.XXX.XXX"
/etc/periodicos/bin/rcsc -s 200.XXX.XXX.XXX -p 6556 -c '1234567890 restart_dnscache'
@echo ""
@echo "<<RESTARTING CACHE3.XXX.XXX"
/etc/periodicos/bin/rcsc -s 200.XXX.XXX.XXX -p 6556 -c '1234567890 restart_dnscache'
@echo ""
@echo "<<RESTARTING CACHE4.XXX.XXX.XXX"
/etc/periodicos/bin/rcsc -s 200.XXX.XXX.XXX -p 6556 -c '1234567890 restart_dnscache'


Dessa forma apos digitar make para refazer o arquivo data do tinydns, o Makefile irá
automaticamente reiniciar todos os caches configurandos.


(105){ricardo@ricardo}[/var/service/tinydns/root]> sudo make <<SYNC DATA.CDB NS.XXX.XX (XXXXXX) rsync -az -e ssh data.cdb

200.XXX.XXX.XXX:/service/tinydns/root/data.cdb
Password: <<

RESTARTING CACHE1.XXX.XXX /etc/periodicos/bin/rcsc -s 200.XXX.XXX.XXX -p 6556 -c '1234567890 restart_dnscache' Restarting cache (XXXXXXX) <<
RESTARTING CACHE2.XXX.XXX
/etc/periodicos/bin/rcsc -s 200.XXX.XXX.XXX -p 6556 -c '1234567890 restart_dnscache' Restarting cache (XXXXXXX) <<
RESTARTING CACHE3.XXX.XXX
/etc/periodicos/bin/rcsc -s 200.XXX.XXX.XXX -p 6556 -c '1234567890 restart_dnscache' Restarting cache (XXXXXXX) <<
RESTARTING CACHE4.XXX.XXX
/etc/periodicos/bin/rcsc -s 200.XXX.XXX.XXX -p 6556 -c '1234567890 restart_dnscache' Restarting cache (XXXXXXX)


O uso do RCSS só e recomendado com stunnel ou outro meio escriptado.

RCSS, é um programa de minha autoria ja discutido nesse blog.