
I found some old graphs I have drawn about the workings of the traditional metadata service. I don't know why I haven't contributed this earlier to Neutron docs. But anyway, better late than never. Change-Id: I7a412883c8c0d673d1617a3b212598b35e9e698f
116 lines
2.9 KiB
Plaintext
116 lines
2.9 KiB
Plaintext
/*
|
|
neutron-metadata-l3-agent
|
|
|
|
Edit this file, instead of the corresponding png/svg.
|
|
Those can be re-generated by:
|
|
sudo apt install graphviz
|
|
dot -T svg -o out.svg in.dot
|
|
dot -T png -o out.png in.dot
|
|
*/
|
|
|
|
digraph {
|
|
|
|
compound = true
|
|
node [
|
|
shape = record
|
|
]
|
|
|
|
subgraph cluster_openstack_controller {
|
|
label = "openstack controller node"
|
|
nova_metadata [
|
|
label = "nova metadata service"
|
|
]
|
|
public_openstack_api [
|
|
label = "public openstack APIs\n(nova, neutron)"
|
|
]
|
|
}
|
|
|
|
subgraph cluster_openstack_network {
|
|
label = "openstack network node"
|
|
neutron_l3_agent [
|
|
label = "neutron-l3-agent"
|
|
]
|
|
neutron_metadata_agent [
|
|
label = "neutron-metadata-agent\n\nadds HTTP headers:\nX-Tenant-ID: project-UUID\nX-Instance-ID: instance-UUID\nX-Instance-ID-Signature: ...\n\nremoves HTTP header:\n X-Neutron-Router-ID"
|
|
]
|
|
subgraph cluster_neutron_router_namespace {
|
|
label = "neutron router namespace\n(for tenant router)"
|
|
neutron_l3_ns_metadata_proxy [
|
|
label = "neutron ns-metadata-proxy\n\nadds HTTP headers:\nX-Forwarded-For: instance-IP\nX-Neutron-Router-ID: router-UUID"
|
|
]
|
|
neutron_iptables [
|
|
label = "iptables\nnat table, PREROUTING chain\nrule dst=169.254.169.254:80\ntarget REDIRECT to=127.0.0.1:9697"
|
|
]
|
|
neutron_router [
|
|
label = "neutron router"
|
|
]
|
|
}
|
|
}
|
|
|
|
subgraph cluster_tenant_net_with_gateway {
|
|
label = "tenant net with gateway"
|
|
instance [
|
|
label = "openstack instance\nno 169.254 IP configured locally\nroute: 169.254.169.254 via subnet-gw-IP"
|
|
]
|
|
}
|
|
|
|
response_omitted [
|
|
label = "the response is omitted for brevity..."
|
|
shape = plaintext
|
|
]
|
|
|
|
traffic_omitted [
|
|
label = "omitted..."
|
|
shape = plaintext
|
|
]
|
|
|
|
traffic_omitted -> neutron_router [
|
|
dir = back
|
|
label = "normal traffic"
|
|
]
|
|
|
|
neutron_router -> instance [
|
|
dir = back
|
|
label = "normal\ntraffic"
|
|
]
|
|
|
|
neutron_iptables -> instance [
|
|
label = "HTTP GET\n169.254.169.254:80"
|
|
dir = back
|
|
align = left
|
|
]
|
|
|
|
neutron_l3_ns_metadata_proxy -> neutron_iptables [
|
|
dir = back
|
|
label = "metadata\ntraffic"
|
|
]
|
|
|
|
neutron_metadata_agent -> neutron_l3_ns_metadata_proxy [
|
|
label = "unix socket"
|
|
dir = back
|
|
]
|
|
|
|
neutron_l3_agent -> neutron_router [
|
|
label = "configures\nroutes"
|
|
]
|
|
|
|
neutron_l3_agent -> neutron_l3_ns_metadata_proxy [
|
|
label = "starts"
|
|
]
|
|
|
|
nova_metadata -> neutron_metadata_agent [
|
|
dir = back
|
|
]
|
|
|
|
public_openstack_api -> neutron_metadata_agent [
|
|
label = "looks up instance UUID"
|
|
dir = back
|
|
]
|
|
|
|
nova_metadata -> response_omitted
|
|
response_omitted -> neutron_metadata_agent [
|
|
style = invis
|
|
]
|
|
|
|
}
|