Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

第 4 章 技术备注

本章的内容是对 Red Hat OpenStack Platform "Ocata" 勘误公告内容(通过 Content Delivery Network 发布)的补充。

4.1. RHEA-2016:1245 — Red Hat OpenStack Platform 11.0 错误修复和功能增强公告

本节中所包括的错误已在 RHEA-2017:1245-02 公告中说明。如需了解更多与这个公告相关的信息,请参阅 https://access.redhat.com/errata/RHEA-2017:1245.html

instack-undercloud

BZ#1418828
undercloud stack rc 文件是 Keystone v2 rc。之前,从 v3 rc 文件(如 v3 overcloudrc)切换时,仍然会存在一些 v3 环境变量,导致 Keystone 身份验证可能无法正常工作。

在本发行版中,设置 undercloud 值之前会清除 stackrc 中的所有 OpenStack 相关环境变量。这样,在 source stackrc 后环境中不再有旧 rc 文件中的变量,Keystone 身份验证就能正常工作。
BZ#1256912
image_path 参数已不再使用。本次更新已将它从 undercloud 配置文件中删除。
BZ#1268451
在某些情形中,因为验证逻辑中的某一错误会导致 undercloud 虚拟 IP 不能正确验证。因此,undercloud 可能会部署有不正确的虚拟 IP。该错误已经修复。现在,虚拟 IP 可得到正确验证。实际部署之前可发现虚拟 IP 配置中的任何问题。

openstack-cinder

BZ#1434494
之前,从同一镜像创建卷的并发请求可导致  Block Storage 服务的镜像缓存中出现多个条目。这造成同一镜像存在多个重复的镜像缓存条目,以致浪费空间。 

本次更新添加了可预防此问题的同步锁。第一个从镜像创建卷的请求会被缓存,所有其他请求则使用已缓存的镜像。

openstack-glance

BZ#1396794
借助这一增强,`glance-manage db purge` 现在可以删除不足一天的行。添加此功能的原因在于,操作员可能需要定期运行此操作。
因此,`age_in_days` 选项的值可以设为“0”。

openstack-gnocchi

BZ#1197163
时间序列数据库即服务(gnocchi)和 Aodh API 端点现在 REST API 上开放一个 `/healthcheck` HTTP 端点。通过请求这一端点,您可以检查服务的状态,而不需要身份验证。

openstack-heat

BZ#1414779
之前,如果在处于 FAILED 状态的资源中设置了更新前 Hook,Orchestration 服务会记录表明该 Hook 处于活动状态的事件。而后,该服务立即创建一个替代资源,而不等待用户清除掉此 Hook。因此,tripleoclient 服务认为 Hook 处于未决状态(基于事件),但在尝试将它清除时失败,因为替代资源没有设置 Hook。这进而阻碍 director 完成 overcloud 更新,并显示以下消息:

    ERROR: The "pre-update" hook is not defined on SoftwareDeployment
    "UpdateDeployment"
    
这也会影响客户端一侧使用了 Hook 的其他应用。在 director 中,这还可能导致两个 Controller 节点上同时执行 UpdateDeployment,而不以序列化的方式一次只更新一个 Controller 节点。

在本发行版本中,无论资源的状态为何,Orchestration 服务现在都会暂停并等到用户清除了 Hook 为止。这样,即使有  UpdateDeployment 资源处于 FAILED 状态, director overcloud 也可完成更新。
BZ#1320771
之前,虽然在堆栈状态不正确时 Orchestration 服务可以重置资源的状态,但在重新触发更新时该服务将无法完成此操作。这导致资源卡在进行中状态,需要修复数据库才能清除部署障碍。 

在本发行版本中,Orchestration 服务现在会在设置堆栈状态时设置所有资源的状态。这可防止资源卡在进行中状态,使得操作能被成功重试。

openstack-manila

BZ#1386249
本次更新增强了 CephFS 原生驱动及核心 OpenStack File Share Service(manila)基础架构。CephFS 原生驱动器现在支持只读共享,并且通过删除没有包括在  'access_list' 中的后端规则改进了恢复模式。

openstack-manila-ui

BZ#1393893
借助这一增强,您现在可以启用在仪表板中创建非公共共享的功能。
您可以将仪表板配置为隐藏用户在创建过程中用于将共享标记为公共的复选框。默认选项是将共享创建为私有,即不选中该复选框。

openstack-neutron

