一、Sahara进展:

1. Sahara 使用插件的形式在OpenStack上支持大数据服务的部署,目前支持的数据处理框架(或者说发行版)包括 Vanilla,Ambari,MapR,CDH,Spark和Storm。目前社区工作中比较重要的一部分就是同步各发行版的版本。在12月 份,Sahara项目对已经发布的CDH 5.9 (https://blueprints.launchpad.net/sahara/+spec/cdh-5-9-support) 和 HDP 2.5 (https://review.openstack.org/#/c/414560/) 做了支持,这部分内容预计会包含在Sahara Ocata-3 Milestone中。如果读者需要在较低版本的OpenStack中使用,需要自己修改代码来提供支持。

2. 为了维护代码的整洁,减少相对较早版本的大数据发行版支持会有效减小代码体积,在Sahara Ocata-2 Milestone后,将不再提供预装CDH 5.4.0以及之前版本镜像的生成工具(https://review.openstack.org/#/c/406890/) ,如果读者需要,只能回退分支来实现,同样值得注意的是,在Pike版本中,CDH 5.5.0之前的插件代码都将被移除,笔者建议大家尽量使用最新版。

3. 12月14日是Ocata-2 Milestone (https://launchpad.net/sahara/+milestone/ocata-2) ,生成预装MapR的Ubuntu 14镜像失败的问题得到解决,主要是因为MapR+Ubuntu镜像生成过程中安装了最新的Scala 2.12.0,这个deb包依赖于Openjdk-8,但是Openjdk-8只在Xenial上可用,解决办法是强制使用scala 2.11.6。(https://review.openstack.org/#/c/402693/)

4. 在之前的版本中,多租户下,集群名也不能重复,这个问题最近得到了解决(https://review.openstack.org/413219) 。通过在db查询集群名时,设置name_filter参数,来避免一次获取所有租户下的集群名。这样,就可以在不同租户下创建同名的集群了。

4.社区sahara与sahara-tests 的 Python3测试已经加入(https://review.openstack.org/#/c/404665/) ,目前属于non-voting状态,向社区提交代码的读者需要注意了。一、Sahara 进展:

二、Neutron进展:

社区目前处于Ocata-2阶段,12.12-1.20(https://github.com/openstack/releases/blob/master/doc/source/ocata/schedule.rst)Ocata-2是研发的重要阶段,Neutron里有很多BP和bug在解决(https://launchpad.net/neutron/+milestone/ocata-2)。下面是目前在做的部分BP介绍:

1. 从Liberty开始将neutron拆为neutron-lib,server/agents仍在继续。

由于neutron功能越来越复杂,所有代码放在一个项目中,维护成本高,所以从kilo开始neutron代码开始分解。

a. Kilo里与ML2平级的厂商plugin,ML2的厂商MechanismDrivers以及L3 service的厂商plugin代码开始从neutron移除,让厂商自己维护(https://specs.openstack.org/openstack/neutron-specs/specs/kilo/core-vendor-decomposition.html)

b. Kilo里neutron的高级服务fwaas, lbaas, vpnaas代码从neutron里移到了各自的项目里(http://specs.openstack.org/openstack/neutron-specs/specs/kilo/services-split.html)

c. Liberty中将neutron-aas里的厂商代码移除出去,让厂商自己维护(http://specs.openstack.org/openstack/neutron-specs/specs/liberty/decompose-aas.html)

d. 由于从neutron移出去的代码依赖于neutron的一些基础代码,为了维护方便,从Liberty开始neutron就在拆分为neutron-lib和server/agents

Split neutron into base library and servers/agents

https://blueprints.launchpad.net/neutron/+spec/neutron-lib

2. 将数据表的操作变为对象操作,主要使用公共库oslo.versionedobjects,重构的任务量很大。

Adopt oslo.versionedobjects for database interactions

https://blueprints.launchpad.net/neutron/+spec/adopt-oslo-versioned-objects-for-db

3. 目前neutron升级过程中,需要升级数据库,而升级数据库(contract的数据库修改)必须关闭所有的neutron-server实例,导致neutron-server服务中断,这个bp介绍升级neutron无需关闭所有neutron-server的方法,即可实现neutron无中断升级。

Upgrade controllers with no API downtime

https://blueprints.launchpad.net/neutron/+spec/online-upgrades

4. 目前agent通过RPC从server获取数据,如果获取失败就会一直重试,如果这时server负载高,就会出现连锁反应导致更多agent不断连接neutron-server,最终导致neutron-server挂掉,需要人为介入。

这个BP使用push notifications的方式使得当neutron资源有变化时将agent需要的所有信息通知到agent,避免agent主动获取资源。

Use push style notifications for all server->agent information

https://blueprints.launchpad.net/neutron/+spec/push-notifications

5. 给neutron添加一个诊断的框架。

具体实现是给neutron的资源添加一个诊断的api,比如:

GET /v2.0/subnets/315ec9bb-34f5-4f7a-a44c-b13015a26803/diagnostics

这个API可以返回该subnet是否正常。检查实现在server端有plugin接收请求,真正检查动作在agent端根据检查的资源实现检查动作。

有了这个API,我们可以随时检查网络资源是否正常。

Diagnostics of Neutron components

https://blueprints.launchpad.net/neutron/+spec/troubleshooting

6. Liberty中引入了L2 agent extensions

但是这个功能比较简单,用户期望使用该API可以灵活操作L2 agent,比如添加流表,设置流规则等,这个BP扩展API来实现。

API for l2 agent extensions (+ovs flow management)

https://blueprints.launchpad.net/neutron/+spec/l2-api-extensions

7. 管理员可以设置经过安全组的数据包是否记日志

该BP从2014年开始,还有review中。

Security-group Logging

https://blueprints.launchpad.net/neutron/+spec/security-group-logging

8. 数据库的engine连接重构使用公共库oslo_db中的enginefacade。

Use the new enginefacade from oslo_db

https://blueprints.launchpad.net/neutron/+spec/enginefacade-switch