2023.1 系列发布说明¶
2023.1-eom¶
错误修复¶
修复了 TLS 存储不可用或返回错误时,负载均衡器停留在 PENDING_DELETE 状态的问题。
12.0.1¶
升级说明¶
一个修复 VIP 端口由于缺少 IP 规则而无法访问的问题的补丁,需要更新 Amphora 镜像。
错误修复¶
修复了更新带有空“delay”参数的 UDP 健康检查器时出现的错误。
修复了请求中的“limit”参数小于或等于 0 时的问题。现在它会根据 pagination_max_limit 按照预期返回资源,而不是报错。
修复了删除负载均衡器的最后一个监听器可能会触发故障转移的问题。
修复了在使用主题为空或缺少 CN 的证书时出现的问题。
allowed_cidr 参数的验证仅考虑了主 VIP 的 IP 版本。 仅匹配附加 VIP 版本 CIDR 被拒绝。 这已得到修复,CIDR 现在与所有 VIP 的 IP 版本进行匹配。
修复了 amphorav1 中的一个错误,被删除的成员的子网并非立即从 amphora 上断开,而仅在成员下次更新时断开。
修复了在添加或删除成员时,Octavia 可能会通过添加或删除其他子网重新配置 amphora 的管理端口的问题。 Octavia 在这些任务期间不再更新管理端口。
修复了成员批量更新 API 调用中的潜在竞争条件,负载均衡器可能未被正确锁定。
修复了 amphora-agent 中的一个错误,当负载均衡器同时具有 IPv4 和 IPv6 VIP,并且具有 UDP 监听器,但仅包含 IPv4 会员或仅包含 IPv6 会员时,会触发一个异常。
修复了一个潜在问题,当删除一个 amphora 未完全创建的负载均衡器时,删除操作可能在释放 VIP 端口时失败,导致负载均衡器处于 ERROR 状态。
在批量成员 API 请求中添加了一个验证步骤,用于检查更新的成员列表中是否多次包含同一个成员,此额外的检查可以防止负载均衡器停留在 PENDING_UPDATE 状态。批量成员流程中重复的成员触发了 Taskflow 中的异常。API 现在如果请求体中已经存在成员,则返回 400(ValidationException)。
修复了创建负载均衡器和带有
allowed_cidrs的监听器时,使用完整的负载均衡器 API,由于 Octavia 无法验证allowed_cidrs的 IP 地址与 VIP 地址具有相同的族而导致调用被拒绝的问题。
修复了禁用监听器时 haproxy 中全局并发连接数的计算问题。之前禁用的监听器的连接限制被用于计算此值,现在已跳过禁用的监听器。
错误修复:创建新的负载均衡器时,LB API 的响应体现在正确包含健康监控的信息。 之前,即使配置了健康监控,此信息也始终为 null。
修复了一个未将所有活动负载均衡器 Health Monitors 在填充的 LB 单个创建调用中设置为 ONLINE 的错误。
修复了 amphora-driver 中带有 ALPN 协议的池上的 HTTP/HTTPS 健康监控的错误。 haproxy 发送的健康检查被后端服务器标记为错误请求。 更新了 haproxy 配置,以便健康检查也使用 ALPN。
修复了一个由于在 Amphora 中删除某些 IP 规则而可能导致 VIP 端口无法访问的错误。只有在从不是 VIP 子网但作为成员子网连接的子网发送请求时才会触发此错误。
修复了一个错误,该错误阻止了在
controller_ip_port_list中用方括号括起来的 IPv6 地址设置健康监控的 operating_status 为 ONLINE。
修复了基于源 IP 的会话持久性在 IPv6 负载均衡器上不起作用的问题。会话持久性现在可以为 IPv4、IPv6 和双栈负载均衡器正常工作。
修复了数据库中断期间负载均衡器卡在
PENDING_*状态的问题。现在,当 Octavia 中的任务失败时,它会重试更新负载均衡器的provisioning_status,直到数据库恢复(或在非常长的超时后放弃 - 大约 2 小时 45 分钟)
修复了在使用双栈(IPv4 和 IPv6)负载均衡器中的 UDP 监听器时出现的问题,UDP 需要的一些 masquerade 规则未正确设置在成员接口上。
修复了一个潜在的错误,在从新网络连接成员的同时删除另一个成员并断开其网络时,Octavia 可能会尝试将新网络连接到新接口,但接口名称已存在。此修复需要更新 Amphora 镜像。
修复了 octavia-status 中报告的在使用默认 amphora 别名时,amphorav2 驱动程序的错误状态的问题。
修复了一个未在创建完全填充的负载均衡器时将未连接池的 provisioning_status 设置为正确的错误。
修复了成员批量更新 API 调用中的竞争条件,传递到 Octavia worker 服务的的数据在快速发送连续 API 调用时可能不正确。然后负载均衡器卡在 PENDING_UPDATE provisioning_status 中。
修复了基于 TCP 的 health-monitor 在 UDP 池上的 SELinux 问题,某些特定的监控端口被 SELinux 拒绝。Amphora 镜像现在启用了
keepalived_connect_anySELinux 布尔值,允许连接到任何端口。
修复了在故障转移期间 amphora 无法访问时启动 VRRP 服务时超时过长的问题。在故障转移期间应使用更短的特定超时时间。
修复了 amphora-driver 中的 TLS-HELLO 健康监控。
修复了 IPv4 和 IPv6 VIP 负载均衡器中 UDP 监听器成员状态的问题。某些成员可能被 Amphora 错误地报告为 DOWN。
修复了与配额减少错误相关的日志消息的格式。它们显示了无用的信息,现在会报告发生错误的正确资源类型。
修复了 Amphora VM 重新启动后 nf_conntrack* 选项值丢失的问题。 更多详情 Story 2010795
当连接新的成员子网时,amphora 会发送新分配的 IP 的 IP 广告。它允许同一 L2 网络上的服务器刷新先前分配的 IP 地址的 ARP 条目。
减少 ACTIVE_STANDBY 负载均衡器的故障转移持续时间。在故障转移期间可能会尝试多次更新无法访问的 amphora,现在如果 amphora 在第一次更新时无法访问,则会跳过其他更新。
减少当两个 amphora 都无法访问时 ACTIVE_STANDBY 负载均衡器的故障转移持续时间。
其他说明¶
添加了 Noop 证书管理器。 现在,任何使用 noop 驱动程序的 Octavia 证书操作都将更快(因为它们不会被验证)。
12.0.0¶
新特性¶
新的“cpu-pinning”(CPU 固定)元素优化了 amphora 镜像,以实现更好的垂直扩展。当配置了具有多个 vCPU 的 amphora flavor 时,它将配置内核以隔离除第一个 vCPU 之外的所有 vCPU(isolcpus)。此外,它还会卸载 irqbalance 并将 IRQ 亲和性设置为第一个 CPU。这样,其他 CPU 可以专门由 HAProxy 使用。一个新的定制 TuneD 配置应用了一些额外的调整,以提高网络延迟。此新功能默认禁用,但可以通过使用 diskimage-create.sh 脚本的 -m 选项,或在运行脚本之前将 AMP_ENABLE_CPUPINNING 环境变量设置为 1 来启用。
Amphora agent 已进行了调整,以补充新 cpu-pinning 元素中实现的垂直扩展优化。如果 flavor 使用多个 vCPU,它将自动配置 HAProxy,将每个 worker 线程固定到由该元素隔离的单个 CPU(从第二个 vCPU 开始)。
amphora 镜像的 cpu-pinning 元素设置了内核启动参数 nohz_full=1-N,以在除第一个 CPU 之外的所有 CPU 上启用完全的 dynticks。这应将这些 CPU 上的内核噪声降至最低,并降低延迟。(在单 CPU 镜像上,此设置将不起作用)。
升级说明¶
Octavia API 现在将检查是否存在 HTTP Accept header,如果存在,则检查其是否与 application/json 内容类型兼容。如果不是,用户将收到 406 状态码响应,即“不可接受”。
Amphora 垂直扩展优化需要使用启用可选 CPU 固定功能的新的 amphora 镜像构建才能生效。
diskimage-create.sh已更新为默认构建 Ubuntu Jammy (22.04) amphora 镜像。
为了使完全的 dynticks 优化生效,需要使用新的可选 CPU 固定功能启用构建新的 amphora 镜像。
弃用说明¶
配置选项 user_data_config_drive 已弃用。nova user_data 选项太小,无法替代 cloud-init 的正常基于文件的 config_drive 配置。此选项在 Octavia 中从未真正可用,将被删除以减少混淆。
Amphora 负载均衡器现在仅支持单进程模式。在 API 版本 0.5 之前使用的拆分监听器配置已被从代码库中删除。
安全问题¶
当启用 “INFO” 级别消息且 jobboard 启用时,从 taskflow 日志中过滤掉私有信息。日志可能包含 TLS 证书和 private_key。默认情况下,在 Octavia 中,taskflow 中仅启用 WARNING 及以上级别的消息,并且 jobboard 已禁用。
错误修复¶
Octavia API 现在将检查是否存在 HTTP Accept header,如果存在,则检查其是否与 application/json 内容类型兼容。如果不是,用户将收到 406 状态码响应,即“不可接受”。此更改还确保 API 响应具有 application/json 内容类型。
修复了使用 ‘text/plain’ mime 类型与 healthcheck 端点的问题。
添加了一个过滤器,用于隐藏在禁用 jobboard 时创建 amphora 时出现的虚假 ComputeWaitTimeoutException 异常。此异常是创建负载均衡器或 amphora 流程的一部分,不应显示给用户。
taskflow 在 “INFO” 级别消息中记录了 taskflow Flow 的参数,其中包含 TLS 启用监听器和池参数,例如证书和 private_key。
修复 amphora haproxy_count 以返回正在运行的 haproxy 进程的数量。
修复了在使用应用程序凭证令牌或信任 ID 创建 TERMINATED_HTTPS 监听器时与 Barbican 相关的身份验证错误。
修复了在 Centos 9 Stream 中重新加载服务器状态后出现的“损坏的全局服务器状态文件”错误。它还修复了 haproxy 重启后服务器的操作状态恢复问题。
修复了在 jobboard_enabled=False 的情况下创建完全图的负载均衡器时出现的一个错误。
修复了一个阻止 Octavia 在 SINGLE 拓扑模式下使用完全填充的负载均衡器 API 创建监听器的问题。
修复了与在 HAProxy 状态之间保留状态的功能的向后兼容性问题。HAProxy 1.5 或更早版本不支持此功能,因此 Octavia 不会在使用这些版本的 amphorae 上激活它。
修复了旧版 admin 角色的策略,它仍然是具有 sRBAC 的管理员。
删除了系统范围的策略,所有策略现在都为项目范围。
修改了默认的 Keepalived LVS 持久性粒度配置值,使其与 ipv6 兼容。
修复了 Centos 8 Stream 上 PING health-monitor 的问题。Centos 和 systemd 的更改阻止了非特权用户从网络命名空间发送 ping 请求。
使用
castellan_cert_manager作为 cert_manager 得到了显著改进。现在可以在 octavia.conf 中定义 castellan 的配置选项,它们将被正确传递到 castellan 后端。这允许使用允许的 castellan 后端作为证书存储。
修复了 Tags 对象与其他 Octavia 资源之间的关系警告。
其他说明¶
当配置 HTTPS 终止监听器时,Octavia 将调整 HAProxy tune.ssl.cachesize 设置,以使用 amphora 上大约一半的可用内存(空闲 + 缓冲区 + 缓存),减去基于全局最大连接数设置的网络套接字所需的内存。这允许更好地重用现有的 SSL 会话,并有助于降低计算密集型 SSL 握手次数。