OpenStack虚拟机如何获取metadata
副标题[/!--empirenews.page--]
技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战
1. 关于OpenStack metadata服务 我们知道OpenStack虚拟机是通过cloud-init完成初始化配置,比如网卡配置、hostname、初始化密码以及密钥配置等。cloud-init是运行在虚拟机内部的一个进程,它通过datasource获取虚拟机的配置信息(即metadata)。cloud-init实现了很多不同的datasource,不同的datasource实现原理不一样。比较常用的datasource主要有以下两种:
ConfigDriver的实现原理比较简单,本文不再介绍。这里重点介绍Metadata,主要解决以下两个问题:
2. Metadata服务配置 2.1 Nova配置 Nova的metadata服务名称为nova-api-metadata,不过通常会把服务与nova-api服务合并:
另外虚拟机访问Nova的Metadata服务需要Neutron转发,原因后面讲,这里只需要注意在nova.conf配置:
2.2 Neutron配置 前面提到虚拟机访问Nova的Metadata服务需要Neutron转发,可以通过l3-agent转发,也可以通过dhcp-agent转发,如何选择需要根据实际情况:
Metadata默认是通过l3-agent转发的,不过由于在实际情况下,虚拟机的网络通常都会开启dhcp功能,但不一定需要router,因此我更倾向于选择通过dhcp-agent转发,配置如下:
本文接下来的所有内容均基于以上配置环境。 3 OpenStack虚拟机如何访问Nova Metadata服务 3.1 从虚拟机访问Metadata服务说起 cloud-init访问metadata服务的URL地址是http://169.254.169.254,这个IP很特别,主要是效仿了AWS的Metadata服务地址,它的网段是169.254.0.0/16,这个IP段其实是保留的,即IPv4 Link Local Address,它和私有IP(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)类似,不能用于互联网路由,通常只用于直连网络。如果操作系统(Windows)获取IP失败,也有可能自动配置为169.254.0.0/16网段的一个IP。 那AWS为什么选择169.254.169.254这个IP呢,这是因为选择Link Local IP可以避免与用户的IP冲突,至于为什么选择169.254.169.254这个IP而不是169.254.0.0/24的其它IP,大概是为了好记吧。 另外AWS还有几个很有趣的地址:
更多关于169.254.169.254信息,可以参考whats-special-about-169-254-169-254-ip-address-for-aws。 OpenStack虚拟机也是通过http://169.254.169.254获取虚拟机的初始化配置信息:
从以上输出可见从metadata服务中我们获取了虚拟机的uuid、name、project id、availability_zone、hostname等。 虚拟机怎么通过访问169.254.169.254这个地址就可以获取Metadata信息呢,我们首先查看下虚拟机的路由表:
(编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |