第 4 章 技术备注
本章补充了通过 Content Delivery Network 发布的 Red Hat OpenStack Platform "Queens" 勘误公告文本中包含的信息。
4.1. RHEA-2018:2086 — Red Hat OpenStack Platform 13.0 Enhancement Advisory
本节中所包括的错误已在 RHEA-2018:2086 公告中解决。有关此公告的详情请点击以下链接 :https://access.redhat.com/errata/RHEA-2018:2086。
ceph-ansible
- BZ#1590560
ceph-ansible 实用程序并不总是从创建该文件的同一节点中删除 ceph-create-keys 容器。
因此,部署可能会失败,并显示消息 "Error response from daemon: No such container: ceph-create-keys"。 这会影响任何 ceph-ansible 运行(包括全新的部署),其中包括:* 多个计算备注或 * 自定义角色作为 ceph 客户端,后者也托管了使用 ceph 的服务。
gnocchi
- BZ#1533206
openstack-gnocchi 软件包已重命名为 gnocchi。由于上游项目范围的变化,openstack- 前缀已被删除。Gnocchi 已从 OpenStack umbrella 中移出,并作为独立项目维护。
OpenDaylight
- BZ#1568012
当将浮动 IP 关联到实例时,连接到外部 IP 会失败,然后取消关联浮动 IP。当租户 VLAN 网络时,会出现这种情况:* 在非NAPT 交换机上生成的虚拟机与浮动 IP 关联,并*浮动 IP 被删除。这会导致在 NAPT 交换机的 FIB 表中缺少流(大致)。
由于缺少 FIB 表条目,虚拟机将丢失与公共网络的连接。
将浮动 IP 与虚拟机关联可恢复与公共网络的连接。只要浮动 IP 与虚拟机关联,就可以连接到互联网。但是,您将丢失来自外部网络的公共 IP/浮动 IP。
openstack-cinder
- BZ#1557331
在以前的版本中,由于滚动升级,cinder 服务必须在执行离线升级时重启两次。
可以使用新的可选参数 - 称为 "--bump-versions"-- 跳过双系统重启--添加到 cinder-manage db sync 命令中。
- BZ#1572220
Block Storage 服务(cinder)使用同步锁定来防止卷镜像缓存中出现重复条目。锁定范围太大,并导致同时创建镜像的卷与锁定竞争,即使没有启用镜像缓存。
这些同时从镜像创建卷的请求会被序列化且不并行运行。
因此,同步锁定已被更新,以最小化锁定范围,并且仅在启用卷镜像缓存时才生效。
现在,当禁用卷镜像缓存时,从镜像中同时创建卷的请求会并行运行。当卷镜像缓存被启用时,最小化锁定以确保在缓存中只创建一个条目。
openstack-manila
- BZ#1468020
共享文件系统服务(manila)现在为 NetApp ONTAP cDOT 驱动程序提供 IPv6 访问规则支持,它可让您将 manila 与 IPv6 环境搭配使用。
因此,共享文件系统服务现在支持通过 IPv6 网络导出由 NetApp ONTAP 后端支持的共享。对导出的共享的访问由 IPv6 客户端地址控制。
- BZ#1469208
共享文件系统服务(manila)支持通过 NFSv4 协议挂载 Ceph 文件系统(CephFS)支持的共享文件系统。在 Controller 节点上运行的 NFS-Ganesha 服务器用于将 CephFS 导出到具有高可用性(HA)的租户。租户彼此隔离,只能通过提供的 NFS 网关接口访问 CephFS。此新功能完全集成到 director 中,为共享文件系统服务启用 CephFS 后端部署和配置。
openstack-neutron
- BZ#1552108
当向路由器添加或删除接口时,在 DHCP 代理上启用了隔离的元数据,则不会更新该网络的元数据代理。
因此,如果实例位于未连接到路由器的网络中,实例将无法获取元数据。
在添加或删除路由器接口时,您需要更新元数据代理。然后,当网络被隔离时,实例将从 DHCP 命名空间中获取元数据。
openstack-selinux
- BZ#1561711
在以前的版本中,virtlogd 服务在客户机虚拟机启动时记录冗余 AVC 拒绝错误。在这个版本中,virtlogd 服务不再尝试发送对 systemd 的关闭禁止调用,这可以防止上面描述的错误发生。
openstack-swift
- BZ#1419556
Object Store 服务(swift)现在可以与 Barbican 集成,以透明地加密和解密您的存储(at-rest)对象。at-rest 加密与 in-transit 加密不同,它引用了在存储于磁盘上的对象。
Swift 对象以明文形式存储在磁盘上。如果问题早已达到生命期,这些磁盘可能会造成安全风险。加密对象可以缓解这些风险。
Swift 以透明方式执行这些加密任务,在上传到 swift 时自动加密对象,然后在提供给用户时自动解密。这个加密和解密使用相同的(ymmetric)密钥进行,密钥保存在 Barbican 中。
openstack-tripleo-common
- BZ#1560422
Octavia 不会扩展到实际工作负载,因为为"服务"项目默认配置的配额限制在 overcloud 中创建的 Octavia 负载均衡器的数量。
要缓解这个问题,请以 overcloud admin 用户身份将所需的配额设置为无限或一些足够大的值。例如,在 undercloud 上运行以下命令:
# source ~/overcloudrc # openstack quota set --cores -1 --ram -1 --ports -1 --instances -1 --secgroups -1 service
- BZ#1588838
tripleo.plan_management.v1.update_roles 工作流不会将 overcloud 计划名称(swift 容器名称)或 zaqar 队列名称传递给它触发的子工作流。这会导致在使用 overcloud 计划名称以外的默认计划名称('overcloud')时发生错误。在这个版本中,可以正确地传递这些参数并恢复正确的行为。
- BZ#1566463
如果容器设置为自动重启,则 'docker kill' 命令不会退出。如果用户尝试运行 'docker kill <container>',它可能会无限期挂起。在这种情况下,CTRL+C 将停止该命令。
要避免这个问题,请使用 'docker stop'(而不是 'docker kill')来停止容器化服务。
- BZ#1452979
原因:"openstack overcloud node configure"命令仅将映像 ID 用于 "deploy-kernel" 和 "deploy-ramdisk" 参数。现在,在修复后会接受镜像 ID。
openstack-tripleo-heat-templates
- BZ#1341176
此功能增强添加了对从 director 部署启用了 RT 的计算节点以及"常规"计算节点的支持。
基于 tripleo-heat-templates/environments/compute-real-time-example.yaml,创建一个 compute-real-time.yaml 环境文件,该文件会至少为 ComputeRealTime 角色设置参数:
- IsolCpusList 和 NovaVcpuPinSet:应当为实时工作负载保留的 CPU 内核数。这取决于您的实时计算节点的 CPU 硬件。
- KernelArgs: 设置为 "default_hugepagesz=1G hugepagesz=1G hugepages=X",具体取决于客户机数量以及它们有多少内存。
构建和上传 overcloud-realtime-compute 镜像:
准备仓库(用于 CentOS):
- sudo yum install -y https://trunk.rdoproject.org/centos7/current/python2-tripleo-repos-XXX.el7.centos.noarch.rpm
- sudo -E tripleo-repos current-tripleo-dev
- export DIB_YUM_REPO_CONF="/etc/yum.repos.d/delorean* /etc/yum.repos.d/quickstart*"
- OpenStack overcloud 镜像构建 --image-name overcloud-realtime-compute --config-file /usr/share/openstack-tripleo-common/image-yaml/overcloud-realtime-compute.yaml --config-file /usr/share/openstack-tripleo-common/image-yaml/overcloud-realtime-compute-centos7.yaml
- OpenStack overcloud 镜像上传 --update-existing --os-image-name overcloud-realtime-compute.qcow2
-
使用 ComputeRealTime 和所有其他所需的角色创建 roles_data.yaml,例如:
openstack overcloud roles generate -o ~/rt_roles_data.yaml Controller ComputeRealTime …
并将 ComputeRealTime 角色分配给实时节点。请查看 https://docs.openstack.org/tripleo-docs/latest/install/advanced_deployment/custom_roles.html 部署 overcloud:
openstack overcloud deploy --templates -r ~/rt_roles_data.yaml -e ./tripleo-heat-templates/environments/host-config-and-reboot.yaml -e ./compute-real-time.yaml [...]
- BZ#1552583
glance-direct 方法在 HA 配置中使用时需要一个共享暂存区域。如果不存在通用暂存区域,则使用"glance-direct"方法上传在 HA 环境中可能会失败。传入到控制器节点的请求分布在可用的控制器节点上。个控制器处理第一步,另一个控制器都使用控制器将镜像写入不同的暂存区域来处理第二个请求。第二个控制器无法访问控制器处理第一步所使用的相同暂存区域。
Glance 支持多种镜像导入方法,包括 'glance-direct' 方法。此方法使用三步方法:创建镜像记录,将镜像上传到暂存区域,然后将镜像从暂存区域传输到存储后端,以便镜像变为可用。在 HA 设置(即,有 3 个控制器节点)中,glance-direct 方法需要一个在控制器节点上使用共享文件系统的通用暂存区域。
现在,可以配置已启用的 Glance 导入方法列表。默认配置不会启用 'glance-direct' 方法(默认为启用web-download)。为了避免在 HA 环境中将映像可靠地导入到 Glance,请不要启用"glance-direct"方法。
- BZ#1572238
openvswitch systemd 脚本会在主机中停止时删除 /run/openvswitch 文件夹。ovn-controller 容器内的 /run/openvswitch 路径变为过时的目录。当服务再次启动时,它会重新创建 文件夹。为了让 ovn-controller 再次访问此文件夹,必须重新挂载 文件夹或 ovn-controller 容器重启。
- BZ#1309550
添加了一个新的 CinderRbdExtraPools Heat 参数,它指定用于 Cinder 的 RBD 后端的 Ceph 池列表。为列表中的每个池创建一个额外的 Cinder RBD 后端驱动程序。除了与 CinderRbdPoolName 关联的标准 RBD 后端驱动程序之外。新参数是可选的,默认为空列表。所有池都与单个 Ceph 集群关联。
- BZ#1518126
Redis 在启用了 TLS 的 HA 部署中无法正确复制跨节点间的数据。Redis 后续节点将不包含领导节点中的任何数据。建议为 Redis 部署禁用 TLS。
- BZ#1540239
此功能增强添加了对将指标数据发送到 Gnocchi DB 实例的支持。
为 collectd 可组合服务添加了以下新参数。如果 CollectdGnocchiAuthMode 设置为 'simple',则 CollectdGnocchiProtocol, CollectdGnocchiServer, CollectdGnocchiPort 和 CollectdGnocchiUser 被考虑进行配置。
如果 CollectdGnocchiAuthMode 设置为 'keystone',则将 CollectdGnocchiKeystone* 参数考虑进行配置。
下面是添加的参数的详细描述:
- CollectdGnocchiAuthMode
类型:字符串
描述:身份验证 Gnocchi 服务器的类型使用。支持的值有'simple' 和 'keystone'。
默认:'simple'
- CollectdGnocchiProtocol
类型:字符串
描述:API 协议 Gnocchi 服务器使用.
默认: 'http'
- CollectdGnocchiServer
类型:字符串
Description:我们应该发送指标的 gnocchi 端点的名称或地址。
默认: nil
- CollectdGnocchiPort
类型:数字
描述:我们将在 Gnocchi 服务器上连接的端口。
默认: 8041
- CollectdGnocchiUser
类型:字符串
Description:使用简单身份验证向远程 Gnocchi 服务器进行身份验证的用户名。
默认: nil
- CollectdGnocchiKeystoneAuthUrl
类型:字符串
描述:用于身份验证的 Keystone 端点 URL。
默认: nil
- CollectdGnocchiKeystoneUserName
类型:字符串
Description:用于向 Keystone 进行身份验证的用户名。
默认: nil
- CollectdGnocchiKeystoneUserId
类型:字符串
描述:用于向 Keystone 进行身份验证的用户 ID。
默认: nil
- CollectdGnocchiKeystonePassword
类型:字符串
描述:用于向 Keystone 进行身份验证的密码
默认: nil
- CollectdGnocchiKeystoneProjectId
类型:字符串
描述:用于向 Keystone 进行身份验证的项目 ID。
默认: nil
- CollectdGnocchiKeystoneProjectName
类型:字符串
描述:用于向 Keystone 进行身份验证的项目名称。
默认: nil
- CollectdGnocchiKeystoneUserDomainId
类型:字符串
描述:用于向 Keystone 进行身份验证的用户域 ID。
默认: nil
- CollectdGnocchiKeystoneUserDomainName
类型:字符串
描述:用于向 Keystone 进行身份验证的用户域名。
默认: nil
- CollectdGnocchiKeystoneProjectDomainId
类型:字符串
描述:用于向 Keystone 进行身份验证的项目域 ID。
默认: nil
- CollectdGnocchiKeystoneProjectDomainName
类型:字符串
描述:用于向 Keystone 进行身份验证的项目域名。
默认: nil
- CollectdGnocchiKeystoneRegionName
类型:字符串
描述:用于向 Keystone 进行身份验证的区域名称。
默认: nil
- CollectdGnocchiKeystoneInterface
类型:字符串
描述:要进行身份验证的 Keystone 端点的类型。
默认: nil
- CollectdGnocchiKeystoneEndpoint
类型:字符串
描述:如果要覆盖 Keystone 值,请 Explicitly state Gnocchi 服务器 URL
默认: nil
- CollectdGnocchiResourceType
类型:字符串
Description:由 collectd-gnocchi 插件在 Gnocchi 中创建的默认资源类型来存储主机。
默认:'collectd'
- CollectdGnocchiBatchSize
类型:数字
Description:最小值 Gnocchi 应该批处理。
默认:10
- BZ#1566376
OVN 元数据服务不在基于 DVR 的环境中部署。因此,实例无法获取实例名称、公钥等元数据。
此补丁启用了上述服务,以便任何引导的实例都可以获取元数据。
- BZ#1568120
Cinder 后端服务的 Heat 模板触发 Puppet 在 overcloud 主机上部署 cinder-volume 服务,无论该服务是否要部署到容器中。这会导致 cinder-volume 服务部署两次: 在容器中以及主机上的。
因此,当操作由主机上运行的恶意 cinder-volume 服务处理时,OpenStack 卷操作(如创建和附加卷)偶尔会失败。
因此,Cinder 后端 heat 模板已被更新,无法部署 cinder-volume 服务的第二个实例。
- BZ#1573597
在 collectd 日志和 "ConnectionError: ('Connection aborted.', CannotSendRequest ())中,用作 Gnocchi 后端的任何错误,在 gnocchi-metricd.conf 中生成 503 错误。要缓解这个问题,请提高 CollectdDefaultPollingInterval 参数的值,或者提高 Swift 集群性能。
- BZ#1575023
manila-share 服务无法初始化,因为对 ceph-ansible 的复杂 ceph-keys 处理的更改会在 /etc/ceph/ceph.client.manila.keyring 文件中生成不正确的内容。
要允许 manila-share 服务初始化:1)使 /usr/share/openstack/tripleo-heat-templates 的副本用于 overcloud 部署。
2)编辑 …/tripleo-heat-templates/docker/services/ceph-ansible/ceph-base.yaml 文件,将第 295 行中的所有 triple 反斜杠更改为单反斜杠。before: mon_cap: 'allow r, allow command \\\"auth del\\\", allow command \\\"auth caps\\\", allow command \\\"auth get\\\", allow command \\\"auth get-or-create\\\"' After: mon_cap: 'allow r, allow command \"auth del\", allow command \"auth caps\", allow command \"auth caps\", allow command \"auth\"auth
3)部署 overcloud,替换 tripleo-heat-templates 的副本的副本,其中验证 /usr/share/openstack-tripleo-heat 模板发生在原始 overcloud-deploy 命令中。
ceph 键 /etc/ceph/ceph.client.manila.keyring 文件会具有适当的内容,manila-share 服务将正确初始化。
- BZ#1552214
为 HA 配置 cinder-volume 服务时,cinder 的 DEFAULT/host 配置被设置为 "hostgroup"。其他 Cinder 服务(cinder-api, cinder-scheduler, cinder-backup)将"hostgroup"用于其配置,无论哪个 overcloud 节点正在运行该服务。来自这些服务的日志消息看起来像是来自同一"主机组"主机,这很难知道哪个节点生成消息。
当为 HA 部署时,cinder-volume 的 backend_host 被设置为 "hostgroup",而不是将 DEFAULT/host 设置为该值。这样可确保每个节点的 DEFAULT/host 值是唯一的。
因此,来自 cinder-api、cinder-scheduler 和 cinder-backup 的日志消息与生成消息的节点正确关联。
- BZ#1578901
升级到新版本后,块存储服务(cinder)一直使用之前版本的旧 RPC 版本。因此,所有 Cinder API 请求都要求最新的 RPC 版本失败。
当升级到新版本时,所有 cinder RPC 版本都会更新以匹配最新版本。
python-cryptography
- BZ#1556933
自 2.1 版本 2.1 起,python-cryptography 检查证书中使用的 CNS Names 是否符合 IDN 标准。如果找到的名称没有遵循此规范,加密将无法在使用 OpenStack 命令行界面或 OpenStack 服务日志中发现证书和不同错误。
- BZ#1571358
安装 python-cryptography 构建后,来自 RDO 的初始导入会失败,因为它缺少了 Obsoletes。这个软件包的 RHEL 7 构建正确,并具有正确的条目。
在这个版本中,为 python-cryptography 添加了 Obsoletes。
python-ironic-tests-tempest
- BZ#1577982
在 OSP 版本 13 升级后,在升级前安装 tempest 插件(-tests) rpm。初始升级打包没有包括弃用旧 rpm 所需的 epoch 命令。OSP 13 中未包括 sub-rpm,新插件 rpm 中的 Obsoletes 没有正确使用 rpm。
要解决这个问题,请更正过时的或手动卸载旧的 -rpm,并手动安装替换插件 python2-*-tests-tempest。
python-networking-ovn
- BZ#1433533
为帮助维护 neutron 和 OVN 数据库之间的一致性,在后端内部进行配置更改并验证。每个配置更改都会被分配一个修订版本号,调度任务会验证对数据库进行的所有创建、更新和删除操作。
- BZ#1503521
此发行版本引进了对 networking-ovn 中的内部 DNS 解析的支持。虽然存在两个已知的限制,但 bz#1581332 可防止通过内部 dns 解析内部 fqdn 请求。
请注意,在 GA 版本中 tripleo 默认不配置扩展。如需临时解决方案,请参阅 bz#1577592。
- BZ#1550039
当创建子网时,没有添加 DHCP 选项,这样的子网上的实例将无法获取 DHCP。
相反,使用 Metadata/DHCP 端口来实现这一目的,以便实例能够获取 IP 地址。您必须启用元数据服务。现在,没有外部网关的子网上的实例可以通过 DHCP 通过 OVN 元数据/DHCP 端口获取其 IP 地址。
- BZ#1562731
当前 L3 HA 调度程序没有考虑节点的优先级。因此,所有网关都由同一节点托管,且负载不会分布到候选节点。
在这个版本中,通过一种算法在调度网关路由器时选择最小载入的节点。网关端口现在被调度到至少载入网络节点,并在它们间平均分布负载。
- BZ#1563678
当子端口重新分配给另一个虚拟机监控程序上的不同中继时,它不会更新其绑定信息,子端口也不会过渡到 ACTIVE。
在这个版本中,当子端口从中继中删除时清除绑定信息。现在,当子端口重新分配给位于不同虚拟机监控程序上的另一个中继端口时,子端口过渡到 ACTIVE。
python-os-brick
- BZ#1550974
使用 iSCSI 发现时,节点启动配置从"automatic"重置为"默认",这会导致重新启动时不会启动该服务。这个问题已通过在每次发现后恢复所有启动值来修复。
python-zaqar-tests-tempest
- BZ#1546285
因为 tempest 插件集合在 Queens 周期中从 openstack-*-tests rpm 子软件包中提取,所以升级会遇到依赖项问题。但是,并非所有打包组合都有正确的 Provides 和 Obsolet。OSP 13 没有 -tests (unittest sub-rpms)。
当试图通过之前版本安装 -tests 进行升级时,会导致因为依赖项问题而失败。
为纠正此问题,他们从中提取的 -tests rpm 的旧版本 Obsoletes 已重新添加。