neutron metadata proxy agent 初始化过程走读

本文介绍neutron-metadata-agent初始化流程及工作原理。该组件通过监听本地Unix域套接字提供元数据服务,处理来自虚拟机的请求并转发给Nova元数据服务。文中详细解释了如何解析请求头部信息以确定虚拟机的网络信息。
摘要由CSDN通过智能技术生成

neutron-metadata-agent 初始化流表过程
/usr/bin/neutron-metadata-agent --config-file=/etc/neutron/neutron_metadata.conf --config-file=/etc/neutron/metadata_agent.ini

/usr/bin/neutron-metadata-agent 调用neutron.agent.metadata_agent.py中的main方法

+------------------------------------------------------------------------------------+ 
(一) neutron-metadata-agent  初始化过程:
+------------------------------------------------------------------------------------+ 


(1) neutron.agent.metadata_agent.py中的main方法执行逻辑
    1.1.设置配置参数
    1.2.开启一个monitor线程,定时向monitor_file_dir 写入当前时间来检查服务是否hung住
    1.3.初始化一个UnixDomainMetadataProxy实例启动一个unixDomain proxy WSGIServer服务,即 neutron-metadata-agent 进程服务,并调用wait()方法等待请求进行处理。WSGIServer服务的application 为
        实现了_proxy_request方法的MetadataProxyHandler实例。WSGIServer 启动时调用MetadataProxyHandler的 __call__方法来proxy http request。处理request的逻辑:
            (a) 通过request中请求头里的 'X-Forwarded-For'(vm实例的fixed_ip), 'X-Neutron-Network-ID'(vm实例所在network的net-id) 和 'X-Neutron-Router-ID'(vm实例所在router的router-id)调用 MetadataPluginAPI
            (b) 插件向neutron-server发送rpc 消息请求ports信息。如果返回的ports数量为多个,则响应请求并返回HTTPNotFound错误。
            (c)如果ports数量为1即返回单个port(一般同一network中的fixed_ip是不重复的),代理http request:
                重新构造request向nova_metadata服务发送http request获取 metadata响应并返回。此时请求头headers有:'X-Forwarded-For': req.headers.get('X-Forwarded-For'), 'X-Instance-ID': instance_id,
                'X-Tenant-ID': tenant_id, 'X-Instance-ID-Signature': self._sign_instance_id(instance_id)
        
    tips: 启动UnixDomainMetadataProxy 服务是会配置一个  CONF.metadata_proxy_socket 文件来监听本地unix socket 。
 

+---------------------------------+

此服务可结合 neutron dhcp agent 初始化服务一起来看: https://blog.csdn.net/gyunling/article/details/88829156

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

andy-guo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值