本文主要是介绍Neutron在给虚拟机分配网络时,底层是如何实现的?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
研究思路:
了解neutron和相关组件的工作流程。Neutron如何给不同租户分配网络
了解vxlan和vlan的区别
了解linux的底层命令实现,看日志文件,并记录日志信息
首先需要了解neutron使用的是vxlan管理网络,在数据中心中如果虚拟机超过250台,那么就可以考虑vxlan。因为一个vlan最多只能使用4096个ip地址,而vxlan通过24位分片id,在一个数据中心内他能部署百万个虚拟网络。而openstack是基于云计算的大规模虚拟机管理,使用vlan显示是不足以支撑其庞大需求的。因此neutron使用的就是vxlan来配置虚拟设备连接客户子网和外部设备。
在分析neutron的neutron-dhcp-agent.log日志时,能够清晰的观察到,neutron在分配网络时执行了如下命令:
先创建执行命令的进程,然后执行该进程
['sudo', 'neutron-rootwrap', '/etc/neutron/rootwrap.conf', 'ip', 'netns', 'exec', 'qdhcp-0a807a08-337e-4e61-bf42-c9cd7b4df1e4', 'ip', 'addr', 'show', 'ns-00a7fb6e-ec'
动态更改配置文件,也是先创进程再执行
Running command: ['sudo', 'neutron-rootwrap', '/etc/neutron/rootwrap.conf', 'kill', '-HUP', '107920']
重新加载刷新网络
Reloading allocations for network: 0a807a08-337e-4e61-bf42-c9cd7b4df1e4 reload_allocations /usr/lib/python2.7/site-packages/neutron/agent/linux/dhcp.py:463
将网络添加到路由设备中
['sudo', 'neutron-rootwrap', '/etc/neutron/rootwrap.conf', 'ip', 'netns', 'exec', 'qdhcp-0a807a08-337e-4e61-bf42-c9cd7b4df1e4', 'ip', 'route', 'list', 'dev', 'ns-00a7fb6e-ec']
这些代码的执行逻辑是,先创建
/var/lib/
这篇关于Neutron在给虚拟机分配网络时,底层是如何实现的?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!