BZ#1385338
若要通过 neutron-openvswitch-agent 实施安全组中继功能,需要 openvswitch 防火墙驱动程序。此驱动程序目前含有错误 1444368,即如果同一计算节点上不同网络段存在 MAC 地址相同的两个端口,入口流量会被错误匹配。

因此,如果子端口的 MAC 地址与父端口相同,则其中一个端口的入口流量将无法正确匹配。

可以通过一个变通办法来正确处理流量,即在父端口和子端口上禁用端口安全性。

例如,若要禁用 UUID 12345 端口上的端口安全性,您需要删除与该端口相关的安全组:
 openstack port set --no-security-group --disable-port-security 12345

注意该端口上不会应用任何安全组规则,且流量不会被过滤或实施 ip/mac/arp 欺骗防护。
BZ#1436576
在 DVR 安装时,'test_l3_agent_scheduler.py' 的 'test_add_list_remove_router_on_l3_agent' 不能成功完成。在创建新路由器时,测试过程试图将网络接口绑定到 L3 代理,尽管该接口之前已绑定到某一代理。
该问题已经修复。现在,只有进行了测试后,接口才会添加到路由器并分配到 L3 代理。因此,测试将成功完成。

openstack-neutron-lbaas

BZ#1325861
这一增强添加了相关的功能,可以自动从服务器检测为已失效的 LBaaS 代理重新调度负载平衡器。之前,虽然可以在多个 LBaaS 代理之间调度和实现负载平衡器,但如果虚拟机管理器失效,调度到该节点的
负载平衡器将停止运作。通过这次更新,这些负载平衡器将自动重新调度到其他代理。此功能通过 `allow_automatic_lbaas_agent_failover` 进行管理,它在默认情况下被禁用。
BZ#1326224
这一增强在 'HaproxyNSDriver' 类(v2)中实施 'ProcessMonitor' 类。此类利用 'external_process' 模块监控 HAProxy 进程并在需要时重新衍生。LBaaS 代理(v2)加载 'external_process' 相关的选项,并在 HAProxy 意外失效时执行配置的操作。

openstack-nova

BZ#1352922
本发行版本添加了分页支持,可避免对具有大量实例的系统发起使用请求时消耗大量资源。nova API simple-tenant-usage 端点的 v2.40 微版本使用新的可选查询参数 'limit' 和 'marker' 以进行分页。'marker' 选项设置起点,'limit' 选项则设置起点后要显示的记录数。如果未设置 'limit',nova 将使用可配置的 'max_limit'(默认为 1000)。虽然较旧的微版本不接受这些新的查询参数,但它们会开始强制实施 max_limit,导致结果可能被截断。请考虑使用新的微版本,以避免 DoS 型使用请求和可能截断的响应。

openstack-sahara

BZ#1337664
本次更新添加了对 5.1.0 MapR 插件的支持。

openstack-selinux

BZ#1431556
由于关于启用了 DPDK 时启动实例的 SELinux 策略不完整,如果 SELinux 是强制模式,在使用 DPDK 时启用实例将导致启动失败,并且 /var/log/audit/audit.log* 中将出现与 openvswitch 和 svirt 相关的 AVC 拒绝。

作为一种变通办法,请按照如下第 4.4.1.2 节中所述,在使用了 DPDK 的各个计算节点上将 SELinux 设置为容许模式:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/SELinux_Users_and_Administrators_Guide/sect-Security-Enhanced_Linux-Working_with_SELinux-Changing_SELinux_Modes.html#sect-Security-Enhanced_Linux-Enabling_and_Disabling_SELinux-Disabling_SELinux

这将使得启用了 DPDK 的虚拟机能够启动。这是一种变通办法,应当作为进一步调查该问题期间的临时措施。

openstack-tripleo-common

BZ#1326549
在 heat 中删除节点时,删除命令完成并且返回到提示符,但进程仍然在后台继续。如果立即执行另一命令,就会出现冲突并且后一命令会失败。该进程的行为已经改变。现在,只有进程全部完成后才会返回到提示符。
BZ#1242422
可以在 director 中使用自动隔离设置,以简化高可用性部署和升级。若要从这一新功能获益,请使用 'overcloud generate fencing' 命令。

openstack-tripleo-heat-templates

