Nova Liberty blueprints

Posted Eric_Xiett

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nova Liberty blueprints相关的知识,希望对你有一定的参考价值。

近期浏览了nova L版本的bp,简单总结了下。

主题背景链接级别备注
nova-api-policy权限检查的地方不一致,有的在compute api层,有的在rest api层,还有的在db层,代码不统一,举例: pause server,在REST API layer: pause server “compute_extension:admin_actions:pause”,在compute api层pause in compute API “compute:pause”,在db层require_admin_context decorator for db API service_gethttps://blueprints.launchpad.net/nova/+spec/nova-api-policy-final-partHigh
liberty-bump-object-and-rpcapi-versions使用Micro版本号后,许多基于以前大版本机制的object和rpc api需要去掉https://blueprints.launchpad.net/nova/+spec/liberty-bump-object-and-rpcapi-versionsHigh
nova-api-deprecate-extensionsv2 版本的API包括extensions,根据用户需要可以使能或禁止使用,这样会导致云的部署是异构的,保证稳定API的提供的前提下,需要在下个release版本中将这些API去掉,此BP先将这些API废弃掉https://blueprints.launchpad.net/nova/+spec/nova-api-deprecate-extensionsHigh
liberty-objects遗留的关于object的转变和维护工作https://blueprints.launchpad.net/nova/+spec/liberty-objectsHigh
liberty-olso-sync1)policy;2)oslo-config-generator;3)oslo.service库;rootwrap后台模式,等等,nova使用oslohttps://blueprints.launchpad.net/nova/+spec/liberty-olso-syncHighhttp://lists.openstack.org/pipermail/openstack-dev/2015-June/067131.html
api-relax-validationv2版本的API将来会废弃和去掉,但是现在对v2版本的检查和v2.1一样,都是强检查,这样就导致v2版本的API请求返回很多invalid的结果,对tempest测试有影响,为了减少这些影响,对v2版本的API检查放松。https://blueprints.launchpad.net/nova/+spec/api-relax-validationHigh
online-schema-changes1)数据库的迁移必须在离线的状态下进行;2)部署过程中会有很长时间的downtime;3)迁移动作涉及到2处:nova的数据库model和升级脚本https://blueprints.launchpad.net/nova/+spec/online-schema-changesHighexpand/contract workflow
use-os-brick-librarynova和cinder在volume的发现和去除存在重复的代码,cinder组开发了os-brick库,nova要用此库替代重复的代码https://blueprints.launchpad.net/nova/+spec/use-os-brick-libraryHigh
nova-no-downward-sql-migration数据库向后migration引入的问题更多https://blueprints.launchpad.net/nova/+spec/nova-no-downward-sql-migrationHigh参考https://github.com/openstack/openstack-specs/blob/master/specs/no-downward-sql-migration.rst
request-spec-objectscheduler模块中的方法比如select_destinations()需要参数request_spec,它是嵌套的字典,仅存留在内存中,不易跟踪和查看,需要使用数据库对象进行存储,这样也是为后续scheduler代码的分离做准备https://blueprints.launchpad.net/nova/+spec/request-spec-objecHigh部分完成
make-resource-tracker-use-objectsnova使用对象的方式替换掉了nova-compute使用nova-conductor API更新数据库的方式,本bp解决resource_tracker相关剩余的修改https://blueprints.launchpad.net/nova/+spec/make-resource-tracker-use-objectsHigh相关工作已经在kilo中进行,但未能完全改好。
run-nova-services-under-apache2受keystone的触发,keystone所有的服务可以跑在Apache2下,即运行在httpd中(不知有什么好处?集中?),nova也准备这么做,此bp仅增加脚本,针对nova-api服务,支持DevStack。https://blueprints.launchpad.net/nova/+spec/run-nova-services-under-apache2Medium实验性质 EXPERIMENTAL support script for running Nova API under Apache2 etc
service-version-numbernova使用object来支持数据的在线migration,服务之间操作数据库,相关的数据必须要和服务的code一致才可以migration,此bp增加服务版本号https://blueprints.launchpad.net/nova/+spec/service-version-numberMedium
nova-python3nova所有依赖包均已支持python3,此bp使得nova支持python3,同时不影响python2https://blueprints.launchpad.net/nova/+spec/nova-python3Medium
cells-host-mappingnova已经划分为cells,目前没有host和cell的映射关系表。https://blueprints.launchpad.net/nova/+spec/cells-host-mappingMedium
cells-instance-migrationnova已经划分为cells,增加nova-manage对instance和cell的注册关系,便于查询,nova-manage cell_v2 register_instanceshttps://blueprints.launchpad.net/nova/+spec/cells-instance-migrationMedium
convert-image-meta-into-nova-object为了统一nova驱动之间使用image属性的方式,增加NovaObject - VirtDriverImagePropertieshttps://blueprints.launchpad.net/nova/+spec/convert-image-meta-into-nova-objectMedium
migration-fix-resource-tracking虚拟机在多个计算节点之间进行迁移、resize、重生等操作时,resource_tracker存在bug:1)热迁移和重建过程中并未考虑resource的claim;2)NUMA拓扑和pci设备不像cpu一样,仅需claim即可,但需要持续查看是否真的成功。https://blueprints.launchpad.net/nova/+spec/migration-fix-resource-trackingMedium
no-valid-host-reporting当虚拟机部署时,没找到合适主机时,提示的信息不完全,不便于定位,此bp进行改进https://blueprints.launchpad.net/nova/+spec/no-valid-host-reportingMedium
use-oslo-objects使用oslo.versionedobjectshttps://blueprints.launchpad.net/nova/+spec/use-oslo-objectsMedium
robustify-evacuate增强evacuate流程,比如主机名发生变化,重生即可触发,导致数据丢失,记录时间戳https://blueprints.launchpad.net/nova/+spec/robustify-evacuateMedium重用migration data structure
oslo-config-generatoroslo组已经放弃了老的config的管理方式openstack/common/config.https://blueprints.launchpad.net/nova/+spec/oslo-config-generatorMedium
allocation-ratio-to-resource-trackerCPU/MEM应该体现计算的超分的能力,而不应该是scheduler的策略。当host aggregate也配置了超分比率时,会出现重复计算覆盖的情况。https://blueprints.launchpad.net/nova/+spec/allocation-ratio-to-resource-trackerMedium
mark-host-downnova-compute服务down的时间比较慢,一般是60秒,这样导致evacuate执行要等的时间较长。此BP增加新的API能使服务立即down掉。https://blueprints.launchpad.net/nova/+spec/mark-host-downMedium
devref-refresh-liberty“更新nova相关文档http://docs.openstack.org/infra/manual/developers.html
https://github.com/openstack/project-team-guide”https://blueprints.launchpad.net/nova/+spec/devref-refresh-libertyMedium部分完成
nova-rootwrap-daemon-modenova中好多的实现,调用oslo.rootwrap, 而后者依赖linux的命令执行,以root用户在计算和网络节点上执行命令,这样命令执行的效率是很重要的考虑点。在neutron中将rootwrap作为后台进程执行,效果不错。Nova目前受此影响较少,因为调用libvirt api 比较多。但还是需要进行修改。https://blueprints.launchpad.net/nova/+spec/nova-rootwrap-daemon-modeMedium
test-collapse-v2-and-v21目前v2和v2.1功能测试用例和sample文件都是分离的。为减少维护量v2均merge到v2.1.https://blueprints.launchpad.net/nova/+spec/test-collapse-v2-and-v21Medium
consolidate-console-api目前支持虚拟机的控制台:VNC, SPICE, RDP and serial,每一种都对应一个API,重复,且不易维护,此bp增加新的API,重构,统一入口https://blueprints.launchpad.net/nova/+spec/consolidate-console-apiLow
metadata-service-network-infometadata服务提供的网络信息较少,需要改进。https://blueprints.launchpad.net/nova/+spec/metadata-service-network-infoLow提供IP,MAC,网关,路由等
vif-driver-ib-passthroughInfiniBand Ethernet SRIOV 设备更加普遍,性能也高,neutron Mellanox Ml2 Mechanism Driver 已经实现,nova 需要增加对这些设备的支持https://blueprints.launchpad.net/nova/+spec/vif-driver-ib-passthroughLow
db2-database增加DB2作为后端数据库https://blueprints.launchpad.net/nova/+spec/db2-databaseLow
libvirt-macvtap-vifneutron新实现的macvtap ml2 driver和agent需要nova vif集成。https://blueprints.launchpad.net/nova/+spec/libvirt-macvtap-vifLow
add-locking-information-in-server-get-response虚拟机可以被管理员或者拥有者锁定,但没有API提供查看虚拟机是否被锁定https://blueprints.launchpad.net/nova/+spec/add-locking-information-in-server-get-responseLow
add-vif-net-id-in-vif-list在v2.1 的 interfaces list中增加VIF net_id的显示https://blueprints.launchpad.net/nova/+spec/add-vif-net-id-in-vif-listLow
admin-query-any-keypair目前keypairs只能由拥有者查看或者修改,管理员应该也有权限https://blueprints.launchpad.net/nova/+spec/admin-query-any-keypairLow
allow-ip6-search-for-non-admin目前只有管理员通过ipv6的地址查看虚拟机,普通用户应该也支持,和ipv4地址过滤的机制一样。https://blueprints.launchpad.net/nova/+spec/allow-ip6-search-for-non-adminLow
cells-scheduler-anti-affinity-filter增加一种过滤器,能部署虚拟机到指定的cell上。https://blueprints.launchpad.net/nova/+spec/cells-scheduler-anti-affinity-filterLow
check-flavor-type-before-add-tenant公共的flavor可以增加tenant access,但查看报错,此bp在增加tenant access前先检查是否是publichttps://blueprints.launchpad.net/nova/+spec/check-flavor-type-before-add-tenantLow
consolidate-libvirt-fs-volume-drivers目前libvirt volume的文件系统类型的驱动包括NFS、GlusterFS、SMBFS、Quobyte,有很多相似的代码,此bp抽象出基类,然后供各自覆盖使用,统一各种接口。考虑到cinder中对应后端的配置项不好统一,nova中仍然保留原来的。https://blueprints.launchpad.net/nova/+spec/consolidate-libvirt-fs-volume-driversLow
emc-sdc-libvirt-volume-driver增加libvirt volume 驱动支持EMC ScaleIOhttps://blueprints.launchpad.net/nova/+spec/emc-sdc-libvirt-volume-driverLow
vmware-limits目前vmware驱动支持设置CPU限制,此bp扩展到内存、磁盘、网卡限制https://blueprints.launchpad.net/nova/+spec/vmware-limitsLow部分完成
libvirt-set-admin-password1.2.16版本的libvirt提供了针对QEMU/KVM用户设置管理员密码的API,利用起来https://blueprints.launchpad.net/nova/+spec/libvirt-set-admin-passwordLow增加镜像属性os_admin_user
hyper-v-test-refactoring-liberty老的Hyper-V的测试代码难以维护,需要重构https://blueprints.launchpad.net/nova/+spec/hyper-v-test-refactoring-libertyLow
remote-fs-driver当虚拟机迁移时,会调用SSH touch,ssh mkdir,ssh rm,rsync,这些接口都会带来安全风险,目前不能都不使用,但可以减少使用的数量。https://blueprints.launchpad.net/nova/+spec/remote-fs-driverLow增加配置项,区分ssh和rsync
vif-type-tap支持Calico项目,即虚拟机直接通过host的网卡,而无需经过桥https://blueprints.launchpad.net/nova/+spec/vif-type-tapLow
optional-on-shared-storage-flag-in-rebuild-instance重生(evacuate)接口中有必选参数onSharedStorage,但这个属性可以在virt驱动获取到,为减轻管理员的工作和重生的自动化,需要去掉,但考虑到RPC接口的兼容性,将此参数做成可选的。https://blueprints.launchpad.net/nova/+spec/optional-on-shared-storage-flag-in-rebuild-instanceLow
vmware-webmks-consolevSphere 5.5 支持HTML5的控制台,不存在现有控制台比如VNC的问题:部署难、伸缩难、安全性低,在nova virt驱动支持WebMKShttps://blueprints.launchpad.net/nova/+spec/vmware-webmks-consoleLow
pass-down-instance-name-to-ironic-driverironic增加了HP OneView的新驱动,nova需要将instance的display_name传递给ironic使用。https://blueprints.launchpad.net/nova/+spec/pass-down-instance-name-to-ironic-driverLowdisplay_name 区分大小写,而hostname不区分。
cleanup-scheduled-atnova的instances表中scheduled_at字段被launched_at字段代替,前者变得冗余,需要去掉https://blueprints.launchpad.net/nova/+spec/cleanup-scheduled-atLow
rename-pcs-to-virtuozzoParallels Cloud Services已经改名,nova virt驱动也需要进行改名。https://blueprints.launchpad.net/nova/+spec/rename-pcs-to-virtuozzoLow为了兼容,将新Virtuozzo更换成parallels。
show-reserved-status-in-os-fixed-ips-apifix ips 的API增加显示reserved状态https://blueprints.launchpad.net/nova/+spec/show-reserved-status-in-os-fixed-ips-apiLownova-manage废弃,v2的API也被冻结,仅修改V2.1
vmware-swap-supportnova Vmware驱动增加对swap盘的支持https://blueprints.launchpad.net/nova/+spec/vmware-swap-supportLow
vmware-nsxv-supportnova增加对VMware NSXv Neutron 插件的支持,包括:1)VNIC 索引;2)元数据支持https://blueprints.launchpad.net/nova/+spec/vmware-nsxv-supportLow
vmware-driver-domain-metadatanova Vmware驱动增加对元数据的支持https://blueprints.launchpad.net/nova/+spec/vmware-driver-domain-metadataLowmetadata放到config_spec中的annotation字段
vmware-console-lognova Vmware驱动增加对控制台日志的支持https://blueprints.launchpad.net/nova/+spec/vmware-console-logLow借助vCenter中的Virtual Serial Port Concentrator,将日志放到特定的文件夹中,支持文件最大设置等
virtuozzo-container-boot-from-volume目前从卷启动Virtuozzo容器(vm_mode=exe),当挂载2个盘时会生成错误的xml配置文件,一个是文件系统,另一个是boot盘,但是错误的order。https://blueprints.launchpad.net/nova/+spec/virtuozzo-container-boot-from-volumeLow
project-id-in-metadata元数据增加项目IDhttps://blueprints.launchpad.net/nova/+spec/project-id-in-metadataLow
/aggregatetypeaffinityfilter-multi-value-supportAggregateTypeAffinityFilter增加对多个instance_type的支持https://blueprints.launchpad.net/nova/+spec/aggregatetypeaffinityfilter-multi-value-supportLow
network-template-routes-injection虚拟机部署时,网络没有设置DHCP时,需要将路由注入到interfaces.templatehttps://blueprints.launchpad.net/nova/+spec/network-template-routes-injectionLow使用python的字符串模板功能
add-os-brick-volume-driver-hgst-solutionsnova volume驱动增加HGST硬盘的支持https://blueprints.launchpad.net/nova/+spec/add-os-brick-volume-driver-hgst-solutionsLow
libvirt-virtio-net-multiqueuevirtio-net多队列特性能改善性能,在flavor的spec中增加hw_vif_mutliqueue_enabled,使能/禁止,如果开启,会设置队列的数量和guest的VCPU数相同。https://blueprints.launchpad.net/nova/+spec/libvirt-virtio-net-multiqueueLow

以上是关于Nova Liberty blueprints的主要内容,如果未能解决你的问题,请参考以下文章

Openstack liberty中nova-compute服务的启动过程

OpenStack-liberty版Nova计算节点部署服务部署

Openstack liberty源码分析 之 云主机的启动过程3

Liberty nova-api HTTP请求执行流程

OpenStack nova M Blueprints 分析

OpenStack nova M Blueprints 分析