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_device 和 octavia_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 端口。