Uma coisa muito comum quando montamos um cluster de Oracle Database “caseiro” em um ambiente virtualizado é a ausência de um servidor DNS. A complexidade de instalar e configurar esse serviço faz com que seja muito comum realizar as configurações de resolução de nomes utilizados pelo Clusteware no arquivo /etc/hosts do Linux nesse tipo ambiente.

Uma boa alternativa é utilizar o dnsmasq, um serviço tão simples de instalar e configurar quanto o nosso amigo oracle-rdbms-preinstall. A verdade é que para suprir a nossa necessidade, ele nem precisa de configturação. Quando o dnsmasq é iniciado como um serviço no Linux, ele carrega as configurações de resolução de nomes do arquivo /etc/hosts do sistema local e responde as requisições de DNS na porta padrão 53.

Então o segredo aqui é muito simples: Copiar o conteúdo do arquivo /etc/hosts que configuramos em cada node do RAC e colocar no arquivo /etc/hosts do Linux no qual o dnsmasq está instalado. A partir dai basta adicionar uma entrada no arquivo /etc/resolv.conf de cada node, apontando para o IP do servidor do dnsmasq.

Com essas configurações realizadas, basta emitir o comando “nslookup <nome de um node ou scan> em qualquer node do cluster e você receberá uma saída com o IP traduzido pelo servidor DNS (o dnsmasq, no caso)

Agora veremos a configuração na prática. Uma recomendação pessoal: Provisione uma VM com a configuração mínima possível pra executar um Oracle Linux ou CentOS com instalação “minimal”. Após o sistema operacional tiver sido instalado, manter 512mb de memória RAM será o suficiente pra executar essa VM tranquilamente.

Configurando o arquivo hosts

Com o SO instalado, já podemos inserir no arquivo /etc/hosts os IP’s e nomes que o dnsmasq deverá resolver. Neste exemplo, vou utilizar as configurações do meu lab Oracle RAC mesmo (sinta-se a vontade pra colocar qualquer outra coisa).

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.99 srvDNS.localdomain srvDNS


#Oracle RAC - Private
192.168.10.31 rac01-priv.localdomain rac01-priv
192.168.10.32 rac02-priv.localdomain rac02-priv

#Oracle RAC - Public
192.168.1.31 rac01.localdomain rac01
192.168.1.32 rac02.localdomain rac02

#Oracle RAC - Virtual
192.168.1.51 rac01-vip.localdomain rac01-vip
192.168.1.52 rac02-vip.localdomain rac02-vip

#Oracle RAC - SCAN
192.168.1.40 rac-scan.localdomain rac-scan
192.168.1.41 rac-scan.localdomain rac-scan
192.168.1.42 rac-scan.localdomain rac-scan

Instalando o dnsmasq

O dnsmasq é disponibilizado no repositório tanto do Oracle Linux quanto do CentOS. Então basta emitir o comando:

# yum install dnsmasq -y

Agora o serviço precisa ser iniciado. Para não precisar iniciar o serviço manualmente toda vez que a VM for reiniciada, é recomendado configurar para iniciar junto com o Linux também.

# service dnsmasq start
# chkconfig dnsmasq on

Note que o serviço responde na porta 53. Para o correto funcionamento, precisamos liberar essa porta no Firewall ou desabilitá-lo. Nos meus laboratórios eu costumo desabilitar.

# service iptables stop
# chkconfig iptables off

Pronto, feito essas configurações, já temos um DNS totalmente funcional. A partir daqui, basta configurar os clients para usar esse servidor DNS.

Testando a resolução de nomes nos nodes

Primeiramente precisamos adicionar uma entrada no arquivo /etc/resolv.conf de cada node e client do nosso laboratório. No meu caso, o IP do servidor no qual o dnsmasq está executando é 192.168.1.99, então devo adicionar uma linha dessa maneira: “nameserver 192.168.1.99“.

 cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.1.99
nameserver 8.8.8.8

Agora é só testar com o comando nslookup no terminal. Abaixo o resultado de alguns testes, note que ao chamar pelo nome rac-scan por repetidas vezes, ele retorna os IP’s em ordem diferente.

# nslookup rac-scan
Server:         192.168.1.99
Address:        192.168.1.99#53

Name:   rac-scan.localdomain
Address: 192.168.1.42
Name:   rac-scan.localdomain
Address: 192.168.1.40
Name:   rac-scan.localdomain
Address: 192.168.1.41

# nslookup rac-scan
Server:         192.168.1.99
Address:        192.168.1.99#53

Name:   rac-scan.localdomain
Address: 192.168.1.40
Name:   rac-scan.localdomain
Address: 192.168.1.41
Name:   rac-scan.localdomain
Address: 192.168.1.42

# nslookup rac-scan
Server:         192.168.1.99
Address:        192.168.1.99#53

Name:   rac-scan.localdomain
Address: 192.168.1.41
Name:   rac-scan.localdomain
Address: 192.168.1.42
Name:   rac-scan.localdomain
Address: 192.168.1.40

Conclusão

Agora você tem um serviço de DNS a disposição para montar e testar vários cenários em seu laboratório. Lembrando que o dnsmasq carrega as informações do arquivo /etc/hosts quando o serviço é iniciado. Por tanto, caso você precise alterar ou adicionar novos IP’s / Nomes, basta será necessário reiniciar o serviço para que ele tenha conhecimento das alterações.

# service dnsmasq restart

Vale lembrar que o dnsmasq não responde somente para as VM’s, mas para qualquer computador que esteja na mesma sub-rede da VM na qual o serviço foi instalado, seja a partir de outras VM’s ou a partir de computadores físicos.

Se o computador que você está utilizando estiver na mesma rede que a VM do dnsmasq, basta adicionar uma entrada no DNS da sua máquina apontando para o IP do dnsmasq, assim como foi feito nos nodes.

Leave a Reply

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading