Queens 系列发布说明

2.1.2-11

升级说明

  • 需要新的 amphora 镜像来修复潜在的 certs-ramfs 竞争条件。

安全问题

  • certs-ramfs 和 amphora 代理之间的竞争条件可能导致租户 TLS 内容存储在 amphora 文件系统上,而不是加密的 RAM 文件系统中。

错误修复

  • 添加了监听器和池协议验证。池和监听器不能任意组合。我们需要在协议方面进行一些约束。

  • 修复了一个问题,即 amphora 镜像创建工具会签出主 amphora-agent 代码和主上界限。

  • 修复了 certs-ramfs 和 amphora 代理服务之间的潜在竞争条件。

  • 修复了一个错误,该错误可能在执行控制器工作程序的正常关闭时中断资源创建,并使资源(例如 amphorae)处于 BOOTING 状态。如果 Octavia 流的持续时间大于 ‘graceful_shutdown_timeout’ 配置值,则停止 Octavia 工作程序仍然可能中断资源的创建。

  • 修复了在多子网网络中选择 vip-subnet-id 的问题,方法是检查子网的 IP 可用性,确保在指定 vip-network-id 创建负载均衡器时有足够的 IP 可用。

  • 修复了一个错误,该错误可能在执行控制器工作程序的正常关闭时中断资源创建,并使资源处于 PENDING_CREATE/PENDING_UPDATE/PENDING_DELETE 供应状态。如果 Octavia 流的持续时间大于 ‘graceful_shutdown_timeout’ 配置值,则停止 Octavia 工作程序仍然可能中断资源的创建。

2.1.2

安全问题

  • 正确地要求双向证书认证才能连接到 amphora agent API (CVE-2019-17134)。

错误修复

  • 修复了健康管理器在尝试获取数据库连接时报告 UnboundLocalError 的问题。

  • 修复了在测试中发现的 allocate_and_associate 中的潜在 DB 死锁。

  • 修复了一个无效证书导致 amphora 故障转移循环的问题。证书现在在 API 级别进行验证。

  • 配置选项 ‘server_certs_key_passphrase’ 的密码用作 Octavia 中的 Fernet 密钥,因此必须是 32 个、base64(url) 兼容的字符长。 Octavia 现在将验证密码的长度和格式。

2.1.1

错误修复

  • 修复了 CentOS amphorae 在 Active/Standby 模式下重复的 IPv6 地址问题。

  • 修复了一个问题,即 listener API 会接受必须具有有效值的字段(例如 connection-limit)的 null/None 值。 现在,当对这些字段中的一个字段进行 PUT 调用并将 null 作为值时,API 将将字段值重置为字段默认值。

2.1.0

升级说明

  • 要修复活动/待机负载均衡器或单拓扑负载均衡器上 VIP 子网上的成员的问题,需要更新 amphora 镜像。

关键问题

  • 修复了一个错误,即活动/待机负载均衡器和 VIP 子网上的单拓扑负载均衡器可能失败。需要更新镜像才能修复此错误。

安全问题

  • 作为修复 CVE-2018-16856 的后续措施,Octavia 现在将在其内部工作流程中加密用于与 amphorae 安全通信的证书和密钥。 Octavia 过去会排除为特定任务和流程明确命名的调试级别日志打印,这种方法容易受到代码更改的影响。

错误修复

  • 修复了在具有 IPv6 子网的网络上创建成员的问题。

  • 修复了在使用“list”API 时 Octavia v2 API 中的性能回归。

  • 修复了创建完全填充的负载均衡器,该负载均衡器没有 REDIRECT_POOL 类型的 L7 策略和 default_pool 字段的问题。

  • 修复了处于 ERROR 供应状态时无法故障转移的负载均衡器。

  • 修复了一个导致打开过多的 RabbitMQ 连接的错误。

  • 修复了在基于 CentOS 的 amphorae 上插入 VIP 时出现的错误。

  • 修复了一个问题,即在 QoS 扩展禁用时尝试在 VIP 上设置 QoS 策略会导致负载均衡器进入 ERROR 状态。 如果 QoS 扩展被禁用,API 现在将向用户返回 HTTP 400。

  • 修复了一个问题,即在启用 QoS 扩展时在 VIP 上设置 QoS 策略会导致负载均衡器进入 ERROR 状态。

