获取 metadata 的完整例子 - 每天5分钟玩转 OpenStack(166)

news/2024/7/5 1:39:40

我们将通过实验详细分析 instance 从 nova-api-metadata 获取信息的完整过程。

 

环境介绍


1. 一个 all-in-one 环境(多节点类似)。

2. 已创建 neutron 网络 test_net,DHCP 已启动。在这个 metadata 实验中, test_net 的 type 不重要,flat、vlan、vxlan 都可以。


3. 暂无 neutron router。


准备就绪,开始实验。

 

启动 instance


通过 cirros 镜像部署一个 instance,命名为 c1,选择网络 test_net。启动过程中,查看 instance 的启动日志。


上面的 log 中我们看到两个信息:


① instance 从 DHCP 拿到了 IP 17.17.17.5,这个好理解,因为我们在test_net 上开启的 DHCP 服务。


② instance 会去访问 http://169.254.169.254/2009-04-04/instance-id,尝试了 20 次都失败了。

 

神奇的 169.254.169.254

 

169.254.169.254 是个什么地址?


这是 metadata service 的 IP。


这个地址来源于 AWS,当年亚马逊在设计公有云的时候,为了让 instance 能够访问 metadata,就将 169.254.169.254 这个特殊的 IP 作为 metadata 服务器的地址,instance 启动时就会向 169.254.169.254 请求 metadata。OpenStack 之后也沿用了这个设计。


我们现在遇到的问题是 169.254.169.254 没法访问啊!cirros 的 cloud-init 显然是没有拿到 metadata 的,这点至少可以从 instance 的 hostname 没有被设置为 c1 判断出来。



前面我们在 Metadata Service 架构部分介绍了,instance 首先会将 metadata 请求发送给 DHCP agent 或者 L3_agent 管理的 neutron-ns-metadata-proxy。那目前到底是谁在管理 neutron-ns-metadata-proxy 呢?我们先在控制节点上查看一下 neutron-ns-metadata-proxy 的进程。




尽然没有 neutron-ns-metadata-proxy 在运行!


其原因是:默认配置下,neutron-ns-metadata-proxy 是由 L3_agent 管理的(后面会讨论让 DHCP 来管理),由于当前 test_net 并没有挂在 neutron router 上,所以没有启动 neutron-ns-metadata-proxy。

 

添加 router

 

要解决这个问题很简单:创建虚拟路由器 test_router 并连接 test_net。



现在控制节点上已经能够看到 test_router 管理的 neutron-ns-metadata-proxy 了。



重启 instance c1,看会发生怎样的变化。



instance 成功访问到 169.254.169.254。从结果看,cloud-init 已经获取到 metadata,因为 hostname 已经设置为 c1。



下一节我们详细分析 c1 是如何拿到 metadata 的。



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

相关文章

mysql innodb_data_file_path_关于innodb_data_file_path设置

关于innodb_data_file_path设置启动Mysql时报错,无法正常启动,通过日志发有数据文件大小错误,日志如下截图:[ERROR] InnoDB: auto-extending data file /usr/local/mysql/data/ibdata1 is of a different size 768 pages (rounded…

学习UI设计需要用到哪些工具

UI设计在近几年受到了很多人的关注,越来越多的人都想要进入到UI设计这个行业,学习UI设计的人越来越多,小编下面就为大家详细的介绍一下学习UI设计需要用到哪些工具?希望能帮助到正在学习UI设计的同学们。 学习UI设计需要用到哪些工具? 一、…

mysql切换系统盘命令_mysql常用命令

一、连接MySQL格式: mysql -h主机地址 -u用户名 -p用户密码1、例1:连接到本机上的MYSQL。首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好…

泛前端知识图谱(Web/iOS/Android/RN)

泛前端知识图谱(Web/iOS/Android/RN) 从属于笔者的程序员成长道路上的阅读学习资料工具集锦系列,主要是对于笔者这几年在前端开发中总结出来的知识点的归集与整理,也是笔者的笔记排布目录结构,更多编程语言、服务端开发…

扩展欧几里德

对于不完全为0的非负整数a, b. gcd(a, b)表示a, b 的最大公约数。那么存在整数x&#xff0c; y使得 gcd(a, b) a * x b * y; 不妨设a > b ① &#xff0c;当b 0 时&#xff0c;gcd(a, b) a , 此时 x 1, y 0; ② &#xff0c;当 a * b <> 0 时&#xff0c; 设 a…

CSS浮动元素特点有什么

什么是浮动? 元素的浮动是指设置了浮动属性(flot)的元素。 CSS浮动有什么作用? 1.让多个盒子水平排列成一行&#xff0c;浮动成为布局的重要手段; 2.可以实现盒子的左右对齐等等; 3.浮动最早是用来控制图片&#xff0c;实现文字环绕图片的效果。 CSS浮动的语法&#xff1a; 选…

oracle mysql事物隔离级别_Oracle数据库事物隔离级别

事务隔离级别&#xff1a;一个事务对数据库的修改与并行的另一个事务的隔离程度。两个并发事务同时访问数据库表相同的行时&#xff0c;可能存在以下三个问题&#xff1a;1、幻想读&#xff1a;事务T1读取一条指定where条件的语句&#xff0c;返回结果集。此时事务T2插入一行新…

[NOI2010]能量采集

469. [NOI2010]能量采集 ★★☆ 输入文件&#xff1a;energy2010.in 输出文件&#xff1a;energy2010.out 简单对比时间限制&#xff1a;1 s 内存限制&#xff1a;512 MB【问题描述】 栋栋有一块长方形的地&#xff0c;他在地上种了一种能量植物&#xff0c;这种植物可…