Upload
others
View
20
Download
0
Embed Size (px)
Citation preview
http://99cloud.net/
neutron 闲谈
http://99cloud.net/
About me
openstack 私有云解决方案和实施
openstack 公有云解决方案和实施
openstack / vmware 培训
北京
上海
无锡
湖州
http://99cloud.net/
内容
● Neutron 的 openstack 位置● neutron 的发展路程● 使用者的 neutron 入门● 开发者 debug neutron
● kilo 版, neutron 灾难还是福祉
http://99cloud.net/
7 大最核心项目
http://99cloud.net/
Compute
Storage
Network
Nova
Swift (Objects)
Glance (Images)
*-as-a-Service Capability OpenStack Service
Neutron
Cinder (Block)
identity Keystone
Neutron-NaaS
http://99cloud.net/
neutron 前世● nova-network
– Flat,FlatDHCP 模式 : 单一广播域– VLan 模式:可以给特定租户创建 VLAN 网络
● Nicira
– 2012-8-30 VMware 今日宣布将以 12.6 亿美元收购软件定义网络 (SDN)公司 Nicira
● quantum -> neutron
● 比 nova-network
– 复杂,灵活,难用?– 把网络模型抽象出来,为 IaaS 的网络展开了无限空间
http://99cloud.net/
neutron 项目法律注册信息
Networking: codename: Neutron ptl: Kyle Mestery (mestery) mission: > To implement services and associated libraries to provide on-demand, scalable, and technology-agnostic network abstraction. url: https://wiki.openstack.org/wiki/Neutron projects: - repo: openstack/neutron integrated-since: folsom - repo: openstack/python-neutronclient - repo: openstack/neutron-fwaas - repo: openstack/neutron-lbaas - repo: openstack/neutron-specs - repo: openstack/neutron-vpnaas
source: https://git.openstack.org/cgit/openstack/governance/tree/reference/programs.yaml
1
2
345
6
http://99cloud.net/
使用者 - 了解 Neutron
http://99cloud.net/
经典的工作流程● 管理员
– 创建 floatingip 网络– 在网络创建 floatingip 子网
● 租户– 创建租户网络– 在网络中创建子网– 在网络上创建虚拟机(系统会创建 port ) , 虚拟机就会有在子网上的 IP 地址– 创建路由器– 绑定路由器到子网– 创建 floatingip ,绑定 floatingip 到虚拟机
https://www.ustack.com/blog/neutron_intro/
http://99cloud.net/
开发者 -neutron
● https://wiki.openstack.org/wiki/Neutron– Slides on Technical Architecture of Neutron
https://onedrive.live.com/view.aspx?resid=8F95A76243630FB1!127&app=PowerPoint&authkey=!AK0Y3KWzD6o3WVI● http://docs.openstack.org/developer/neutron/devref/a
pi_layer.htm– deep dive into neutron
http://www.slideshare.net/gongys2004/inside-neutron-2
http://99cloud.net/dhcp agent RPC handler
http://99cloud.net/subnets list API
http://99cloud.net/
kilo neutron 的第六版
http://99cloud.net/
14
Layers in neutron server
Core REST APIExtension A REST API
Extension … REST API
AuthN/AuthZ/Input Validation/Output view
Core Plugin InterfaceService A Plugin Interface
Service … Plugin Interface
Core Plugin (Vendor specific)
agentsService … PluginService A Plugin
neutron 定制的控制器
http://docs.openstack.org/developer/neutron/devref/api_layer.html
http://99cloud.net/
current neutron
Neutronserver
Pluginagent
DHCPagent
DB Queue
l3-agent
metadata-agent
http://99cloud.net/
REST API refactor pecan
● 问题– neutron 自制 rest controller 维护成本– 参数传递 dict 方式– API workers
– http API 和消息 consumer 在一起
● 解决– pecan and pecan hook
– rest server 和 amqp consumer 分开,使其部署更加方便
http://99cloud.net/
new neutron
NeutronAPI server
Pluginagent
DHCPagent
DB Queue
l3-agent
metadata-agentNeutronAMQP server
http://99cloud.net/
Introduce a new plugin interface
● BP https://github.com/openstack/neutron-specs/blob/master/specs/kilo/plugin-interface-perestroika.rst
● 问题:– 现在的 plugin 是 operation oriented 的,– 所有 API 资源都是以 dict 传到这些操作中去的– 现在 plugin 的有些操作变得非常庞大,难以维护
● 解决:– 引入资源对象,把每种资源都封装成一个类
net = Network(...)net.validate()plugin.network_manager.create(net)
http://99cloud.net/
http://99cloud.net/
Plugin 拆分● BP https://blueprints.launchpad.net/neutron/
+spec/core-vendor-decomposition
● 问题:– 过多的三方 plugin 代码消耗了社区的资源– 每个 plugin 的测试用例也耗费真正社区开发者的时
间
http://99cloud.net/
Plugin 拆分● 解决方法:
– 把 vendor plugin 包括 unit tests 全部移出去,代码由vendor 自行管理,但是要求 binary 放到一个可以公共访问到的地方
– 构建一个 plugin 框架,使得在配置文件中能轻易使用这些 vendor plugin
http://99cloud.net/
l2 agent 重构● 问题
– 在大规模部署下,启动性能太差,网络中断问题– RPC , resync
– ovs monitor
– update service status
● 解决– rpc 批量处理 port update status
– 使用 python lib of ovs to get notification of ovs port
– Smart resync
– Avoid processing a device when there's no need● for example port's ip and mac change should lead to sg reapplying
http://99cloud.net/
l3agent 重构
● 问题– l3 agent 现在实现在一个大的 python 文件中, 2000 多行– 很到逻辑都参杂在一起,特别是 DVR 和 L3 HA 来了之
后,代码量暴增, IF 分支随处可见– l3 agent 和其它的服务比如 vpn 和 fwaas 界线不清晰
● 解决– 重构成更加面向对象的代码– 用聚合而不是用继承来解决 VPN 和 fwaas 服务的问题
http://99cloud.net/
advanced service plugin
● 问题:– lbaas, vpn
– reviewers 的知识面问题– 发展缓慢
● 解决– 拆分有利于集中专业人员做专业的事情– 提高相关服务的发展速度
http://99cloud.net/
kilo 版
● Junu 版对 Icehouse 版在性能和稳定性上有所改进, DVR 和 l3 HA 的可用性?
● Kilo 版将大规模重构
http://99cloud.net/
谢谢