其他说明

  • 在证书部分添加了一个名为 server_certs_key_passphrase 的新选项。 默认值从名为 TLS_PASS_AMPS_DEFAULT 的环境变量复制。 如果未设置 TLS_PASS_AMPS_DEFAULT,并且操作员未直接填写任何其他值,则将使用“insecure-key-do-not-use-this-key”。

2.0.4

升级说明

  • 为了解决活动/待机负载均衡器上的 IPv6 VIP 问题,需要构建一个新的 amphora 镜像。

错误修复

  • 修复了使用 IPv6 VIP 地址配置为活动/待机拓扑的负载均衡器的问题。 此修复需要构建一个新的 amphora 镜像。

  • 在没有健康检查的 pool 上创建成员有时会在配置序列期间短暂地将其运行状态从 NO_MONITOR 更新为 OFFLINE 然后返回到 NO_MONITOR。 这种闪烁现象将不再发生。

  • 通过 admin_state_up=False 禁用的成员现在在 amphora 上的 HAProxy 配置中显示为 disabled。 之前它们根本没有显示。 这意味着禁用的成员现在将出现在健康消息中,并且状态将正确更改为 OFFLINE。

2.0.3

已知问题

  • Octavia Queens 版本发布时,对 Jinja2 和 pyOpenSSL 依赖项的下限约束不足。 请确保您的环境可以安装 Jinja2>=2.10 和 pyOpenSSL>=17.1.0。

安全问题

  • 修复了 Amphora 证书的调试级别日志记录,用于诸如“octavia-create-amp-for-lb-subflow-octavia-generate-serverpem”(由负载均衡器故障转移触发)和“octavia-create-amp-for-lb-subflow-octavia-update-cert-expiration”之类的流程。

错误修复

  • 修复了一个问题,即 Octavia 无法访问数据库(所有数据库实例都已关闭)导致所有正在运行的负载均衡器关闭。 健康管理器现在对数据库中断更具弹性。

  • 添加了新的参数来指定更新 amphora 健康状况和统计信息的线程数。

  • 这将自动删除 Octavia 检测到的 nova 僵尸 amphora。 僵尸 amphora 是报告健康信息的 amphorae,但在 Octavia 的数据库中显示为 DELETED 的 amphorae。

其他说明

  • 处理僵尸 amphora 已经很昂贵,这又增加了一个步骤,可能会增加 Octavia 健康管理器的负载,尤其是在 Nova API 速度较慢期间。

2.0.2

安全问题

  • 添加了一个配置选项“reserved_ips”,允许操作员阻止地址用于负载均衡器成员。 默认设置会阻止 nova 元数据服务地址。

错误修复

  • 修复了一个问题,如果同时发生多个 amphora 故障,故障转移可能无法完全完成,导致负载均衡器处于 ERROR 状态。

  • 修复了一个问题,如果定义了网关,VIP 返回流量始终通过网关地址路由,即使是本地流量也是如此。

  • 修复了一个错误,未指定或无限的监听器连接限制设置在使用 amphora/octavia 驱动程序时会导致 2000 个连接限制。 这是某些 HAproxy 包中编译的连接限制。

  • 修复了一个 neutron-lbaas LBaaS v2 API 兼容性问题,通过 ‘/statuses’ 请求负载均衡器状态树时。

2.0.0