BZ#1425507
如果停止 neutron-openvswitch-agent 服务,停止进程有时候会花费很长时间而无法正常退出并被 systemd 终止。这时,系统中仍然有正在运行的 neutron-rootwrap-daemon,妨碍 neutron-openvswitch-agent 服务重新启动。
该问题已经修复。现在,一个 rpm 小脚本可以检测孤立的 neutron-rootwrap-daemon 并将它终止。因此,neutron-openvswitch-agent 服务可以成功启动和重启。
BZ#1435271
在本发行版本中,'clustercheck' 仅在 Galera 的 'wsrep_cluster_address' 选项中指定的节点上运行。实施这一更改是为了考虑 Galera 在专用节点上运行(可通过可组合角色实现)的用例。在过去的次要更新中,'clustercheck' 在所有运行了 pacemaker 的节点上运行,并且假定 Galera 也在同一节点上。
BZ#1312962
director 在 '/etc/rabbitmq/rabbitmq.config' 中设置了 'tcp_list_options' 段落两次。这不会有负面作用,但可能会造成以后出现混淆。此修复删除了多余的段落。该配置文件中现在只有一个 'tcp_list_options' 段落。
BZ#1372589
现在可以使用 puppet hieradata 为 libvirtd 衍生的 QEMU 实例设置 max_files 和 max_processes。这可以通过含有适当 puppet 类的环境文件来设置。例如,若要分别将 max_files 和 max_processes 设置为 32768 和 131072,请使用:

parameter_defaults:
  ExtraConfig
    nova::compute::libvirt::qemu::max_files: 32768
    nova::compute::libvirt::qemu::max_processes: 131072
    
本次更新还将这些值设为默认值,因为由 libvirtd 启动的 QEMU 实例可能会消耗大量的文件描述符或线程。这取决于各个计算节点上承载的 Compute 客户机,以及每一实例所附加到的 Ceph RBD 镜像。需要能够在大型集群中配置这些限值。

使用这些新默认值时,Compute 服务应当能够使用超过 700 个 OSD。这在过去被确定为因为 max_files 数值低(原本为 1024)而施加的限制。
BZ#1438890
OpenStack Platform 10 含有错误的 Big Switch 代理配置。利用提供的 heat 模板部署 Big Switch 代理会导致部署失败。此修复更新了 heat 模板,能正确部署 Big Switch 代理。现在,director 能以可组合角色正确部署 Big Switch 代理服务。
BZ#1400262
Memcached 的内存默认配置以前是可用 RAM 总量的 95%,可能会导致资源争用。本修复将默认值降到可用 RAM 总量的 50%。您现在也可以通过 'MemcachedMaxMemory' 设置配置这个值。这有助于减少可能的资源冲突。
BZ#1440213
overcloud 软件包更新脚本中的一个错误导致集群服务始终重启,即使在没有可更新的软件包时也是如此。本修复更正了判断是否有待处理软件包更新的检查。如果没有可用的软件包更新,yum 更新脚本将退出,不会重新启动集群服务。
BZ#1225069
出于安全原因,默认情况下 Overcloud 仅允许基于 SSH 密钥的访问。您可以利用 virt-customize 工具,为 overcloud 设置磁盘镜像 root 密码,该工具可在 Red Hat Enterprise Linux Extras 频道中找到。在安装该工具并且下载 Overcloud 镜像后,请使用以下命令来更改 root 密码:

$ virt-customize -a overcloud-full.qcow2 --root-password password:my_root_password

请先执行此操作,然后再通过 "openstack overcloud image upload" 命令将镜像上传到 glance。

openstack-tripleo-puppet-elements

BZ#1441923
'tuned-profiles-cpu-partitioning' 软件包现在已预装在 'overcloud-full.qcow2' 镜像中。对于 DPDK 部署,需要此软件包帮助调优主机并隔离 CPU 的使用。director 中含有相应的第一启动脚本,以使用所需的参数启用 'tuned' 服务。

os-net-config

BZ#1409097
目前,如果在 compute.yaml  文件中使用 NIC ID(如 nic1、nic2 和 nic3 等),使用 Red Hat OpenStack Platform director 10 进行带有 SRIOV 的 overcloud 部署将失败。

作为一种变通办法,您需要使用 NIC 名称(如 ens1f0、ens1f1 和 ens2f0 等),而不要使用 NIC ID,以确保 overcloud 部署成功完成。

puppet-ceph

BZ#1388515
在升级或部署与较早版本(即 Red Hat Ceph Storage 1.3)的外部  Ceph Storage Cluster 集成的 Red Hat OpenStack Platform 环境时,需要启用向后兼容性。为此,请在升级或部署期过程中取消注释 environments/puppet-ceph-external.yaml 中的下面这一行:

