Metadata Service 架构详解 - 每天5分钟玩转 OpenStack(165)

news/2024/7/2 23:35:27

下面是 Metadata Service 的架构图,本节我们详细讨论各个组件以及它们之间的关系。



nova-api-metadata


nova-api-metadata 是 nova-api 的一个子服务,它是 metadata 的提供者,instance 可以通过 nova-api-metadata 的 REST API 来获取 metadata 信息。

nova-api-metadata 运行在控制节点上,服务端口是 8775。


通过进程 ID 13415 查看该启动程序。


我们这个环境是 devstack,nova-api-metadata 的程序名称就是 nova-api,nova-api-metadata 与常规的 nova-api 服务是合并在一起的。不过在 OpenStack 的其他发行版中可能有单独的 nova-api-metadata 进程存在。

nova.conf 通过参数 enabled_apis 指定是否启用 nova-api-metadata。


osapi_compute 是常规的 nova-api 服务,metadata 就是 nova-api-metadata 服务。

neutron-metadata-agent


nova-api-metadata 在控制节点上,走 OpenStack 内部管理网络,instance 是无法通过 http://controller_ip:8775 直接访问 metadata service 的,因为网络不通。

那怎么办呢?

答案是:借助 neutron-metadata-agent。

neutron-metadata-agent 运行在网络节点上。instance 先将 metadata 请求发给 neutron-metadata-agent,neutron-metadata-agent 再将请求转发到 nova-api-metadata。


这里还有个问题需要解释清楚:instance 如何将请求发送到 neutron-metadata-agent?

实际上 instance 是不能直接与 neutron-metadata-agent 通信的,因为 neutron-metadata-agent 也是在 OpenStack 内部管理网络上的。不过好在网络节点上有另外两个组件,dhcp agent 和 l3 agent,它们两兄弟与 instance 可以位于同一 OpenStack network 中,这样就引出了下一个组件: neutron-ns-metadata-proxy。

neutron-ns-metadata-proxy


neutron-ns-metadata-proxy 是由 dhcp-agent 或者 l3-agent 创建的,也运行在网络节点。更精确的说法是:运行在网络节点的 namespace 中。

如果由 dhcp-agent 创建,neutron-ns-metadata-proxy 就运行在 dhcp-agent 所在的 namespace 中;如果由 l3-agent 创建,neutron-ns-metadata-proxy 就运行在 neutron router 所在的 namespace 中。“neutron-ns-metadata-proxy” 中间的 ns 就是 namespace 的意思。neutron-ns-metadata-proxy 与 neutron-metadata-agent 通过 unix domain socket 直接相连。


这样整个链路就打通了:

1. instance 通过 neutron network(Project 网络)将 metadata 请求发送到 neutron-ns-metadata-proxy。

2. neutron-ns-metadata-proxy 通过 unix domain socket 将请求发给 neutron-metadata-agent。

3. neutron-metadata-agent 通过内部管理网络将请求发送给 nova-api-metadata。

可能大家对于 neutron-ns-metadata-proxy 还会有些疑虑:既然 dhcp-agent 和 l3-agent 都可以创建和管理 neutron-ns-metadata-proxy,使用的时候该如何选择呢?

简单的说:各有各的使用场景,并且两种方案可以共存。大家不用担心,后面我们会通过例子详细讨论。

Metadata Service 的架构已经讨论清楚了,下一节将通过实践加深理解。



http://lihuaxi.xjx100.cn/news/242683.html

相关文章

零基础学Java大数据难不难

java大数据如今在企业中用到的次数是非常多的,很多人都比较看好java技术,那么零基础学Java大数据难不难?想要学习java技术说难不难,说简单也不是很简单,来看看下面的详细介绍就知道了。 零基础学Java大数据难不难?因人而异&…

ubuntu 编译源码包 dsc diff.gz orig.tar.gz

2019独角兽企业重金招聘Python工程师标准>>> 1) 在获取源码包之前,确保在软件源配置文件/etc/apt/sources.list中添加了deb-src项以tree实用程序(以树型结构获取目录树)为例,介绍Ubuntu中如何管理源码包&am…

二叉树--先序中序遍历求后序遍历

先序遍历:根 左 右 中序遍历:左 根 右 后序遍历:左 右 根 我们可以先从先序遍历中找到根节点,由于知道了根节点那么可以依靠中序遍历找到左子树,右子树。这样再去先序遍历中找到左子树的根节点,然后再依靠中…

python re模块_Python re模块

正则表达式元字符说明. 匹配除换行符以外的任意字符^ 匹配字符串的开始$ 匹配字符串的结束[] 用来匹配一个指定的字符类别? 对于前一个字符字符重复0次到1次* 对于前一个字符重复0次到无穷次{} 对于前一个字符重复m次{m,n} 对前一个字符重复为m到n次\d 匹配数字,相…

CSS3颜色不透明度如何设置

web前端技术包含HTML和CSS样式,两者是相辅相成的,学习CSS样式不必可少,那么在学习CSS样式中,CSS3颜色不透明度如何设置?在CSS3之前,我们设置颜色的方式包含十六进制颜色(如#F00)、rgb模式颜色、或指定颜色的英文名称(…

MD5与Base64的思考

MD5加密是对任意长的数据使用MD5哈稀算法散列为4个32位组,若格式化为ASCII字符则为16字符,若格式化16进制表示,则为32字符. (MD5的具体算法请参阅相关书籍和资料)MD5广泛用于数据校验和完整性检验.且不可逆.理论上为抗碰撞的在2004年8月17日,MD5遭遇重创,山东大学的王小云做了…

org.apache.ibatis.binding.BindingException: Type interface XXX is not known to the MapperRegistry.

动态代理因为namespace的地方写错了转载于:https://www.cnblogs.com/wth21-1314/p/6590968.html

修正的判定条件覆盖例题_如何用一个例子彻底解释白盒测试中语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖?...

java测验的类型?黑盒测验?白盒测验?灰盒测验?白盒测验(White-box Testing,又称逻辑驱动测验,结构测验)是把测验目标看作一个翻开的盒子。运用白盒测验法进行动态测验时,需求测验软件产品的内部结构和处理进…