加入收藏 | 设为首页 | 会员中心 | 我要投稿 三明站长网 (https://www.0598zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 空间 > 正文

OpenStack虚拟机如何获取metadata

发布时间:2018-10-17 17:48:58 所属栏目:空间 来源:佚名
导读:副标题#e# 技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 1. 关于OpenStack metadata服务 我们知道OpenStack虚拟机是通过cloud-init完成初始化配置,比如网卡配置、hostname、初始化密码以及密钥配置等。cloud-init是运行在虚拟

我们可以看到169.254.169.254的下一跳为10.0.0.66。10.0.0.66这个IP是什么呢?我们通过Neutron的port信息查看下:

  1. # neutron port-list -c network_id -c device_owner -c mac_address -c fixed_ips -f csv | grep 10.0.0.66 
  2. "2c4b658c-f2a0-4a17-9ad2-c07e45e13a8a","network:dhcp","fa:16:3e:b3:e8:38","[{u'subnet_id': u'6f046aae-2158-4882-a818-c56d81bc8074', u'ip_address': u'10.0.0.66'}]" 

可看到10.0.0.66正好是网络2c4b658c-f2a0-4a17-9ad2-c07e45e13a8a的dhcp地址,可以进一步验证:

  1. # ip netns exec qdhcp-2c4b658c-f2a0-4a17-9ad2-c07e45e13a8a ifconfig 
  2. tap1332271e-0d: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450 
  3.         inet 10.0.0.66  netmask 255.255.255.192  broadcast 10.0.0.127 
  4.         inet6 fe80::f816:3eff:feb3:e838  prefixlen 64  scopeid 0x20<link> 
  5.         ether fa:16:3e:b3:e8:38  txqueuelen 1000  (Ethernet) 
  6.         RX packets 662  bytes 58001 (56.6 KiB) 
  7.         RX errors 0  dropped 0  overruns 0  frame 0 
  8.         TX packets 410  bytes 55652 (54.3 KiB) 
  9.         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 

由此,我们可以得出结论,OpenStack虚拟机访问169.254.169.254会路由到虚拟机所在网络的DHCP地址,DHCP地址与虚拟机IP肯定是可以互通的,从而解决了虚拟机内部到宿主机外部的通信问题。那DHCP又如何转发到Nova Metadata服务呢,下一节将介绍如何解决这个问题。

3.2 Metadata请求第一次转发

前面介绍了虚拟机访问Metadata服务地址169.254.169.254,然后转发到DHCP地址。我们知道Neutron的DHCP port被放到了namespace中,我们不妨进入到虚拟机所在网络的namespace:

  1. ip netns exec qdhcp-2c4b658c-f2a0-4a17-9ad2-c07e45e13a8a bash 

首先查看该namespace的路由:

  1. # route -n 
  2. Kernel IP routing table 
  3. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface 
  4. 0.0.0.0         10.0.0.126      0.0.0.0         UG    0      0        0 tap1332271e-0d 
  5. 10.0.0.64       0.0.0.0         255.255.255.192 U     0      0        0 tap1332271e-0d 
  6. 169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 tap1332271e-0d 

从路由表中看出169.254.0.0/16是从网卡tap1332271e-0d发出去的,我们查看网卡地址信息:

  1. # ip a 
  2. 18: tap1332271e-0d: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN qlen 1000 
  3.     link/ether fa:16:3e:b3:e8:38 brd ff:ff:ff:ff:ff:ff 
  4.     inet 10.0.0.66/26 brd 10.0.0.127 scope global tap1332271e-0d 
  5.        valid_lft forever preferred_lft forever 
  6.     inet 169.254.169.254/16 brd 169.254.255.255 scope global tap1332271e-0d 
  7.        valid_lft forever preferred_lft forever 
  8.     inet6 fe80::f816:3eff:feb3:e838/64 scope link 
  9.        valid_lft forever preferred_lft forever 

(编辑:三明站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读