O problema que estou vendo é que quando a nova-network chama dhcprelease após o encerramento da instância (devido aforçadohcp_release = Verdadeiro) nem sempre o endereço é divulgado(syslog não está mostrando solicitação DHCPRELEASE). Mais tarde, se nova atribuiu a uma nova instância o mesmo endereço IP que foinãoliberada, a solicitação DHCP é ignorada e um erro no syslog mostrará que o dnsmasq viu a solicitação e recusou porque o endereço IP já foi alugado para um endereço MAC diferente (aquele pertencente à VM antiga e encerrada).
Alguns detalhes sobre minha configuração:
- Lançamento Juno
- rede legada (nova-)
- Ubuntu 14.04
- DHCP gerenciado por DNSMASQ.
Quando os hosts conseguem obter seus endereços IP do servidor DHCP, tudo parece estar funcionando perfeitamente. Parece que o erro ocorre apenas quando um IP não é liberado e bloqueia o uso subsequente dele para futuras VMs.
Verifiquei se há erros em meus logs nova-* e não vejo nenhum.Os únicos erros estão no meu syslog quando o dnsmasq se recusa a alugar o endereço IP devido aos endereços MAC conflitantes.
Qualquer informação ou sugestão seria muito apreciada.
Responder1
Ainda não consigo encontrar a solução perfeita para esse problema, mas encontrei a área do problema e tenho alguma solução alternativa.
1. Área problemática:O problema está no dnsmasq e não no OpenStack. Observei que o OpenStack está executando a função “dhcprelease” após encerrar a instância todas as vezes, mas o dnsmasq está respondendo apenas a algumas solicitações de dhcprelease.
2. Solução alternativa:O tempo de concessão padrão de qualquer IP é de 24 horas (86.400 segundos), o que significa que cada instância deve renovar sua concessão a cada 24 horas. Se a instância não renovar sua concessão de IP, o dnsmasq considerará essa concessão inválida e liberará o IP obtido por essa concessão.
Reduzi esse aluguel para 3 minutos (180 segundos). Portanto, qualquer concessão não poderá reter o IP por mais de 3 minutos após o encerramento da instância.
Passos para reduzir o tempo de locação para 3 minutos:
Execute as etapas a seguir em todos os nós de computação, um por um.
- Abra um arquivo /etc/nova/nova.conf
vi /etc/nova/nova.conf
- Na seção [DEFAULT], configure dhcp_lease_time.
Está em segundos.
[PADRÃO]
...
dhcp_lease_time = 180
Salve e saia do arquivo.
Elimine o processo dnsmasq para cada ponte no servidor. (OU você também pode executar killall se o dnsmasq não for usado para outros fins)
matar (OU matar todos dnsmasq)
- Reinicie os serviços.
reiniciar nova-api-metadata
reiniciar nova-compute
reiniciar nova-network