新特性

  • 为 plugin.sh 添加了钩子:octavia_create_network_interface_deviceoctavia_delete_network_interface_device。 对于这两个函数,如果在堆栈(分别取消堆栈)期间定义了它们,则会调用它们来创建(分别删除)管理网络接口。

  • 添加了一个新的端点 /v2.0/octavia/amphorae 以暴露 amphorae 的内部详细信息。 此端点仅供管理员使用。

  • 计算区域(如果适用)现在缓存在数据库中,并在 Amphora API 中作为 cached_zone 返回。 请注意,这仅在初始配置时设置,由于各种原因(例如,由于维护而进行的实时迁移)可能会过时。 我们建议仅将其用作参考,除非您确定它在您的环境中是当前的。 计算使用的系统仍然是事实来源。

  • 为 Amphora API 添加了 ‘failover’ 子资源。 可以通过向资源发送 PUT(带有空正文)来触发每个 amphora 的故障转移 /v2.0/octavia/amphorae/<uuid>/failover。 这将导致 amphora 被回收和替换,就像由健康触发的故障转移一样。

  • 用户现在可以使用对单个 PKCS12 包的引用作为他们的 default_tls_container_ref,而不是带有单个 secret 对象的 Barbican 容器。 PKCS12 支持捆绑私钥、证书和中间证书。 使用 PKCS12 包时,私钥不能再受密码保护。 无需进行任何配置更改即可启用此功能。 用户只需开始使用它即可。 任何使用旧式容器的行为都将被检测到,并会自动回退到使用旧的 Barbican 驱动程序。

  • 证书包现在可以存储在 Castellan 支持的任何后端中,并且可以通过 Castellan 驱动程序检索,即使未部署 Barbican。

  • 现在可以作为批量操作完全更新 pool 的成员列表。 使用对 pool 的成员基本端点上的 PUT 请求,您可以指定成员对象的列表,并且该服务将执行任何必要的创建/删除/更新作为单个操作。

  • 在某些环境中(例如 OSA),Neutron 和 Octavia 使用不同的队列(至少不同的 vhost),因此如果 Octavia 向 Octavia 队列发布,而 Neutron 侦听 Neutron 队列,则事件将永远无法传递。

    这增加了一种配置自定义队列以用于事件流式传输的方法,从而允许在需要时将消息发布到 Neutron 队列。

  • diskimage-create.sh 中新的选项 -n 以完全禁用 amphora 上的 sshd。

  • 现在 Octavia API 可以接受来自 neutron 的 QoS 策略 ID,以支持针对负载均衡器 VIP 端口的 QoS 要求。

已知问题

  • 使用早于 1.6 的 HAProxy 的 amphora 镜像(CentOS 7 等)在用户选择 PING 时仍将使用健康检查类型 TCP。

升级说明

  • 在更新 Octavia 控制器之前,需要将 amphora 更新为带有此版本代理和 ping-wrapper.sh 脚本的新镜像。 如果负载均衡器正在使用健康检查类型为 PING 的 amphora 镜像,并且该镜像尚未更新,则负载均衡器的下一次配置更改将导致其进入 ERROR 状态,直到它故障转移到更新的镜像为止。

弃用说明

  • 配置选项 amp_ssh_access_allowed 已弃用,因为它在功能上与 amp_ssh_key_name 重叠,并且不需要。 简单地将变量 amp_ssh_key_name 留空,将不会安装任何 ssh 密钥。 这与使用 amp_ssh_access_allowed = False 相同的结果。

安全问题

  • 由于 PKCS12 不以明确的方式支持存储密码,因此私钥不再可以受密码保护。 请注意,这并不比将受密码保护的私钥存储在与密码相同的地点不安全,就像使用 Barbican 的情况一样。

  • 根据其他队列的设置方式,其他队列的附加密码将位于 Octavia 配置文件中。 操作员应注意设置具有适当限制的适当用户到所需的主题。

  • 现在可以完全从 amphora 镜像中删除 sshd,以进一步锁定访问并提高安全性。 如果设置了此选项,提供 amp_ssh_key_name 在配置中将安装该密钥,但将无法访问 ssh,因为 sshd 将不会运行。

错误修复

  • 修复了一个健康检查类型为 PING 的健康检查实际上正在执行 TCP 健康检查的问题。

  • 改进了返回给用户的错误消息,例如尝试向 pool 添加第二个健康检查时的错误。

  • Neutron LBaaS 正在将它创建的 VIP 端口分配给用户的项目 ID,从而允许用户将浮动 IP 附加到 VIP 端口。 另一方面,Octavia 正在将 Octavia 项目 ID 分配给端口,使得用户无法附加浮动 IP。 此补丁使 Octavia 的行为与 Neutron LBaaS 一致,并将用户的项目 ID 分配给 Octavia 创建的 VIP 端口。