![Nova 네트워크 DHCP가 force_dhcp_release=True로 IP를 해제하지 않음](https://rvso.com/image/668062/Nova%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%20DHCP%EA%B0%80%20force_dhcp_release%3DTrue%EB%A1%9C%20IP%EB%A5%BC%20%ED%95%B4%EC%A0%9C%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9D%8C.png)
내가 보고 있는 문제는 nova-network가 인스턴스 종료 시 dhcprelease를 호출할 때(이로 인해)입니다.강제hcp_release=참) 주소가 항상 공개되는 것은 아닙니다(syslog에 DHCPRELEASE 요청이 표시되지 않습니다.). 그런 다음 나중에 nova가 이전과 동일한 IP 주소를 새 인스턴스에 할당하면~ 아니다해제된 DHCP 요청은 무시되고 IP 주소가 이미 다른 MAC 주소(이전 종료된 VM에 속한 주소)에 임대되었기 때문에 dnsmasq가 요청을 확인하고 거부했다는 오류가 syslog에 표시됩니다.
내 설정에 대한 세부정보:
- Juno 출시
- 레거시(nova-) 네트워크
- 우분투 14.04
- DNSMASQ가 DHCP를 처리합니다.
호스트가 DHCP 서버에서 IP 주소를 얻을 수 있으면 모든 것이 완벽하게 작동하는 것처럼 보입니다. IP가 해제되지 않고 향후 VM에 대한 후속 사용을 차단하는 경우에만 오류가 발생하는 것 같습니다.
내 nova-* 로그에 오류가 있는지 확인했는데 아무 것도 표시되지 않습니다.dnsmasq가 MAC 주소 충돌로 인해 IP 주소 임대를 거부할 때 내 syslog에 유일한 오류가 있습니다..
어떤 정보나 제안이라도 대단히 감사하겠습니다.
답변1
여전히 이 문제에 대한 완벽한 해결책을 찾을 수는 없지만 문제 영역을 찾았고 몇 가지 해결 방법이 있습니다.
1. 문제 영역:문제는 OpenStack이 아닌 dnsmasq에 있습니다. OpenStack이 매번 인스턴스를 종료한 후 "dhcprelease" 기능을 실행하지만 dnsmasq는 소수의 dhcprelease 요청에만 응답하는 것을 관찰했습니다.
2. 해결 방법:모든 lP의 기본 임대 시간은 24시간(86400초)입니다. 이는 각 인스턴스가 24시간마다 임대를 갱신해야 함을 의미합니다. 인스턴스가 IP 임대를 갱신하지 않으면 dnsmasq는 해당 임대가 유효하지 않은 것으로 간주하고 해당 임대로 얻은 IP를 해제합니다.
그 임대 시간을 3분(180초)으로 줄였습니다. 따라서 모든 임대는 인스턴스 종료 후 3분 이상 IP를 보유할 수 없습니다.
임대 시간을 3분으로 줄이는 단계:
모든 컴퓨팅 노드에서 다음 단계를 하나씩 수행합니다.
- /etc/nova/nova.conf 파일을 엽니다.
vi /etc/nova/nova.conf
- [DEFAULT] 섹션에서 dhcp_lease_time을 구성합니다.
초 단위입니다.
[기본값]
...
dhcp_lease_time = 180
파일을 저장하고 종료합니다.
서버의 각 브리지에 대해 dnsmasq 프로세스를 종료합니다. (또는 dnsmasq가 다른 목적으로 사용되지 않는 경우에도 killall을 수행할 수 있습니다)
죽이기(또는 killall dnsmasq)
- 서비스를 다시 시작합니다.
nova-api-metadata
재시작 nova-compute
재시작 nova-network 재시작