Metadata的概念网上很多介绍,简单的说它就是用户在开通虚拟机的时候保存的一些配置信息或者配置脚本,这些信息通常用于在首次启动的时候“初始化”虚拟机。
在OpenStack中每个虚拟机都可以访问169.254.169.254来获取metadata,这个IP地址实际上是根本不存在的保留地址,OpenStack通过两种机制实现了Proxy的功能。
DHCP
这种情况适合虚拟机在没有floating IP的时候,通过修改dhcp_agent.ini中的enable_isolated_metadata=True来开启该功能。 它由三部分设置组合完成
虚拟机在启动之后通过DHCP获取IP地址,DHCP服务器会通过DHCP 121 Option推送一条静态路由到虚拟机。
查看dhcp服务器的option选项,可以看到dhcp配置的静态路由
静态路由被推送到虚拟机,169.254.169.254的数据包被直接交给DHCP所在的服务器处理
在DHCP所在的Network Namespace中,DHCP的服务器所在的网卡有两个IP。
两个IP地址
在DHCP所在的Network Namespace中启动了ns-metadata-proxy进程监听80端口
在DHCP所在的Network Namespace中启动了ns-metadata-proxy进程监听9697端口
在Routers所在的Network Namespace中配置Iptables,把目标地址是169.254.169.254,端口是80的数据转到9697端口
总结:需要特别注意的是这两种方式是可以共存的,DHCP的方式会“优先级”更高,因为它会推送一条静态路由到虚拟机上,所以流量直接发送到DHCP所在的网卡不再经过Router。
Router
这种情况适合虚拟机配置了floating ip之后,不需要做任何操作每个Router都会自动开启该功能。它有二部分设置组合完成
觉得我写的不错,请我喝咖啡
欢迎关注公众账号了解更多信息