parameter_defaults:
  # Uncomment if connecting to a pre-Jewel or RHCS1.3 Ceph Cluster
  RbdDefaultFeatures: 1
BZ#1413980
本发行版本推出了部署 CephFS 时需要的 puppet 模块,让您能够通过 director 部署 OpenStack Shared File System 服务(openstack-manila)及 CephFS 后端。

puppet-pacemaker

BZ#1437417
原因:
有时候部署可能会失败并出现以下错误:
 Error: /Stage[main]/Pacemaker::Corosync/Exec[Start Cluster tripleo_cluster]/returns: change from notrun to 0 failed: /sbin/pcs cluster start --all returned 1 instead of one of 0

后果: 
部署失败。

修复:
我们关闭了 puppet pacemaker 可能会在集群设置期间失败的小争用窗口。

结果: 
部署正常进行,没有错误。
BZ#1379741
功能:
现在可以将可组合角色用于 Pacemaker 托管服务。之前,所有 pacemaker 服务都从属于同一个角色。现在,可以将 pacemaker 托管的服务拆分到不同的自定义角色。

原因:
需要此功能来将 pacemaker 托管的服务扩展到更多不同的节点上。

结果: 
现在您可以将自定义角色和基于 pacemaker 的服务一起部署。

puppet-tripleo

BZ#1438602
原因:
Horizon 配置发生在错误的部署步骤。

后果:
Horizon 可能会在部署期间暂时不可用,并且出现额外的 httpd 服务重启。

修复:
修复了 horizon 配置,使它与其余 httpd 配置同时发生。

结果: 
运行 overcloud 应当不会导致 horizon 暂时不可用。

python-django-horizon

BZ#1271019
功能:卷传输屏幕中添加了一个凭证下载按钮,用于轻松保存信息。

原因:执行操作的管理员需要记录此信息,而手动记录不太方便。

结果:管理员不必手动记录信息,现在可以单击按钮来下载并保存 CSV 文件到本地计算机上。
BZ#1388171
为避免 nova-api 工作者中出现内存膨胀问题,simple-tenant-usage API 扩展中已添加了分页逻辑。
BZ#1434704
原因:代码中对含有下划线的用户 ID 处理不当。

后果:在用户 ID 含有下划线时无法更新项目/域成员。

修复:更正了处理用户 ID 的代码,从而能正确处理下划线。

结果:现在,即使用户 ID 含有下划线,也能更新项目/域成员。

python-heatclient

BZ#1437334
在优化了事件检索进程后,'openstack stack hook poll' 命令停止返回待处理的 Hook,即使它们存在并且应当返回。该问题已经修复。现在,待处理的 Hook 可以正确返回。

python-openstackclient

BZ#1402772
 在以前的版本中,'openstack network' 命令会忽略 '--os-interface' 参数。因此,即使使用这个参数指定了其他接口,所有此类命令也都会使用 'public' 端点。现已添加对这一参数的支持。现在,'openstack network' 命令可以正确使用 '--os-interface' 开关中指定的端点。

python-oslo-messaging

BZ#1427792
Oslo Messaging 中的 Remote Procedure Call (RPC) 消息确认不具线程安全性。因此,争用情形导致 Ceilometer 中出现 RPC 超时。Oslo Messaging 中的消息确认已经修复。现在,Ceilometer 可以正确响应。
BZ#1414497
Oslo Messaging 没有正确初始化其配置,导致 'nova-manage' 客户端在启动过程中失败。该错误已经修复。现在,'nova-manage' 可以正确启动。

python-tripleoclient

BZ#1353049
之前,升级或更新失败会返回退出值 0,因此无法基于这个值来测试是否成功。通过这次更新,升级或更新失败时会抛出异常,提示 OpenStackClient 存在错误条件。因此,OpenStackClient 仅在成功时返回退出值 0,出现错误后则返回非零值。
BZ#1400386
在上传或更新 overcloud 镜像时,'openstack overcloud image upload' 忽略了 '--image-path' 参数。因此,只能使用工作目录中的镜像。现已添加对 '--image-path' 参数的支持,可以完美地上传由该参数指定的不同目录的新镜像。

rhosp-director

BZ#1247019
当隔离设备名称和主机名称相同时,Pacemaker 持续崩溃。若要解决此问题,请在隔离设备的名称中添加 "fence-" 前缀或 "-fence" 后缀。使用这样配置的名称时,集群可以正确无误地工作。