OpenStack 2015.1.0 (Kilo)更新日志
原文: https://wiki.openstack.org/wiki/ReleaseNotes/Kilo/zh-hans
目录
-
1 OpenStack 2015.1.0 (Kilo)更新日志
- 1.1 OpenStack对象存储(Swift)
- 1.2 OpenStack 计算服务(Nova)
- 1.3 OpenStack镜像服务 (Glance)
- 1.4 OpenStack面板(Horizon)
- 1.5 OpenStack鉴权服务(Keystone)
- 1.6 OpenStack网络服务(Neutron)
- 1.7 OpenStack块存储(Cinder)
- 1.8 OpenStack遥测服务(Ceilometer)
- 1.9 OpenStack编排服务(Heat)
- 1.10 OpenStack数据库服务(Trove)
- 1.11 OpenStack数据处理服务(Sahara)
- 1.12 OpenStack裸金属服务(Ironic)
- 1.13 OpenStack文档
OpenStack对象存储(Swift)
新功能
纠删码(beta)
Swift现在支持纠删码(EC)存储策略类型。这样部署人员、以极少的RAW容量达到极高的可用性,如同在副本存储中一样。然而,EC需要更多的CPU和网络资源,所以并不适合所有应用场景。EC非常适合在一个独立的区域内极少访问的、大容量数据。
Swift纠删码的实现对于用户是透明的。对于副本存储和纠删码存储的类型,在API上没有任何区别。
为了支持纠删码,Swift现在需要依赖PyECLib和liberasurecode。liberasurecode是一个可插件式的库,允许在你选择的库中实现EC算法。
更详细文档请参阅 http://swift.openstack.org/overview_erasure_code.html
复合型令牌(Composite tokens)
复合型令牌允许其他OpenStack服务以客户端名义将数据存储于Swift中,所以无论是客户端还是服务在更新数据时,都不需要双方彼此的授权。
一个典型的例子就是一个用户请求Nova存放一个VM的快照。Nova将请求传递给Glance,Glance将镜像写入Swift容器中的一组对象中。在这种场景下,用户没有来自服务的合法令牌时,无法直接修改快照数据。同样,服务自身也无法在没有用户合法令牌的情况下更新数据。但是数据的确存在于用户的Swift账户中,这样使得账户管理更简单。
更详细的文档请参阅http://swift.openstack.org/overview_backing_store.html
更小规模、不平衡集群的数据位置更新
Swift数据的存放位置现在根据硬件权重决定。当前,允许运维人员逐渐的添加新的区域(zones)和地域(regions),而不需要立即触发大规模数据迁移。同时,如果一个集群是非平衡的(例如,在一个区域(zones)的集群中,其中一个的容量是另外一的两倍),Swift会更有效的使用现有空间并且当副本在集群空间不足时发出警告。
全局性集群复制优化
区域(regions)之间复制时,每次复制只迁移一个副本。这样远程的区域(region)可以在内部复制,避免更多的数据在广域网(WAN)拷贝。
已知问题
- 作为beta更新,纠删码(EC)的功能接近完成,但是对于某些功能仍然不完整(像多范围(multi-range)读取),并且没有一个完整的性能测算。这个功能为了持久性依赖于ssync。部署人员督促我们做更大规模的测试,并且不要在生产环境部署中使用纠删码存储策略。
升级提示
像往常一样,你能在不影响最终用户体验的前提下,升级到这个版本的Swift。
- 为了支持纠删码,Swift需要一个新的依赖PyECLib(和liberasurecode等)。并且eventlet的最低版本要求也升高了。
OpenStack 计算服务(Nova)
新功能
API v2.1
- 我们有了下一代Nova API的第一个更新版本v2.1。v2.1版本的目的是向回兼容v2.0版本,并且拥有增强的API校验。API所有更新是通过发布微版本(microversion)发现的。更多信息请参阅:http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/api-microversions.html
- kilo版本中,我们仍然使用v2.0 API的代码提供v2.0 API的请求。我们希望v2.1将能够同时为v2.0和v2.1请求提供服务。
- liberty v2.0现在被冻结了,所有功能被添加在v2.1 API中使用微版本(microversions)机制实现。kilo版本中微版本(microversion)更新包括:
- 扩展keypair API支持x509证书,能够和Windows WinRM使用,这个功能是v2.1 API中第一个被以微版本(microversions)添加的功能。
- 在os-extended-server-attributes暴露扩展属性
- python-novaclient现在还不支持v2.1 API
- Nova v2.1 API的策略执行得到优化。
- 只在API入口执行策略
- 对于单一的API,去掉了重复性规则
- 所有的v2.1 API的策略规则使用'os_compute_api'作为前缀,以区别于v2 API。
- 之前,由于在db层面权限检查的硬编码(hard-code),部分Nova API并不支持策略的配置。总是需要admin用户权限。部分在Nova v2.1 API中硬编码(hard-code)权限检查被移除,使得API策略可配置。其余的硬编码(hard-code)将在Liberty版本被移除掉。
升级支持
- 我们减少了使用DB迁移脚本执行数据迁移,现在这部分使用一种"懒(lazy)"方式在DB的对象代码中完成。在nova-manage命令中可以帮助强制进行数据迁移。更多的信息请见:http://specs.openstack.org/openstack/nova-specs/specs/kilo/approved/flavor-from-sysmeta-to-blob.html
- https://review.openstack.org/#/c/97946/ 增加了编号为267的数据库迁移脚本,这个脚本主要扫描instances.uuid为空(null)的记录并且一旦发现就会导致失败,因为迁移中需要保证instances.uuid非空并且在那个字段加入了UniqueConstraint限制。为了避免数据库迁移失败,提供了一个帮助脚本用来搜索空(null)的instances.uuid的记录。运行'nova-manage db sync'之前,运行帮助脚本‘nova-manage db null_instance_uuid_scan’,默认情况下,该脚本只会检索记录,并将结果输出,不会改变任何内容。如果在参数中加入--delete,就会自动删除所有instances.uuid为空的记录。
调度器(Scheduler)
- 一系列的性能优化
- 我们在优化scheudler的代码结构,这将帮助我们能够演进和优化调度过程。这一点对于终端用户不可见。
Cells v2
- 已经开始添加了对cell v2版本的支持,但是还没达到能够使用的程度。
- 新的'nova-manage api_db sync' 和 'nova-manage api_db version'命令用于支持cell新的api数据库结构,但是还没有任何代码使用该数据库,所有没有必要建立。
计算资源驱动
Hyper-V
- 支持生成两个虚拟机:https://blueprints.launchpad.net/nova/+spec/hyper-v-generation-2-vms
- 支持SMB为基础的卷,和已经存在的ISCSI卷:http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/hyper-v-smbfs-volume-support.html
- 支持x509证书的keyparis:http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/keypair-x509-certificates.html
- 主机电源操作已经在Hyper-V中可用了:https://blueprints.launchpad.net/nova/+spec/hyper-v-host-power-actions
Libvirt (KVM)
- NFV相关功能:
- 以NUMA为基础的调度 : http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/input-output-based-numa-scheduling.html
- 虚拟机使用固定的物理CPU: http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/virt-driver-cpu-pinning.html
- 超大页(Large Page)支持: http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/virt-driver-large-pages.html
- vhostuser VIF驱动: http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/libvirt_vif_vhostuser.html
- 支持在IBM System z运行KVM: http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/libvirt-kvm-systemz.html
- 支持parallels云服务: http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/pcs-support.html
- 支持SMB卷: http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/libvirt-smbfs-volume-support.html
- 使用QEMU agent静默(Quiesce)文件系统(例如:做快照之前): http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/quiesced-image-snapshots-with-qemu-guest-agent.html
- Quobyte卷支持: http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/quobyte-nova-driver.html
- 支持QEMU iSCSI initiator: http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/qemu-built-in-iscsi-initiator.html
VMware
- 支持Ephemeral磁盘: http://specs.openstack.org/openstack/nova-specs/specs/kilo/approved/vmware-ephemeral-disk-support.html
- 支持vSAN: http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/vmware-vsan-support.html
- 支持OVA镜像: http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/vmware-driver-ova-support.html
- 支持SPBM存储策略: http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/vmware-spbm-support.html
Ironic
- 对于ironic支持传递flavor扩展属性:http://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/pass-flavor-capabilities-to-ironic-virt-driver.html
已知问题
- Evacuate恢复部分代码存在损坏数据的潜在危险。在nova-compute启动过程中,虚拟化端会汇报instance的状态,用于检查物理机发生故障过程中,虚拟机是否被移走了(i.e. 被evacuated)。如果此时发现的确发生迁移了,那么本地的数据就会被彻底删除。这样就存在潜在的可能出现选择错误,虚拟机被错误的销毁。在libvirt节点上,这样的情况可能会由于改变系统的主机名引发。在vmware节点中,这个可能会由于尝试从两个不同的主机(不同的主机名)管理同一个vcenter引发。这个Bug可能会在Liberty中得到修复,但是在当前部署中,关闭这种行为的建议是设置destroy_after_evacuate=False。
注意:这个并不是回归(regression)并且在evacuate的设计中已经提到这个瑕疵。这个并不容易修复,所以使用这种方式绕过去(workaround)解决这个潜在的数据损坏。在liberty的修复记录:https://review.openstack.org/#/c/161444/。
- 生成的配置文件样例可能会缺少某些oslo相关的配置
升级提示
下面是你在升级中需要了解的内容。在可能的情况下,git提交的hash编码会提供你找到更多更详细的信息:
- 如果你的Neutron端口(ports)是在Nova之外建立的,在你的服务器删除后并不会删除这些端口:1153a46738fc3ffff98a1df9d94b5a55fdd58777
- EC2 API支持现在被废弃了,可能要在kilo删除掉:f098398a836e3671c49bb884b4a1a1988053f4b2
- Websocket代理需要被和API节点一起升级,由于旧的API节点在鉴权控制台权限时不会发送access_url,新的代理服务(这个提交和以后的)处理类似请求时会鉴权失败9621ccaf05900009d67cdadeb1aac27368114a61
- 在全部升级到kilo后(例如,所有节点都运行kilo代码),你需要在后台运行一个flavor信息更新的迁移,把旧名字改为新名字。Kilo的conductor节点会根据需要进行处理,但是其余的空闲数据需要在后台完成迁移。这个要在Liberty更新后全部完成,到时候旧的位置会被废弃。使用"nova-manage migrate-flavor-data"完成迁移。
- 由于Nova v2.1 API强制策略的优化。在v2.1 API策略上有一系列改变发生。因为v2.1 API之前一直没有更新,所以这些改变无法向前兼容。所以最好使用策略的样例配置取代之前的版本。
- VMware拯救(rescue)虚拟机的行为不再生成一个新的虚拟机而是直接在当前镜像上进行:cd1765459a24e52e1b933c8e05517fed75ac9d41
- force_config_drive = always被废弃了,需要使用force_config_drive = True替换:c12a78b35dc910fa97df888960ef2b9a64557254
- 运行hyper-v,如果你已经部署的代码晚于这个commit b4d57ab65836460d0d9cb8889ec2e6c3986c0a9b,但是早于这个commit c8e9f8e71de64273f10498c5ad959634bfe79975,那么你可能存在问题,需要手动解决,查看这个commit c8e9f8e71de64273f10498c5ad959634bfe79975
- 改变multi_instance_display_name_template的默认值:609b2df339785bff9e30a9d67d5c853562ae3344
- 使用"nova-manage db null_instance_uuid_scan"确保DB迁移之前数据是干净的,c0ea53ce353684b48303fc59393930c3fa5ade58
OpenStack镜像服务 (Glance)
新功能
- 使用已经毕业的oslo.policy项目。账户配置信息更新,升级在etc/config下的配置文件。http://specs.openstack.org/openstack/glance-specs/specs/kilo/pass-targets-to-policy-enforcer.html
- 可以使一个镜像变为非激活状态。增加了两个新的API调用可能会需要改变策略配置。http://specs.openstack.org/openstack/glance-specs/specs/kilo/deactivate-image.html
- 在镜像导入过程中,支持基本的镜像格式转换。 http://specs.openstack.org/openstack/glance-specs/specs/kilo/conversion-of-images.html
- Glance排序增强。v2版本的镜像API支持新的排序语法,排序时可以指定排序字段和方向:http://specs.openstack.org/openstack/glance-specs/specs/kilo/sorting-enhancements.html
- 通知支持metadefs:http://specs.openstack.org/openstack/glance-specs/specs/kilo/metadefs-notifications.html
- VMware存储驱动支持多datastore:http://specs.openstack.org/openstack/glance-specs/specs/kilo/vmware-store-multiple-datastores.html
- 在镜像导入过程中获取镜像信息:http://specs.openstack.org/openstack/glance-specs/specs/kilo/introspection-of-images.html
- 在Metadefs中支持多个值的操作。http://specs.openstack.org/openstack/glance-specs/specs/kilo/metadata-multivalue-operators-support.html
- 增加新的taskflow执行方法(executor)并且移除了旧的eventlet执行方法。http://specs.openstack.org/openstack/glance-specs/specs/kilo/taskflow-integration.html
- Digest算法现在是可以配置的。SHA-1现在不适合作为通用的数字签名应用,从安全角度考虑,对于每个FIPS需要112字节,我们提供了一个配置可以在这些标准中进行选择。
- Metadef标签支持。http://specs.openstack.org/openstack/glance-specs/specs/kilo/metadefs-tags.html
- 允许API返回空值。Glance的v2版本API现在也返回为空值的字段。
- 目录索引服务实验性API。http://specs.openstack.org/openstack/glance-specs/specs/kilo/catalog-index-service.html
- 存储驱动更细粒度的支持。 http://specs.openstack.org/openstack/glance-specs/specs/kilo/store-capabilities.html
- 数据存储使用语义版本(Semver, Semantic Versioning)工具。http://specs.openstack.org/openstack/glance-specs/specs/kilo/semver-support.html
- 重新加载配置文件时使用SIGHUP信号。配置重新加载零down机。http://specs.openstack.org/openstack/glance-specs/specs/kilo/sighup-conf-reload.html
- 软件Metadata定义。http://specs.openstack.org/openstack/glance-specs/specs/kilo/software-metadefs.html
- Glance Swift存储使用多个容器(Containers)存储镜像。http://specs.openstack.org/openstack/glance-specs/specs/kilo/swift-store-multiple-containers.html
已知问题
- 当镜像名称大于255个字符时,添加镜像时抛出500错误:https://bugs.launchpad.net/glance/+bug/1424038
- Glance v2版本API与v1版本更换镜像所有者的API不兼容:https://bugs.launchpad.net/glance/+bug/1420008
- Glance的scrubber在操作者使用信任模式鉴权下不工作:https://bugs.launchpad.net/glance/+bug/1439666
升级提示
- 移除废弃的选项db_enforce_mysql_charset。 相应的commit: efeb69f9033a57a1c806f71ee3ed9fd3f4d2475e
- 现在支持metadef资源的通知,相应的commit: fd547e3717dc4a3a92c1cb2104c18608a4f4872a
- VMware多datastore支持可以通过几个选项进行配置,相应的commit: 96fb31d7459bd4e05e052053177dce4d38cdaf90
- 移除eventlet执行方法,并且增加一个新的Taskflow的执行方法,用于异步任务,相应的commits: ae3135e1d67df77697a24fddaee3efeadb34a0dd和 a39debfd55f6872e5f4f955b75728c936d1cee4b
- 在配置中使用endpoint配置替代snet配置,相应的commit: 41a9a065531ec946b4a9baf999f97d10fa493826
- Digest算法现在可以配置,相应的commit: 82194e0c422966422f7a4e2157125c7ad8fbc5b5
- 清理已经被删除的镜像,镜像在'保存中'状态时删除。相应的commit: 0dc8fbb3479a53c5bba8475d14f4c7206904c5ea
- Glance现在使用毕业的oslo.policy模块。相应的commit: cb7d5a4795bbdaf4dc3eaaf0a6fb1add52c09011
- 镜像现在可以设置为非激活状态。一个新的'非激活'状态已经添加到镜像数据中。相应的commit: b000c85b7fabbe944b4df3ab57ff73883328f40d
OpenStack面板(Horizon)
新功能
- 支持通过Web单点登陆的统一认证方式——在keystone中做配置后,用户就能选择认证机制来使用已部署的功能。这些功能的使用能够通过更改local_settings.py配置实现。相关启用设置和配置可以在这里找到:here。
- 支持主题 —— 包含了可以为Horizon指定自定义主题的简单功能。允许使用Bootstrap的CSS值,Horizon定义的变量,以及自定义CSS。更多信息参见:here。
- Sahara UX 改进 —— 集cluster创建和job创建引导页的增加极大改进了Sahara用户体验。
- Launch Intance向导(beta) —— 用AngularJS实现了launch instance workflow的全面替代,用以解决现有的launch instance workflow的可用性问题。这项功能最近才引入并且缺乏测试,所以在Kilo版本中标记为beta并且默认是不启用的。要使用新的workflow,需要对local_settings.py做如下更改:
LAUNCH_INSTANCE_NG_ENABLED = True
。另外,可以做如下更改来禁用默认的启用instance向导:LAUNCH_INSTANCE_LEGACY_ENABLED = False
。这项新功能体现了Horizon未来的发展。
- Nova
- 允许service在Hypervisor中 禁用/启用
- 从host迁移所有instance
- 暴露serial console
- Cinder
- 默认为Cinder v2
- 支持已管理/未管理的volume —— 允许管理员管理已存在的volume不再被cinder管理,未管理的被cinder管理。
- 支持project间的volume转移
- 支持volume加密元数据
- Glance
- 增加了界面以允许管理员查看/新增/修改 Glance元数据定义
- Heat
- Stack Template界面
- 操作资源控制板
- Stacks的挂起/恢复操作
- 预览Stack界面允许用户在定义模板中的stacks前可以先预览。
- Trove
- 调整Trove实例 —— 更改instance的flavor
- Ceilometer
- 展示来源于Ceilometer的IPMI测量数据
- Horizon中新的可重复使用的AngularJS widgets:
- AngularJS 表格实现
- Table 绘制 —— 扩展的表格内容
- 改进的 client/server 查找
- 转换表格widget
- 可为Horizon配置web root不仅仅限于“/”
已知问题
- 从快照创建的Volumes是空的-https://bugs.launchpad.net/horizon/+bug/1447288
- 还没有完全支持Django 1.8
升级提示
- 目前支持Django 1.7
OpenStack鉴权服务(Keystone)
新功能
分层multitenancy
创建一个新的project时,可以设置属性parent_id
的值为一个已存在project,使 Projects嵌套在其他projects下。
Role现在可以分配给project分层子树上的 users和groups
这项功能还需要其他Openstack服务(例如hierarchical quotas)的相应支持使其广泛的生效
Fernet tokens
区别于UUID tokens只能持久化存入数据库,Fernet tokens完全不需要持久化。部署人员可以通过设置keystone.conf
中的[token] provider = keystone.token.providers.fernet.Provider
来启用Fernet token
Fernet tokens需要symmetric encryption keys,这些keys可以使用keystone-manage fernet_setup
建立, 并且使用keystone-manage fernet_rotate
周期性地轮换。这些keys必须被在一个multi-node(或者multi-region)部署中的所有Keyston nodes共享,这样就能使一个node生成的tokens可以立即被其他节点验证。
Identity federation
- Keystone现在可以作为联邦身份提供者(IdP: federated identity provider)为另外一个Keystone实例提供本地用户的SAML断言(SAML assertions),可能是ECP封装(ECP-wrapped)。
- 支持OpenID连接作为联邦身份鉴权机制(federated identity authentication mechanism)。
- 在Keystone中增加对多"Remote IDs"关联到单一的鉴权提供者。这有助于有多身份提供者使用一个通用的映射。
- 增加为已经拥有Idp用户通过web浏览器鉴权的能力,实现单点登录。
- 联邦令牌(federated tokens)现在使用
token
鉴权方法,mapped
和saml2
仍然有效。 - 联邦用户(federated users)可以映射到本地已经存在的身份上。
- 在规则集(rulesets)映射中定义的组可以用名字和域鉴权
- 出现在联邦身份断言(federated identity assertions)中的组,可以被自动的映射为本地已经存在的组中,并且拥有本地用户关系映射(通过白名单和黑名单过滤)
LDAP
- 用户指定的API过滤项现在由LDAP本身处理,现在由keystone取代
- "试验性"支持存储指定域(domain-specific)鉴权后端HTTP API在SQL中配置。这个主要用户场景是,当使用HTTP API创建一个新的域(domain),并且马上配置一个指定域(domain-specific)的LDAP驱动,而不需要重启keystone。
鉴权
- "分配(assignment)"后端已经被分离到"资源(resource)"后端(包含domains, projects和roles),并且"分配(assignment)"的后端包含了授权的映射模型
- 支持再次信任授权。当信任关系建立后,被信任人可以通过另外一个信任重新授权该信任的角色。
- Keystone支持无范围(unscoped)的token请求,即使用户设置了
default_project_id
。 - 部署人员可以修改配置来限制已经有范围的令牌重新获取范围(re-scoping),在
keystone.conf
设置[token] allow_rescope_scoped_token = false
。
升级提示
- Keystone的XML支持将在Kilo版本删除。当从Juno升级到Kilo,建议将XML和XmlBodyMiddleware相关的信息从Keystone Paste p配置删除。这包含删除XML中间层过滤器以及public_api, admin_api, api_v3, public_version_api, admin_version_api相关的和其他包含XML过滤器的流水线(pipelines)。
- 所有之前的扩展(OS-FEDERATION, OS-OAUTH1, OS-ENDPOINT-POLICY and OS-EP-FILTER)现在被默认支持,并且在相关标记中,标记为"试验"或者"稳定"。
- 不在支持SQL结构的回退。这个变化主要是回退并没有经过良好的测试,而且在很多迁移中需要支持数据变化,难度越来越大。
- 需要以下Python库:cryptography, msgpack-python, pysaml2 和 oauthlib。
-
keystone.middleware.RequestBodySizeLimiter
被废弃,取而代之的是oslo_middleware.sizelimit.RequestBodySizeLimiter
并且在Liberty移除。 - Eventlet相关的配置项,如:
public_bind_host
,bind_host
,admin_bind_host
,admin_port
,public_port
,public_workers
,admin_workers
,tcp_keepalive
,tcp_keepidle
被从[DEFAULT]
移除掉,移到了[eventlet_server]
. 相似的,Eventlet相关的SSL配置选项如:enable
,certfile
,keyfile
,ca_certs
,cert_required
已经从[ssl]
配置项移动到[eventlet_server_ssl]
. -
keystone.token.backends.sql
被keystone.token.persistence.backends.sql
取代. -
keystone.token.backends.kvs
被keystone.token.persistence.backends.kvs
取代. -
keystone.token.backends.memcache
被keystone.token.persistence.backends.memcache
取代. -
keystone.assignment.backends.kvs
被keystone.assignment.backends.sql
取代. -
keystone.identity.backends.kvs
被keystone.identity.backends.sql
取代. -
keystone.contrib.stats.core.StatsMiddleware
被外部工具取代. -
keystone.catalog.backends.templated.TemplatedCatalog
被keystone.catalog.backends.templated.Catalog
取代. -
keystone.contrib.access.core.AccessLogMiddleware
被外部访问日志取代. -
keystone.trust.backends.kvs
被keystone.trust.backends.sql
取代. -
[catalog] endpoint_substitution_whitelist
已经从keystone.conf
删除,作为加强安全的一部分。 -
[signing] token_format
被从keystone.conf
删除,取代的是[token] provider
.
OpenStack网络服务(Neutron)
新功能
- DVR现在除了VXLAN/GRE外还支持VLANs
- ML2分层端口绑定(Port Binding)
- 新的V2版本的LBaas(负载均衡即服务)API
- 支持OVS ML2驱动的端口安全
- 在Kilo版本中支持的新插件:
- A10 Networks LBaaS V2 Driver
- Brocade LBaaS V2 Driver
- Brocade ML2 driver for MLX and ICX switches
- Brocade L3 routing plugin for MLX switch
- Brocade Vyatta vRouter L3 Plugin
- Brocade Vyatta vRouter Firewall Driver
- Brocade Vyatta vRouter VPN Driver
- Cisco CSR VPNaaS Driver
- Dragonflow SDN based Distributed Virtual Router L3 Plugin
- Freescale FWaaS Driver
- Intel Mcafee NGFW FWaaS Driver
- IPSEC Strongswan VPNaaS Driver
已知问题
- 在Kilo版本中,防火墙即服务仍然标记为试验性功能
- Bug 1438819
- 当创建一个新的可访问外部网络的子网,所有与该网络相关的、已经存在的具有网关的路由都会得到一个新的地址。对于IPv4网络,这样会为路由的网关消耗掉子网中的全部接口。
升级提示
从Havana版本开始,Neutron不再支持存放指定的租约(https://bugs.launchpad.net/bugs/1202392)。这部分剩余的残留代码包含了一些不曾使用的环境变量。为了删除掉这些残余代码 (https://review.openstack.org/#/c/152398/),需要修改dhcp.filter,所以这一行:
dnsmasq: EnvFilter, dnsmasq, root, NEUTRON_NETWORK_ID=
需要被替换为:
dnsmasq: CommandFilter, dnsmasq, root
在一些高级服务被划分到独立的包,并且有自己的配置文件后(特别是:etc/neutron/neutron_lbaas.conf, etc/neutron/neutron_fwaas.conf and etc/neutron/neutron_vpnaas.conf),当前活跃的服务在升级后,配置会产生变化(特别是,默认的负载均衡软件(haxproxy)和vpn(oepnswn)在升级后会被开启,尽管你之前可能在neutron.conf关闭了他们)。请务必在升级后检查你的配置,保证你的新配置和你之前想要启动的服务一致。
注意:如果在neutron.conf没有加载相关插件,不会受到影响。
- 默认的api workers的数量变为物理主机CPU的个数。如果你当前用的是默认值,需要保证为你的api worker设置一个合理的数量。(https://review.openstack.org/#/c/140493/)
- neutron. allow_duplicate_networks配置项在Kilo版本废弃并且将从Liberty移除,默认的行为是允许同一虚拟机可以绑定在同一子网的多个接口。(https://review.openstack.org/163581)
- linuxbridge agent现在默认支持VXLAN(https://review.openstack.org/160826)
- neutron-ns-metadata-proxy可以使用非root用户执行(https://review.openstack.org/147437)
其他的注意信息(废弃/终止等)
- 废弃
- Brocade的VDX/VCS系列硬件的Monolithic插件将在L版本中废弃。原有插件提供的功能已经在ML2中实现。插件将在这个更新之后被删除。
- Cisco的Nexus1000V Meta插件将在L版本中废弃。原有插件功能已经在ML2的Cisco Nexus1000V策略驱动实现。插件将在这个更新之后被删除。
OpenStack块存储(Cinder)
新功能
- 从这一刻起,任何新的数据库结构的更新将不需要Cinder服务立即重启。服务本身和数据库结构间没有直接关联。这是Cinder支持滚动更新(rolling upgrades)的第一部分!
- 在已经存在的一致性组中添加或者删除卷。获取更多信息.
- 从一个已经存在的一致性组的景象中创建一个新的一致性组。获取更多信息.
- 创建了更多已经优化的filters/weighers来设定scheduler如何选择一个卷的后端。获取更多信息.
- 加密卷现在可以使用Cinder备份服务进行备份。获取更多信息.
- 允许创建私有卷类型。你可以让卷类型只对特定的租户可见,或者在更新到正式环境前进行测试。可以用过'cinder type-create <name> --is-public'设置。
- Thin Provision(精简配置)的超额认购是可以配置的。Read docs for more info.
- 可以为卷类型增加描述信息。使用'cinder type-create <name> <description>'命令创建。
- Cinder现在可以返回多个iSCSI路径信息,这样连接方就能在主路径(Primary Path)挂掉后,使用其他路径(当连接方多路径支持开启 or 未开启)。
升级提示
- cinder.conf中的'host'配置选项被重命名为'backend_host',目的为了避免与redis配置中的'host'命名冲突。如果你使用了这个选项,请务必更新你的配置文件。
OpenStack遥测服务(Ceilometer)
新功能
- 支持在polling循环中增加抖动,保证pollsters不要在同一时间查询服务的API
- 支持Ceilometer API RBAC(基于权限的访问控制)
- 优化的事件支持:
- 多流水线(Multi-pipeline)支持开启唯一的处理和发布的事件
- 支持捕获RAW消息格式,便于审计和事后分析
- 在弹性搜索中支持持久化事件
- 发布支持对数据库、http、分拣、kafka和oslo.messaging支持的消息队列
- 增加一个选项,可以将消息的持久化数据存放在一个单独的数据库中
- Ceilometer现在支持使用时间(events)采集和存储所有事件类型的测量(meters)。一个新的选项,disable_non_metric_meters被加入到配置中,为了关闭将这些事件作为Samples存取的开关。更多信息请参阅Ceilometer配置指南
- OpenStack手册中的管理员指南增加了新的事件的选择, 你能通过这篇文档获取更多信息。
- 优化了流水线(pipeline)发布支持:
- 支持将事件(events)和samples发布到Kafka或者Http目标中
- 将数据发送到多个队列中
- 更多的测量(meters)
- Hyper-V的内存和磁盘测量(meters)
- LibVirt的磁盘测量(meters)
- IPMI相关的电源和热量的测量(meters),更多的测量指标查看NodeManager
- Ceph测量
- 在Ceilometer中upd的发布和采集支持IPv6格式
- Gnocchi支持ceilometer-collector分派
- pollster自我关闭机制
升级提示
- 失效的测量(meters):
- instance:<flavor>测量在Kilo版本中废弃。如果想获取flavor的samples或者统计你能使用以下查询:
统计:
ceilometer statistics -m instance -g resource_metadata.instance_type
samples:
ceilometer sample-list -m instance -q metadata.instance_type=<value>
- 用于Swift测量的中间件之前被打包到Ceilometer中,现在被废弃了。现在被分拆到独立的库:ceilometermiddleware
OpenStack编排服务(Heat)
新功能
- 使用嵌套stacks优化扩展性
- Heat在任何资源的远程调用(PRC)动作都是基于一个模板(template)。这样对处理复杂stacks时有利于分担负载。
- oslo版本化对象
- 数据库层现在使用oslo版本化对象来帮助未来的升级。这样允许一个新的升级的heat-engine使用一个旧的数据库结构。注意这并不会帮助升级到kilo版本。
- 新模板方法
- 一个新的HOT模板,版本为"20150430",包含了两个新的方法"digest"和"repeat"
- 多区域stacks
- 访问Heat服务
- 管理员现在能像其他项目一样访问服务状态。使用"heat-manage service-list"和Horizon。这个功能将汇报heat-engines的活跃状态。
- 优化Nova和Neutron资源(properties)的校验。
- 在特定资源时(stack钩子),暂停stack的创建/更新
- 新贡献的资源
- Mistral资源
- gnocchi告警 https://blueprints.launchpad.net/heat/+spec/ceilometer-gnocchi-alarm
- Keystone资源支持v3版本,项目、角色、用户和组
- Stack生命周期调度提示
- 软件配置优化
- 使用Swift TempURLs选项作为部署信号 http://specs.openstack.org/openstack/heat-specs/specs/kilo/software-config-swift-signal.html
- 使用heat命令创建和监控一个部署,在stack之外 http://specs.openstack.org/openstack/heat-specs/specs/kilo/software-config-trigger.html
升级提示
- "num_engine_workers"选项默认值从1变为CPU个数。现在这也是其他项目设置worker数量的方法。
- "max_nested_stack_depth"默认值增加为5.
- 新增的"convergence"默认为关闭。这个功能还没有完成,应该保持关闭。
- 为了准备即将到来的主要更新(convergence),有一些明显的数据库结构变化。建议在升级过程中关闭heat-engine。
其他的注意信息(废弃/终止等)
废弃
- 下列资源被废弃了OS::Heat::HARestarter和OS::Heat::CWLiteAlarm
- CloudWatch API (heat-api-cw)
OpenStack数据库服务(Trove)
新功能
- 支持一个新的复制策略,基于异步的GTID复制(MySQL 5.6新功能)
- 当前一个API调用支持从一个单master节点创建n个副本
- 使用新的'eject-master' API,我们也能支持从一个未响应的master节点,恢复到最近更新的slave节点上
- Trove guest管理支持以下新的数据存储:
- Vertica, and Vertica Cluster
- DB2
- CouchDB
- 扩展当前管理API层:
- 新的管理API用来获取列表或查看已经删除的trove虚拟机
- 新的管理API用来ping一个数据存储的guest agent,基于RPC机制
- Horizon支持重置Trove实例(instances)的规格
- 用户现在可以编辑/更新Trove虚拟机(instances)的名字
- 集成跨项目的OpenStack性能分析库(OSProfiler)
升级提示
- 我们从已经废弃的oslo-incubator消息代码迁移至官方的oslo.messaging模块中。配置变更详情请查看git.openstack.org/cgit/openstack/trove/tree/etc/trove/trove.conf.sample#n18,(更新)
- 没有经过任何CI测试过的数据存储和策略被移入'测试'段中的各自模块中。一旦这些数据存储和策略在CI中通过测试和gate验证,他们就会被标记为'稳定'。
- 添加了新文档帮助为不同的数据存储创建镜像 http://docs.openstack.org/developer/trove/dev/building_guest_images.html
OpenStack数据处理服务(Sahara)
新功能
- 新插件,功能和版本:
- MAPR
- Apache Storm
- 添加了Apache Hadoop 2.6.0, Apache Hadoop 2.4.1被废弃
- 新的服务CDH插件加入HDFS, YARN, Spark, Oozie, HBase, Zookeeper和其他服务
- 增加非直接的虚拟机(instances)访问,以更好地利用floating ip
- 增加事件日志支持注入过程中的详细信息
- 每个插件可选择的默认节点组和集群模板
- Horizon更新:
- 向导式创建集群和任务调度
- 查找对象时过滤
- 实现了节点组模板编辑和集群模板
- 为集群运行Oozie增加了Shell任务类型
- 新的任务类型端点(endpoint),用于查询已知的任务类型列表
升级提示
更多详细信息:http://docs.openstack.org/developer/sahara/userdoc/upgrade.guide.html#juno-kilo
- Sahara现在支持policy.json配置文件。
OpenStack裸金属服务(Ironic)
新功能
状态机(State Machine)
Ironic现在使用一个正式的模式管理每个节点的逻辑状态。[1]。这样就开启了两个附属的进程:清理(cleaning) and 检查(inspection)
- 现在默认支持项目间的自动磁盘清除。这可能需要为清理(cleaning)扩展额外的步骤,例如重新申请fireware,重置BIOS设置等[2]
- 硬件的检查(inspect),同时支持带内(in-band)和带外(out-of-band)两种方式。这些方法可能会自动更新节点设置。[3]
版本头信息
Ironic REST API在HTTP[S]请求的头信息中增加了一个新的X-OpenStack-Ironic-API-Version。这个头信息允许客户端和服务端在协商时支持一个统一的接口。[4]。如果头信息缺失,REST服务会默认进入兼容模式,并且产生一个兼容Juno客户端的响应。这种模式是被限制访问Kilo提供的最新功能的。
硬件驱动更新
以下驱动被添加:
对于已经存在的驱动,有以下增强点:
- Configdrives 可以用于"agent"驱动替代metadata服务。
- SeaMicro驱动支持串口控制台
- iLO驱动支持UEFI安全启动
- iLO驱动支持带外(out-of-band)节点检查
- iLO驱动在清理过程中支持ilo和bios重置
支持第三方和未列出的驱动,通过以下两点得到增强:
- 驱动可以存储节点"内部的"信息
- 驱动可以注册自己的定时任务,并且由Conductor执行
- vender_passthru方法现在支持额外的HTTP方法(例如PUT和POST)
- vendor_passthru方法现在可以在REST API中被发现。查看node vendor passthru和 driver vendor passthru
其他更新
- 除了正式的UUID之外,逻辑名称可以被用来标识节点。
- 对于拥有多个本地磁盘的服务器,提示可以提供哪些OS在注入时产生影响
- 支持从HTTP[S]源中直接获取kernel, ramdisk和实例镜像,并且从Glance移除了依赖使用Ironic作为独立服务
- 可以通过REST API将节点设置为维护模式维护模式。一个可选项维护模式原因可以标识原因。
已知问题
- 运行一个以上的nova-compute没有被正式的支持
- 当然Ironic包含了ClusteredComputeManager,允许多余一个以上的nova-compute进程,这个功能被视为实验阶段,并且已经存在了很多问题
- 使用“agent”驱动的部署策略不支持"rebuild --preserve-ephemeral"
升级提示
- IPMI的密码使REST API请求混乱。可以通过API策略设定关闭。
- 驱动的"agent"类现在支持全盘或者分区镜像。
- "pxe_deploy_kernel"和"pxe_deploy_ramdisk"的driver_info参数被废弃,取而代之的是"deploy_kernel"和"deploy_ramdisk"。
- 驱动自己实现的版本的方法vendor_passthru()被废弃,取而代之的是使用装饰器@passthru。
Juno升级到Kilo
升级文档请参考:
从Icehouse的"nova-baremetal"升级
直接从Icehouse的Nova安装中使用“baremetal”驱动直接到Kilo的Ironic,没有经过测试也不支持。替代方案,请遵循以下升级顺序:
- Icehouse Nova "baremetal" -> Juno Nova "baremetal"
- Juno Nova "baremetal" -> Juno Ironic
- Juno Ironic -> Kilo Ironic
第一步和第二步的文档:https://wiki.openstack.org/wiki/Ironic/NovaBaremetalIronicMigration
OpenStack文档
- 全新的 docs.openstack.org访问页面和全新设计的 用户使用指南(End User Guide)和 管理员指南(Admin User Guide)
- 第一个版本的 网络指南(Networking Guide)
- 将RST迁移至 用户使用指南(End User Guide)和 管理员指南(Admin User Guide)
- 全新的专业团队:
- 安装指南(Install Guides)
- 网络指南(Networking Guide)
- 高可靠指南(High Availability Guide)
- 用户指南(包含管理员和最终用户)
- 第一个App指导(First App Tutorial sprint)
- 驱动文档说明和关系说明(Driver documentation clarification and connections)
- 跳转↑ [1]Ironic新的状态机
- 跳转↑ [2]节点清理
- 跳转↑ [3]硬件检查
- 跳转↑ [4]REST API "micro"版本