This is a guide for who have problem with Openstack metadata service when using flat networking.
The problem is that, if you are using the flat network setup in Openstack, your instances cannot communicate with Metadata service on Controller node. Instances try to reach 169.254.169.254 for metadata by default. This IP should be routed to Metadata service’s IP. In flat networking there is no route, so instances cannot reach metadata service.
Before do anything, check if this guide fits you:
- This bug fixed on Icehouse, if you are using Icehouse, there should be no problem.
- This is tested with Havana version, Neutron Flat Networking. I guess it should work on Grizzly and below. Source: http://lists.openstack.org/pipermail/openstack/2013-October/001831.html
There are two solutions:
- You need to use metadata via dhcp namespace. The logic is not to use default gateway option in subnet, and enter 0.0.0.0/0 route to subnet manually. You need to re-create your subnet here!
- You need to create a router in network node in Openstack, create port on your instance network for this router and choose an IP different than your real router. This router will be used just for metadata. Install neutron-metadata-agent to network node where you install l3 agent.
Configure your nova.conf in compute and controller nodes
service_neutron_metadata_proxy = True
neutron_metadata_proxy_shared_secret = x1x1x1x1x
Configure your metadata_agent.ini in network node:
auth_url = http://192.168.0.1:5000/v2.0
admin_tenant_name = service
admin_user = neutron
admin_password = xxxxxxx
metadata_proxy_shared_secret = x1x1x1x1x