第 4 章 技术备注
本章的内容是对 Red Hat OpenStack Platform "Newton" 勘误公告内容(通过 Content Delivery Network 获得)的补充。
4.1. RHEA-2016:2948 — Red Hat OpenStack Platform 10 的改进信息
本节中所包括的问题在 RHEA-2016:2948 公告中解决。需要了解更多与这个公告相关的信息,请参阅 https://access.redhat.com/errata/RHEA-2016:2948.html。
instack-undercloud
- BZ#1266509
在以前的版本中,instack-undercloud 不会检查提供给 `local_ip` 参数的子网掩码的正确性,并且错误地使用了 /32 掩码。因此,网络服务无法在 undercloud 中正常工作(例如,内省无法正常工作)。在这个版本中,instack-undercloud 会检查子网掩码的正确性。
- BZ#1289614
在以前的版本中,过期的令牌无法被自动从 Identity Service(keystone)数据库中定期删除。因此,就可能造成 keystone 数据库的大小不断增长,并最终导致占用了所有磁盘空间。 在这个版本中,添加了一个 crontab 任务来定期(每天一次)在 keystone 数据库中查询并删除过期的令牌。因此,keystone 数据库现在不会出现因为过期令牌造成数据库占用的磁盘空间无限增长的问题。
- BZ#1320318
在以前的版本中,`pxe_ilo` Bare Metal Service(ironic)驱动会在发现具有 UEFI 功能的硬件时自动切换到 UEFI 引导模式(即使环境不支持 UEFI)。 因此,在环境不支持 UEFI 的情况下,部署的过程会因为使用 pxe_ilo 驱动而失败。 在这个版本中,pxe_ilo 驱动被默认设置为使用 BIOS 引导模式,因此,无论 UEFI 的配置是否正确,使用 pxe_ilo 的部署现在都可以正确完成。
- BZ#1323024
一个与 puppet manifest 相关的代码错误会导致在 undercloud 的安装过程中错误地禁用 LVM 分区自动挂载功能。因此,带有除 root 和 swap 分区以外分区的 undercloud 无法被引导到一个 emergency shell。 这个问题可以通过以下方法之一解决: 1. 从 /etc/fstab 中手动删除挂载点。使用这个方法可以防止上面的问题在以后进行的 manifest 操作中发生。其它的分区也可以被删除,它们的空间可以分配给其它分区(如 root 或 swap)。 2. 配置分区在 /etc/lvm.conf 中激活。使用这个方法可以防止上面的问题在再次执行 undercloud 安装过程(更新或升级)前发生。 3. 把初始部署限制为只使用 root 和 swap 分区。这会完全解决上面的问题。
- BZ#1324842
在以前的版本中,director 会为 'readonly_user_name' 自动产生一个超过 32 个字符的值(位于 /etc/ceilometer/ceilometer.conf 中)。这会在升级的过程中出现 ValueSizeConstraint 错误。在这个版本中,director 会默认把 'readonly_user_name' 设置为 'ro_snmp_user' 的值,这可以确保它的值符合系统对字符的限制。
- BZ#1355818
在以前的版本中,swift proxy pipeline 被错误配置,这会导致 swift 内存的使用会持续增长,直到它被系统终止(kill)。在这个版本中,proxy-logging 在 swift proxy pipeline 过程的早期被配置,从而不会出现 swift 内存使用情况持续增长的问题。
mariadb-galera
- BZ#1375184
因为 Red Hat Enterprise Linux 7.3 修改了 shell 脚本所使用的 "systemctl is-enabled" 命令的返回格式,在安装 mariadb-galera RPM 软件包时会在 MariaDB 服务还没有被启动时错误地发现这个服务已启动。因此,Red Hat OpenStack Platform installer 会使用 Pacemaker 而不是 systemd 来运行 mariadb-galera,从而导致 Galera 启动失败。在这个版本中,mariadb-galera 的 RPM 安装脚本使用不同的 systemctl 命令,它可以正确地检测到默认的 MariaDB 被禁用的状态,从而使 installer 可以正常运行。
- BZ#1373598
在以前的版本中,'mariadb-server' 和 'mariadb-galera-server' 软件包都包括了面向客户端的程序库:'dialog.so' 和 'mysql_clear_password.so'。因此,'mariadb-galera-server' 软件包会因为软件包冲突的问题导致安装失败。 在这个版本中,'dialog.so' 和 'mysql_clear_password.so' 程序库从 'mariadb-galera-server' 移到 'mariadb-libs'。因此,'mariadb-galera-server' 软件包可以被成功安装。
openstack-gnocchi
- BZ#1377763
在 Gnocchi 2.2 中,使用 Redis 在控制器间协调任务的分配。这改进了 Telemetry 衡量的过程。
openstack-heat
- BZ#1349120
在这个版本以前,Heat 有时会在删除过程仍在进行时认为 `FloatingIP` 资源已被删除。因此,`FloatingIP` 所依赖的资源有时会因为 `FloatingIP` 存在而无法删除。 在这个版本中,Heat 会在决定资源已被删除前检查 `FloatingIP` 是否已不存在,这就可以确保栈的删除过程可以正常运行。
- BZ#1375930
在以前的版本中,`str_replace` 是通过调用 Python `str.replace()` 函数来替换每个字符串的。因此,如果替换的字符串包括另外一个要被替换的字符串,替换的字符串本身也可能会被替换。因为替换的顺序不是确定的,因此这就可能导致替换结果的不确定性。用户在使用这个功能的时候就需要非常小心地采样一些措施(如使用 guard)来避免出现这个问题。 在这个版本中,替换操作是以一个完整过程完成的,因此只有原始数据会被替换。 因此,`str_replace` 的输出结果是确定的,并在不使用 guard 的情况下获得所期望的结果。如果输入中的关键字有重叠情况,则首选最长的匹配。如果仍然不明确,较短的字符串会被替换。
- BZ#1314080
当 `heat-engine` 无法连接到数据库时,仍然在处理中的栈因为无法获得最新数据库数据而被“卡住”。当这个问题发生时,管理员需要一个方法来对状态进行重置,从而可以使栈再次被更新。 在这个版本中,`heat-manage` 支持一个 `heat-manage reset_stack_status` 子命令,管理员可以使用这个命令来重置那些被卡住的栈。
openstack-ironic
- BZ#1347475
在这个版本中为 IPMItool 驱动增加了一个基于 socat 的串口控制台。增加它的目的是:用户可能希望使用和访问虚拟节点的控制台相同的方式来访问裸机节点的串口控制台。现在,增加了一个新的 `pxe_ipmitool_socat` 驱动,它支持使用 `socat` 工具程序来访问串口控制台。
- BZ#1310883
Bare Metal provisioning 服务现在会在对磁盘进行分区并写入镜像数据前清除这个磁盘上的元数据。因此,新的镜像可以正常引导。在以前的版本中,Bare Metal provisioning 服务在对一个设备进行操作前不能删除它上面的元数据,这可能会导致部署失败。
- BZ#1319841
openstack-ironic-conductor 服务现在会检查 'enabled_drivers' 选项所指定的驱动是否都是唯一的。如果有重复的驱动,这个服务会删除它们并在日志中进行记录。在以前的版本中,如果 'enabled_drivers' 选项所指定的驱动有重复,就会导致 openstack-ironic-conductor 服务失败,从而使 Bare Metal provisioning 服务无法加载任何驱动。
- BZ#1344004
在以前的版本中,'ironic-conductor' 无法正确地把用户身份验证令牌传递给 'python-neutronclient'。因此,自动节点清除功能会失败。 在这个版本中,OpenStack Baremetal Provisioning(ironic)被迁移为使用 'keystoneauth' 会话,而不是直接构建 Identity 服务客户端对象。因此,节点在清除后可以被成功拆除。
- BZ#1385114
为了决定哪个节点要被部署,部署的 ramdisk(IPA)会向 Bare Metal provisioning 服务提供一个 MAC 地址列表作为节点的标识。在以前的版本中,Bare Metal provisioning 服务只识别普通的 MAC 地址格式(6 个十六进制数字)。但是,Infiniband NIC 的 GID 有 20 个十六进制数字。因此,当节点有一个 Infiniband NIC 时,因为 Bare Metal provisioning API 无法正确验证它的 MAC 地址,所以部署操作会失败。 在这个版本中,Bare Metal provisioning 服务会忽略非正常的 MAC 地址格式(不是 6 个十六进制数字的 MAC 地址)。
- BZ#1387322
这个版本从用于部署和内省的 iPXE 模板中删除了一个多余的 'dhcp' 命令。在一些情况下,这个多余的命令可能会导致不正确的接口接收到一个 IP 地址。
openstack-ironic-inspector
- BZ#1323735
在以前的版本中,当创建 tarfile 时,修改的日期不会在 IPA RAM 磁盘的日志中设置。因此,内省日志中修改的日期会是 1970-01-01,这会导致在展开这个文件时 GNU tar 命令出现一个警告。 在这个版本中,修改的日期会在创建 tarfile 时被正确设置。现在,相关的时间戳是正确的,GNU tar 不再会出现相关警告。
openstack-ironic-python-agent
- BZ#1393008
这个版本包括了更多的与 LLDP 发现功能相关的错误检查和处理的功能。这些功能可以防止因为不正确的软件包造成 LLDP 发现失败的问题。另外,失败的 LLDP 发现也不会造成整个内省过程的失败。
openstack-manila
- BZ#1380482
在以前的版本中,Manila Ceph FS 驱动不会检查它是否可以连接到 Ceph 服务器。 因此,如果无法连接到 Ceph 服务器,`manila-share` 服务会持续崩溃,会在没有任何超时限制的情况下重新生成(respawning)。 在这个版本中,在初始化 Manila Ceph FS 驱动时会进行检查来确定 Ceph 连接可以正常工作。如果 Ceph 连接无法正常工作,驱动将不会被初始化,接下来的其它步骤也不会被执行。
openstack-neutron
- BZ#1381620
在以前的版本中,WSGI 服务器在某个时间可以打开的最多客户端连接数量(例如,在某个时间 greenlets spawn 的数量)由 'wsgi_default_pool_size' 设置为 100。这个数值对 OpenStack Networking API 服务器是恰当的,但是这会使 state change 服务器在 L3 代理上产生大量的 CPU 负载,并可能导致代理崩溃。 在这个版本中,可以使用新的 'ha_keepalived_state_change_server_threads' 设置来指定 state change 服务器的线程数量。客户端的连接数量不再受限于 'wsgi_default_pool_size',因此,在 spawn 多个 state change 服务器线程时可以避免出现 L3 代理崩溃的问题出现。
- BZ#1382717
在以前的版本中,'vport_gre' 内核模块依赖于 Red Hat Enterprise Linux 7.3 中的 'ip_gre' 内核模块。'ip_gre' 模块会创建两个接口:'gre0' 和 'gretap0'。这些接口会在每个命名空间中创建并无法被删除。因此,当 'neutron-netns'cleanup' 在命名空间清理的过程中删除所有接口时,'gre0' 和 'gretap0' 无法被删除,从而导致因为这两个接口的存在无法删除网络命名空间的问题。 在这个版本中,'gre0' 和 'gretap0' 接口被加入到接口“白名单”中,在检查命名空间是否包括接口时会忽略它们。因此,在命名空间仍然包括 'gre0' 和 'gretap0' 接口时也可以删除这个命名空间。
- BZ#1384334
这个发行版本在 OpenStack Networking API 的前面添加了一个 HTTPProxyToWSGI 中间件,它被用来当代理(如 HAProxy)在客户端和服务器间被使用时,正确设置 URL 请求。这确保了,当一个客户端使用 SSL 时,服务器可以识别它并相应使用正确的协议。在以前的版本中,当使用代理时,即使一个客户端使用了 SSL,服务器还是使用 HTTP 而不是使用 HTTPS 进行响应。
- BZ#1387546
在以前的版本中,当子进程没有正确运行时,OpenStack networking OVS 代理可能会把没有翻译的字符串和翻译的字符串进行比较。因此,如果系统使用非英语版本,则可能会造成一个 exception,从而使实例无法引导。 为了解决这个问题,失败检查代码被更新,它会检查失败的子进程实际返回的值而不是字符串。这确保了子进程失败的情况可以在非英语的系统中被正确处理。
- BZ#1325682
在这个版本中,IP 网络数据可以被附加到 QoS 策略中的 DSCP 标记规则进行管理,这些 DSCP 标记规则可以应用到网络和端口中。 增加这个功能的原因是:在网络一级,来自不同源的网络数据可能会有不同的优先级,特别是在处理实时信息或关键控制数据的情况下。现在,来自于特定端口和网络的网络数据可以使用 DSCP flag 进行标记。请注意,在这个版本中,还只有 Open vSwitch 支持这个功能。
openstack-nova
- BZ#1188175
在这个版本中,添加了对虚拟设备角色进行 tag 的支持。增加这个功能的原因是:一个实例的操作系统可能需要知道在它上面运行的虚拟设备的额外信息。例如,一个带有多个虚拟网络接口的实例,它的操作系统需要可以区分开不同的使用情况从而可以正确进行配置。 在这个版本中,对虚拟设备角色进行 tag 将可以在创建一个实例时对虚拟设备进行 tag。然后,这些 tag 以及其它的设备元数据就可以通过使用元数据 API 展示给实例。如需了解更多相关信息,请参阅 Red Hat OpenStack Platform 10 Networking Guide 的 `Use Tagging for Virtual Device Identification`(https://access.redhat.com/documentation/en/red-hat-openstack-platform/)
- BZ#1189551
在这个版本中增加了一个 `real time(实时)`的功能,它为 vCPU 提供了在最坏调度延迟情况出现时的一个性能保证。这个功能对于那些运行对 CPU 执行延迟有高要求、并需要实时 KVM 虚拟机配置可以提供一定性能保证的租户非常有用。
- BZ#1233920
在这个版本中,添加了对虚拟设备角色进行 tag 的支持。增加这个功能的原因是:一个实例的操作系统可能需要知道在它上面运行的虚拟设备的额外信息。例如,一个带有多个虚拟网络接口的实例,它的操作系统需要可以区分开不同的使用情况从而可以正确进行配置。 在这个版本中,对虚拟设备角色进行 tag 将可以在创建一个实例时对虚拟设备进行 tag。然后,这些 tag 以及其它的设备元数据就可以通过使用元数据 API 展示给实例。如需了解更多相关信息,请参阅 Red Hat OpenStack Platform 10 Networking Guide 的 `Use Tagging for Virtual Device Identification`(https://access.redhat.com/documentation/en/red-hat-openstack-platform/)
- BZ#1263816
在以前的版本中,nova ironic virt 驱动会在开始部署前在 Bare Metal Provisioning(ironic)节点中写一个实例的 UUID。如果在写 UUID 和开始部署间出现问题,Compute 不会在生成实例失败后删除这个实例的 UUID。因此,Bare Metal Provisioning(ironic)节点中会存在一个实例的 UUID,它将不会在执行另外的部署操作。 在这个版本中,无论生成实例的操作在部署的任何阶段失败,ironic virt 驱动都可以保证实例的 UUID 会被正确清除。因此,节点将不会有实例的 UUID,它将可以执行另外一个新的部署。
openstack-puppet-modules
- BZ#1284058
在以前的版本中,使用 director 部署的 Object Storage 服务会使用 ceilometer 中间件。但是,从 Red Hat OpenStack Platform 8(liberty)开始,这个中间件已过时。 在这个版本中,Object Storage 服务改为使用来自于 python-ceilometermiddleware 的 ceilometer 中间件。这个中间件被此版本支持。
- BZ#1372821
在以前的版本中,Time Series Database-as-a-Service(gnocchi)API worker 会被默认配置为部署一个进程,以及和逻辑 cpu_core 数量相同数量的线程。这个配置结果就是 httpd 中运行的 gnocchi API 被部署为带有一个进程。 作为一个最佳实践方案,gnocchi 推荐的进程和线程的数量应该是 cpu_count 数量的 1.5 倍。在这个版本中,worker 的数量是 max(($::processorcount + 0)/4, 2),线程为 1。因此,gnocchi API worker 以带有正确数量的 worker 和线程运行来提供更好的性能。
openstack-tripleo-common
- BZ#1382174
在以前的版本中,在软件包更新后 'DeployIdentifier' 不会被更新。因此,Puppet 不会在非控制器节点上运行。 在这个版本中,'DeployIdentifier' 的值可以被增加。因此,Puppet 可以运行并更新非控制器节点上软件包。
- BZ#1323700
在以前版本的 OpenStack Director 中,作为主要升级过程的一部分,操作员在 Undercloud 中使用的、用来升级非控制器节点的 'upgrade-non-controller.sh' 脚本在使用了 '--query' 选项时不会报告升级的状态。因此,'--query' 选项不会象 '-h' 帮助信息中所描述的方式工作。 在这个版本中,'--query' 选项使用来自指定节点的 'yum.log' 文件的最后几行作为升级的状态。另外,脚本现在还可以使用每个选项的全名和短名(如 '-q' 和 '--query')。因此,'upgrade-non-controller.sh' 脚本现在可以提供一定程度的升级状态信息。
- BZ#1383627
使用 "openstack baremetal import --json instackenv.json" 导入的节点需要在导入前关机。如果节点没有被关机,Ironic 将不会尝试添加节点或进行内省。 因此,在运行 "openstack baremetal import --json instackenv.json" 前需要关闭所有 overcloud 节点。 当节点被关闭后,导入操作可以成功运行。
openstack-tripleo-heat-templates
- BZ#1262064
现在,在启动栈部署操作时可以使用一个 Heat 环境文件在 overcloud 中部署 'cinder-backup'。用来启用 'cinder-backup' 的环境文件是 /usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yaml。'cinder-backup' 服务初始支持使用 Swift 或 Ceph 作为后端。'cinder-backup' 服务会在没有保存卷的后端中备份 Cinder 卷。如果在部署时包括,'cinder-backup' 服务会在 overcloud 中运行。
- BZ#1282491
在以前的版本中,RabbitMQ 最多可以打开的文件描述符的数量被设置为 4096。当用户有大量部署时,可能会达到这个限制并进而产生系统稳定性的问题。在这个版本中,对 RabbitMQ 的最多可以打开的文件描述符数量的限制增加到 65536。因此,大型用户将会极大减少遇到以上问题的情况。
- BZ#1242593
在这个版本中,OpenStack Bare Metal provisioning 服务(ironic)可以在 overcloud 中部署来支持对裸机实例的置备。增加这个功能的原因是,用户可能会希望在 overcloud 中 部署裸机系统。 现在,Red Hat OpenStack Platform director 可以选择部署裸机服务来在 overcloud 中置备裸机实例。
- BZ#1274196
在这个版本中,overcloud 控制器节点启用了 iptables 防火墙来提供更好的安全性。因此,相关的端口需要被打开从而使 overcloud 服务可以象以前一样继续工作。
- BZ#1290251
这个版本增加了一个把 overcloud 连接到监测基础架构的功能,它会在 overcloud 节点上部署可用的监测代理(sensu-client)。 为了启用监测代理的部署,使用环境文件 '/usr/share/openstack/tripleo-heat-templates/environments/monitoring-environment.yaml',在配置 YAML 文件中使用以下参数: MonitoringRabbitHost: host where the RabbitMQ instance for monitoring purposes is running MonitoringRabbitPort: port on which the RabbitMQ instance for monitoring purposes is running MonitoringRabbitUserName: username to connect to RebbitMQ instance MonitoringRabbitPassword: password to connect to RebbitMQ instance MonitoringRabbitVhost: RabbitMQ vhost used for monitoring purposes
- BZ#1309460
现在,可用使用 director 部署 Ceph RadosGW 作为对象存储的网关。这需要在 overcloud 部署中包括 /usr/share/openstack-tripleo-heat-templates/environmens/ceph-radosgw.yaml。当使用这个 heat 模板时,默认的 Object Storage 服务(swift)不会被部署。
- BZ#1325680
一般情况下,在 OpenStack 中安装并配置 OVS+DPDK 的操作会在 overcloud 部署后手工进行。如果有大量的 Compute 节点,这个操作将会变得非常繁琐。以前,需要手工识别 DPDK 的硬件能力,现在,这个任务会在内省过程中自动进行。另外,检测到的硬件也为操作人员提供了配置 Heat 模板所需的数据。当前,带有启用了 DPDK 硬件的 Compute 节点还无法和没有启用 DPDK 硬件的 Compute 节点共存。 `ironic` Python Agent 会发现以下硬件信息,并把它们保存在一个 swift blob 中: * CPU flags for hugepages support - 如果存在 pse 则支持 2MB 巨型页(hugepage);如果存在 pdpe1gb,则支持 1GB 巨型页 * CPU flags for IOMMU - 如果存在 VT-d/svm,则支持 IOMMU。对 IOMMU 支持的功能在 BIOS 中启用。 * Compatible nics - 比较 DPDK 的网卡白名单(在 http://dpdk.org/doc/nics 中列出) 不具有以上任何能力的节点不能作为带有 DPDK 的 Compute 角色。 * 操作员将会有一个置备来在 Compute 节点上启用 DPDK。 * 可用作为 Compute 并带有 DPDK NIC 的节点的 overcloud 镜像将会带有 OVS+DPDK 软件包,而不是 OVS 软件包。另外,它还会带有 `dpdk` 和 `driverctl` 软件包。 * 具有 DPDK 功能的 NIC 的设备名将从 T-H-T 获得。DPDK NIC 的 PCI 地址需要可以从设备名中识别。在进行 PCI probe 时,需要对 DPDK NIC 进行白名单操作。 * 巨型页(Hugepage)需要在带有 DPDK 的 Compute 节点中启用。 * 需要进行 CPU 分离设置,从而使为 DPDK PMD(Poll Mode Driver)预留的 CPU 内核不会被一般的内核负载均衡、中断处理和调度算法使用。 * 在每个带有启用了 DPDK 的 NIC 的 Compute 节点中,puppet 将会为白名单中的 NICs、CPU 掩码以及 DPDK PMD 内存频道配置 DPDK_OPTIONS。DPDK_OPTIONS 需要在 /etc/sysconfig/openvswitch 中配置。 `Os-net-config` 会执行以下操作: * 通过设置指定接口的 pci 地址来把指定接口与 dpdk 驱动(默认为 vfio-pci 驱动)相关联。使用 driverctl 把驱动永久性绑定。 * 了解 ovs_user_bridge 和 ovs_dpdk_port 类型,并根据实际情况配置 ifcfg 脚本。 * “TYPE” ovs_user_bridge 会被翻译为 OVS 类型 OVSUserBridge,OVS 会根据这个情况把 datapath 类型配置为 ‘netdev’。 * “TYPE” ovs_dpdk_port 会被翻译为 OVS 类型 OVSDPDKPort,OVS 会根据这个情况把端口添加到网桥(接口类型为 ‘dpdk’) * 了解 ovs_dpdk_bond,并根据实际情况配置 ifcfg 脚本。 在每个带有启用了 DPDK 的 NIC 的 Compute 节点上,puppet 将会执行以下操作: * 在 /etc/neutron/plugins/ml2/openvswitch_agent.ini 中启用 OVS+DPDK([OVS] datapath_type=netdev vhostuser_socket_dir=/var/run/openvswitch) * 在 /var/run/openvswitch 中把 vhostuser 端口配置为被 qemu 所拥有。 在每个控制器节点上,puppet 将会执行以下操作: * 在 nova.conf 中为 scheduler_default_filters 添加 NUMATopologyFilter。 自动化以上操作的过程已完成,并可以在 QA 测试阶段进行验证。
- BZ#1337782
这个版本包括了“Composable(可组合)”角色。TripleO 现在可以使用可组合的方式进行部署,允许用户选择在每个节点上运行什么服务。因此,可以实现更复杂的用例。
- BZ#1337783
现在,在硬件置备(provisioning)阶段可以部署通用的节点。这些节点会被部署为使用一个通用的操作系统(Red Hat Enterprise Linux),以后用户可以在这些节点上部署其它服务。
- BZ#1381628
如 https://bugs.launchpad.net/tripleo/+bug/1630247 所述,上游社区的 Newton TripleO 项目中的 Sahara 服务在默认情况下被禁用。作为把 Red Hat OpenStack Platform 9 升级到 Red Hat OpenStack Platform 10 的一部分,Sahara 服务被默认启用。如果操作员不希望在升级后使用 Sahara,则需要在控制器升级和合并的步骤中使用的部署命令中包括 `-e 'major-upgrade-remove-sahara.yaml'` 环境文件。请注意:这个环境文件必须在最后指定(针对于合并的步骤),但它可以在两个步骤中都进行已避免混淆。在这种情况下,Sahara 服务不会在进行主要升级后被重新启动。 使用以上方法可以使 Sahara 服务在 OSP9 升级到 OSP10 的过程中被正确处理,否则这个服务在升级的 OSP10 环境中不会被默认启用和配置。因此,Sahara 服务的状态可以作为升级的一部份被保留。另外,在需要的情况下,操作员也可以禁用 Sahara 服务。
- BZ#1389502
在这个版本中,可以使用 KernelPidMax Heat 参数对 kernel.pid_max sysctl 键的值进行定制(默认值为 1048576)。在那些作为 Ceph 客户端的节点上,可能会允许大量线程(由 ceph-osd 实例数量决定)。在这种情况下,pid_max 可能会达到最大值从而导致 I/O 错误。pid_max 键会有一个较高的默认值并可以通过 KernelPidMax 参数进行定制。
- BZ#1243483
在以前的版本中,为服务器元数据轮询 Orchestration 服务会产生到 Compute 的 REST API 调用。这可能会导致大量 nova-api,特别是在环境规模扩展时这个情况更严重。 在这个版本中,使用 Object Storage 服务为服务器元数据提供轮询服务并加载 heat 栈。这将不会产生不必要的 nova-api 调用。因此,在环境规模进行扩展时,undercloud 的负载会大幅下降。
- BZ#1315899
在以前的版本中,由 director 部署的 swift 会使用一个过时的 ceilometer 中间件版本,这个版本已从 Red Hat OpenStack Platform 8 中删除。在这个版本中,swift proxy config 使用来自于 python-ceilometermiddleware 的 ceilometer 中间件。因此,swift proxy 现在使用了被支持的 ceilometer middleware 中间件版本。
- BZ#1361285
OpenStack Image Storage(glance)在默认情况下配置更多 worker,这可以提高性能。worker 的数量会根据处理器的数量自动进行调整。
- BZ#1367678
这个版本增加了一个新的参数 - `NeutronOVSFirewallDriver`,它被用来在 Red Hat OpenStack Platform director 中配置 Open vSwitch(OVS)防火墙驱动。 增加这个参数的原因是,neutron OVS 代理现在支持一个实现安全组功能的新机制 - 'openvswitch' 防火墙。`NeutronOVSFirewallDriver` 允许用户直接控制使用的防火墙机制: `hybrid` - 配置 neutron 来使用老的 iptables/混合防火墙机制。 'openvswitch' - 启用新的、基于数据流的防火墙机制。 新的防火墙驱动具有更好的性能,并减少了用来把虚拟机连接到项目网络所需的接口和网桥。因此,用户可以方便地测试新的安全组机制。
- BZ#1256850
Telemetry API(ceilometer-api)现在使用 apache-wsgi 替代 eventlet。当升级到这个版本时,ceilometer-api 将会相应地进行迁移。 这个改进提高了部署前的性能以及扩展的灵活性,并可以简单地使用 SSL。
- BZ#1303093
在这个版本中,当部署 overcloud 时可以使用一个额外的环境文件在 overcloud 中禁用 Object Storage 服务(swift)。这个环境文件应该包括以下内容: resource_registry: OS::TripleO::Services::SwiftProxy: OS::Heat::None OS::TripleO::Services::SwiftStorage: OS::Heat::None OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None 作为结果,Object Storage 服务将不会在 overcloud 中运行,overcloud Identity 服务中也不会包括 Object Storage 服务的端点。
- BZ#1314732
在以前的版本中,当使用 director 部署 Red Hat OpenStack Platform 8 时,Telemetry 服务不会在 Compute 中配置,从而会导致一些 OpenStack Integration Test Suite 测试失败。 在这个版本中,OpenStack Telemetry 服务在 Compute 配置中进行了配置。因此,通知(notification)驱动被正确配置,OpenStack Integration Test Suite 测试可以通过。
- BZ#1316016
在以前的版本中,因为 Image Service(glance)中缺少了对测量方法的配置,Telemetry(ceilometer)通知操作会失败。因此,glance 的通知不会被正确处理。在这个版本中,tripleo 模板包括了正确的配置,glance 的通知可以被正确处理。
- BZ#1347371
在这个版本中,RabbitMQ 包括了一个新的 HA 功能 - Queue Master 分布功能。这个功能的一个策略是 `min-masters`,它会选择运行 master 数量最少的节点。 增加这个功能的原因是,在进行队列声明时,某个控制器可能无法使用,Queue Masters 就会位于有效的控制器上。当那个无效的控制器重新变为有效时,新创建队列的 master 则不会位于 queue master 数量最少的控制器上,从而会形成当多个故障转移发生时一个控制器的负载会比其它控制器的负载高许多的情况出现(分布不平衡)。 在这个版本中,在控制器出现故障转移时,队列会被分散到不同控制器中。
- BZ#1351271
Red Hat OpenStack Platform director 在 OpenStack Identity(keystone)中创建 OpenStack Block Storage(cinder) v3 API 端点来支持较新的 Cinder API 版本。
- BZ#1364478
在这个版本中,允许在任何角色中使用任何隔离的网络。在一些情况下(如 'ceph-osd' 和 'nova-compute' 共同存在)会假设节点访问多个隔离的网络。现在,定制的 NIC 模板可以在任何角色中配置任何隔离的网络。
- BZ#1366721
现在,Telemetry 服务(ceilometer)使用 gnocchi 作为它的默认 meter 分配的后端。Gnocchi 具有更好的扩展性,并与 Telemetry 服务将来的发展方向相一致。
- BZ#1368218
在这个版本中,通过使用额外环境文件部署 overcloud,可以把 Object Storage 服务(swift)配置为带有额外的原始磁盘(raw disk)。例如: parameter_defaults: ExtraConfig: SwiftRawDisks: sdb: byte_size: 2048 mnt_base_dir: /src/sdb sdc: byte_size: 2048 因此,Object Storage 服务不会只限制为本地节点的 `root` 文件系统。
- BZ#1369426
AODH 现在使用 MYSQL 作为它的默认后端。以前,AODH 使用 MongoDB 作为它的默认后端以使从 Ceilometer 转换到 AODH 的过程相对简单。
- BZ#1373853
以前,用于把 Compute 角色和 Object Storage 角色从 Red Hat OpenStack Platform 9(mitaka)升级到 Red Hat OpenStack Platform 10(newton)的脚本不会在出现错误的时候正常退出。因此,即使在升级失败的情况下,'upgrade-non-controller.sh' 脚本的返回代码也为 0(代表成功)。 在这个版本中,Compute 角色和 Object Storage 角色的升级脚本在升级过程出现问题时会产生错误并退出,'upgrade-non-controller.sh' 的返回代码为一个非 0 的值(代表失败)。
- BZ#1379719
在移到可组合服务的过程中,用来在 overclod 节点上配置 NTP 服务器的 hieradata 没有被正确配置。 在这个版本中,使用了正确的 hieradata,overcloud 节点上的 NTP 服务器被正确配置。
- BZ#1385368
为了使用可组合服务,作为一个 Image Service(glance)后端使用的 NFS 挂载将不再被 Pacemaker 管理。因此,glance NFS 后端参数接口已改变:新方法使用一个环境文件来启用 glance NFS 后端。例如: ---- parameter_defaults: GlanceBackend: file GlanceNfsEnabled: true GlanceNfsShare: IP:/some/exported/path ---- 请注意,GlanceNfsShare 的设置会根据具体部署情况有所不同。 另外,可以使用 `GlanceNfsOptions` 参数定制挂载选项。如果以前在 Red Hat OpenStack Platform 9 中使用 Glance NFS 后端,环境文件的内容需要更新来匹配 Red Hat OpenStack Platform 10 的格式。
- BZ#1387390
以前,TCP 端口 '16509' 在 'iptables' 中被禁用。因此,'nova' Compute 'libvirt' 实例将无法在 Compute 节点间进行实时迁移。 在这个版本中,TCP 端口 '16509' 在 'iptables' 中被配置为打开。因此,'nova' Compute 'libvirt' 实例现在可以在 Compute 节点间进行实时迁移。
- BZ#1389189
在以前的版本中,因此写 Hiera 数据操作和 Puppet 在节点上执行间的竞争条件,在一些情况下 Overcloud 节点上的 Puppet 会因此缺少 Hiera 数据而失败。 在这个版本中,增加了操作间的顺序,首先需要在所有节点上完成 Hiera 数据的写操作,而后才执行 Puppet 操作。因此,Puppet 不再会因为缺少 Hiera 数据而失败。
- BZ#1392773
以前,当从 Red Hat OpenStack Platform 9(Mitaka)升级到 Red Hat OpenStack Platform 10(Newton)后,'ceilometer-compute-agent' 将无法收集数据。 在这个版本中,通过在升级后重启 'ceilometer-compute-agent' 解决了这个问题。'ceilometer-compute-agent' 重启后可以正确收集相关数据。
- BZ#1393487
以前,在部署 OpenStack File Share API(manila-api)时,OpenStack Platform director 不会更新防火墙。如果把 manila-api 服务从控制器上移到自己的角色上时,默认的防火墙规则会阻塞端点。在这个版本中,overcloud Heat 模板集合中的 manila-api 防火墙规则被更新。现在,即使 manila-api 位于控制器节点以外的角色节点上时,也可以访问端点。
- BZ#1382579
以前,director 把 cloudformation(heat-cfn)端点设为 "RegionOne" 而不是 "regionOne",这会导致 UI 显示带有不同服务的两个区(region)。在这个版本中,端点被配置为使用 "regionOne",UI 现在会在相同的区中显示所有服务。
openstack-tripleo-ui
- BZ#1353796
在这个版本中,可以使用 UI 手工添加节点。
os-collect-config
- BZ#1306140
在这个版本以前,用于配置的 HTTP 对 `os-collect-config` 的请求没有指定请求的超时时间。因此,当 undercloud 无法被访问时(例如,undercloud 在重启,网络连接出现问题),对数据进行轮询会出现 `os-collect-config` 无法正常完成的问题,从而导致无法进行轮询或配置。而这个问题通常只有在 overcloud 栈操作已完成但软件配置操作超时时才会被发现。 在这个版本中,`os-collect-config` HTTP 请求总会指定一个超时时间。 因此,当 undercloud 无法被访问时,数据轮询会失败。当 undercloud 可以被访问时,数据轮询操作会重新恢复。
os-net-config
- BZ#1391031
在以前的版本中,Open vSwitch 和 neutron 间集成的改进可能会导致重启后连接出现问题。因此,节点可能无法被访问,或它的连接性能下降。 在这个版本中,`os-net-config` 在默认情况下配置 `fail_mode=standalone`,从而在控制代理还没有启动时允许处理网络数据。因此,重启后的连接问题在此版本中将不会出现。
puppet-ceph
- BZ#1372804
在以前的版本中,Ceph Storage 节点使用本地文件系统(格式化为 `ext4`)作为 `ceph-osd` 服务的后端。 请注意,一些 Red Hat OpenStack Platform 9(Mitaka)的 `overcloud-full` 镜像以 `ext4` 而不是 `xfs` 的格式进行创建。 在 Jewel 版本中,`ceph-osd` 会检查后端所允许的文件名的最大长度。如果这个限制小于为 Ceph 本身配置的限制,它将拒绝启动。这个问题的一个解决方案是,登录到 Ceph Storage 节点,运行以下命令检查 `ceph-osd` 使用的文件系统: # df -l --output=fstype /var/lib/ceph/osd/ceph-$ID 其中的 $ID 是 OSD ID,例如: # df -l --output=fstype /var/lib/ceph/osd/ceph-0 请注意,一个 Ceph Storage 节点可能会包括多个 `ceph-osd` 实例,在这个情况下,`/var/lib/ceph/osd/ 目录中会包括多个子目录来分别代表不同的实例。 如果有*任何* OSD 实例使用 `ext4` 文件系统,则需要配置 Ceph 来使用较短的文件名。这可以通过使用一个额外的、包括以下内容的环境文件进行部署或升级来实现: parameter_defaults: ExtraConfig: ceph::profile::params::osd_max_object_name_len: 256 ceph::profile::params::osd_max_object_namespace_len: 64 作为结果,您现在就可以验证,在从 Red Hat OpenStack Platform 9 升级到 Red Hat OpenStack Platform 10 后,是否每个 `ceph-osd` 实例都已被运行。
- BZ#1346401
现在,可以使用 SELinux 控制 'ceph-osd' 实例。在 OSP10 中,新的部署会在 Ceph Storage 节点上把 SELinux 配置为 'enforcing'。
- BZ#1370439
当在一个新的 overcloud 中重新使用以前集群中的 Ceph 节点时,新的 Ceph 集群会在 overcloud 部署的过程中失败,并且没有任何提示信息。这是因此,旧的 Ceph OSD 节点磁盘在重新被使用前需要被清理。这个版本的改进增加了对 Ceph OpenStack Puppet 模块的检查,从而确保磁盘可以如 OpenStack Platform 文档 [1] 所示被正确清理。现在,在发现有没有被清理的 OSD 磁盘时,overcloud 的部署过程会正确地以失败形式退出。'openstack stack failures list overcloud' 命令可以显示有不匹配 FSID 的磁盘。 [1] https://access.redhat.com/documentation/en/red-hat-openstack-platform/10/single/red-hat-ceph-storage-for-the-overcloud/#Formatting_Ceph_Storage_Nodes_Disks_to_GPT
puppet-cinder
- BZ#1356683
在环回设备配置和块存储节点上的 LVM 物理卷的检查之间存在竞争条件。 这导致主要的升级聚合步骤失败,因为 Puppet 无法检测到现有的 LVM 物理卷并尝试重新创建卷。 此修复程序会在设置完环回设备后等待 udev 事件完成。 这意味着,Puppet 在尝试检查现有 LVM 物理卷之前会等待环回设备配置完成。 具有 LVM 后端的块存储节点现在可以成功升级。
puppet-heat
- BZ#1381561
OpenStack Platform director 会超过使用 OpenStack Orchestration (heat) YAQL expression 的默认内存限制,这会导致在 overcloud 部署过程中出现 "Expression consumed too much memory" 错误,并造成部署失败。在这个版本中,为 director 增加了默认内存的限制,从而避免了因此问题造成部署失败的情况出现。
puppet-ironic
- BZ#1314665
以前,ironic-inspector 服务器没有包括可以和 UEFI bootloader 一起正常工作的 iPXE 版本。带有 UEFI bootloader 的机器无法链加载内省 ramdisk。在这个版本中,ironic-inspector 服务器包括了 ipxe.efi ROM,它会在内省的过程中更新 dnsmasq 配置并把它发送到基于 UEFI 的机器。现在,director 可以检查基于 BIOS 的机器和基于 UEFI 的机器。
puppet-tripleo
- BZ#1386611
在以前的版本中,因为缺少一个参数,rabbitmqctl 无法在 IPv6 环境中正常工作。在这个版本中,修正了 RabbitMQ Puppet 的配置,并把以前缺少的参数添加到 /etc/rabbitmq/rabbitmq-env.conf 中。现在,rabbitmqctl 可以在 IPv6 环境中正常工作。
- BZ#1389413
在以前的版本中,HAProxy 检查 MySQL 是否有问题的超时时间设置较长(16 秒),这会导致连接到有问题的 MySQL 节点的 OpenStack 服务会对 users/operators/tools 返回 API 错误。 在这个版本中,检查的间隔被缩短为 6 秒,有问题的 MySQL 节点会在 6 秒之内被弃用。因此,OpenStack 服务会在一个 MySQL 节点出现问题时,非常快地切换到正常运行的 MySQL 节点上,从而可以减少 API 错误的出现。
- BZ#1262070
现在,可以使用 director 把 Ceph RBD 配置为 Block Storage 备份的目的地。通过这个功能,可以部署一个 overcloud,而它的卷可以在一个 Ceph 上进行备份。默认情况下,卷的备份保存在一个名为 'backups' 的 Ceph 池中。 备份的设置在以下环境文件中配置(在 undercloud 中): /usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yaml
- BZ#1378391
以前,在 Pacemaker 中,Redis 和 RabbitMQ 的启动和停止的超时时间都是 120 秒。在一些环境中,这个值可能不足够长,从而导致重启失败。这个版本把超时时间增加到 120 秒,这和其它 systemd 资源的设置相同。现在,Redis 和 RabbitMQ 应该有足够的时间在大多数环境中成功重启。
- BZ#1279554
为 OpenStack Compute(nova)临时磁盘(ephemeral disk)使用 RBD 后端驱动(Ceph Storage)会对 libvirt 应用两个额外的设置: hw_disk_discard : unmap disk_cachemodes : network=writeback 这个设置将可以在 Ceph 池中重新获得没有使用的块,这可以提高使用 RBD 驱动的 OpenStack Compute 临时磁盘的性能。 请同时参阅 http://docs.ceph.com/docs/master/rbd/rbd-openstack/
python-cotyledon
- BZ#1374690
在以前的版本中,较老版本的 `cotyledon` 中有一个程序错误,它会导致 `metricsd` 无法正确启动并抛出追溯信息。 在这个版本中包括了新的 1.2.7-2 版本的 `cotyledon` 软件包。因此,不会再出现追溯信息,`metricsd` 可以正确启动。
python-django-horizon
python-django-openstack-auth
- BZ#1287586
在这个改进中,域范围的令牌可以被用来登录到 Dashboard(horizon)。 这个功能可以在需要使用域范围的令牌的负载角色集时,在 keystone v3 中完全支持对身份的管理。django_openstack_auth 必须支持在会话中获得并管理这种类型的令牌。 从 Red Hat OpenStack Platform 9 开始,horizon 支持域范围的令牌。
python-gnocchiclient
- BZ#1346370
这个版本为 OpenStack Telemetry Metrics(gnocchi)提供了最新版本的客户端来支持资源类型。
python-ironic-lib
- BZ#1381511
OpenStack Bare Metal(ironic)通过创建一个 configdrive 作为一个额外的主(primary)分区来为新节点提供用户数据。这需要在节点磁盘上有一个空闲的主分区。但是,一个存在的程序错误使得 OpenStack Bare Metal 无法区分主分区和扩展分区,从而会错误地认为没有可供 configdrive 使用的空闲分区。这个版本修正了这个错误,它可以区分主分区和扩展分区,部署过程不再会因为上面的问题出现错误。
- BZ#1387148
以前,OpenStack Bare Metal(ironic)在使用 configdrive 实现整个磁盘镜像时有一个错误,这会导致部署过程失败。在这个版本中修正了这个错误,现在可以使用 configdrive 部署整个磁盘镜像。
python-tripleoclient
- BZ#1364220
OpenStack Dashboard(horizon)被错误地包括在 director 用来在 OpenStack Identity(keystone)中创建端点所使用的服务列表中。在部署 overcloud 时会出现一个误导的 'Skipping "horizon" postconfig' 信息。在这个版本中,添加到 keystone 的端点服务列表中不再包括 horizon。"skipping postconfig" 信息只会在 debug 模式中出现,而误导的 'Skipping "horizon" postconfig' 信息将不会再出现。
- BZ#1383930
在使用 DHCP HA 时,应该通过可组合角色把 `NeutronDhcpAgentsPerNetwork` 的值设置为 dhcp-agents 的数量(如果这个数量小于 3)或 3。如果没有进行这个设置,它的值会被默认设置为 `ControllerCount` 的值,而这个值可能并不是最佳的,因为可能没有运行足够的 dhcp-agents 以满足为每个网络产生这么多数量的 DHCP 服务器。
- BZ#1384246
在以前的版本中,节点删除功能使用 Heat 的 'parameters' 而不是 'parameter_defaults',这会导致 Heat 重新部署包括那些可能不希望被重新部署的节点在内的节点。在这个版本中,节点删除功能只使用 'parameter_defaults',Heat 资源会被保留而不会被重新部署。
python-twisted
- BZ#1394150
因为缺少软件包的 "Obsoletes", python-twisted 软件包将无法作为 Red Hat OpenStack Platform 10 undercloud 安装的一部分被安装。这个改进包括了带有 "Obsoletes" 列表的打包信息,它会在安装 python-twisted 软件包时删除过时的软件包,并提供了无缝的更新和清理过程。 另外,也可以通过手工的方法来避免以上问题的出现:不要从 Red Hat Enterprise Linux 7.3 Optional 软件仓库安装任何 python-twisted-* 软件包,如 python-twisted-core。如果 undercloud 包括了这些过时的软件包,使用以下命令删除它们: $ yum erase python-twisted-*
rabbitmq-server
- BZ#1357522
RabbitMQ 被绑定到端口 35672,但是端口 35672 在一个临时的范围中,其它服务可能会打开同一个端口,这就会导致 RabbitMQ 启动失败。这个版本把 RabbitMQ 所使用的端口改为临时端口范围之外的端口 25672,没有其它服务会监听这个端口,RabbitMQ 可以被成功启动。
rhosp-release
- BZ#1317669
在这个版本中包括了一个发行版本文件,它包括了 OSP director 所部署的 overcloud 版本信息。这个安装版本信息对于故障排除会有帮助。overcloud-full 镜像包括了一个新的软件包 - rhosp-release。从较低版本进行升级时也会安装这个 RPM。从 OSP 10 开始,所有版本都会包括发行版本文件。这只适用于基于 Red Hat OpenStack Platform director 进行的安装,但是,用户也可以手工安装 rhosp-release 软件包来达到同样效果。
sahara-image-elements
- BZ#1371649
这个版本更新了 `sahara-image-element` 的主脚本来允许为支持的插件创建镜像。例如,可以使用以下命令来创建使用 Red Hat Enterprise Linux 7 的 CDH 5.7 镜像: ---- >> ./diskimage-create/diskimage-create.sh -p cloudera -v 5.7 Usage: diskimage-create.sh [-p cloudera|mapr|ambari] [-v 5.5|5.7|2.3|2.4] [-r 5.1.0] ----