Yoga 系列发布说明

10.1.1

升级说明

  • 一个修复 VIP 端口由于缺少 IP 规则而无法访问的问题的补丁,需要更新 Amphora 镜像。

错误修复

  • 修复了使用 ‘text/plain’ mime 类型与 healthcheck 端点的问题。

  • 修复了删除负载均衡器的最后一个监听器可能会触发故障转移的问题。

  • 修复了在使用主题为空或缺少 CN 的证书时出现的问题。

  • 修复 amphora haproxy_count 以返回正在运行的 haproxy 进程的数量。

  • 修复了 amphorav1 中的一个错误,被删除的成员的子网并非立即从 amphora 上断开,而仅在成员下次更新时断开。

  • 修复了在添加或删除成员时,Octavia 可能会通过添加或删除其他子网重新配置 amphora 的管理端口的问题。 Octavia 在这些任务期间不再更新管理端口。

  • 修复了 amphora-driver 中带有 ALPN 协议的池上的 HTTP/HTTPS 健康监控的错误。 haproxy 发送的健康检查被后端服务器标记为错误请求。 更新了 haproxy 配置,以便健康检查也使用 ALPN。

  • 修复了一个由于在 Amphora 中删除某些 IP 规则而可能导致 VIP 端口无法访问的错误。只有在从不是 VIP 子网但作为成员子网连接的子网发送请求时才会触发此错误。

  • 修复了数据库中断期间负载均衡器卡在 PENDING_* 状态的问题。现在,当 Octavia 中的任务失败时,它会重试更新负载均衡器的 provisioning_status,直到数据库恢复(或在非常长的超时后放弃 - 大约 2 小时 45 分钟)

  • 修复了 octavia-status 中报告的在使用默认 amphora 别名时,amphorav2 驱动程序的错误状态的问题。

  • 修改了默认的 Keepalived LVS 持久性粒度配置值,使其与 ipv6 兼容。

  • 修复了成员批量更新 API 调用中的竞争条件,传递到 Octavia worker 服务的的数据在快速发送连续 API 调用时可能不正确。然后负载均衡器卡在 PENDING_UPDATE provisioning_status 中。

  • 修复了在故障转移期间 amphora 无法访问时启动 VRRP 服务时超时过长的问题。在故障转移期间应使用更短的特定超时时间。

  • 修复了 amphora-driver 中的 TLS-HELLO 健康监控。

  • 使用 castellan_cert_manager 作为 cert_manager 得到了显著改进。现在可以在 octavia.conf 中定义 castellan 的配置选项,它们将被正确传递到 castellan 后端。这允许使用允许的 castellan 后端作为证书存储。

  • 减少 ACTIVE_STANDBY 负载均衡器的故障转移持续时间。在故障转移期间可能会尝试多次更新无法访问的 amphora,现在如果 amphora 在第一次更新时无法访问,则会跳过其他更新。

  • 减少当两个 amphora 都无法访问时 ACTIVE_STANDBY 负载均衡器的故障转移持续时间。

  • 修复了 Tags 对象与其他 Octavia 资源之间的关系警告。

其他说明

  • 添加了 Noop 证书管理器。 现在,任何使用 noop 驱动程序的 Octavia 证书操作都将更快(因为它们不会被验证)。

10.1.0

已知问题

  • 当使用具有最新 SELinux 版本的发行版(例如 CentOS 8 Stream)时,PING health-monitor 无法工作,因为 shell_exec_t 调用被 SELinux 拒绝。

  • 修复了配置问题,该问题允许经过身份验证和授权的用户使用 API 请求将代码注入到 HAProxy 配置中。Octavia API 不再接受更新 healthmonitor 请求中 url_path 值中的未编码的空白字符。

升级说明

  • 更新 Netfilter Conntrack Sysfs 变量的修复需要重建 amphora 镜像才能生效。

安全问题

  • 当启用 “INFO” 级别消息且 jobboard 启用时,从 taskflow 日志中过滤掉私有信息。日志可能包含 TLS 证书和 private_key。默认情况下,在 Octavia 中,taskflow 中仅启用 WARNING 及以上级别的消息,并且 jobboard 已禁用。

错误修复

  • 为了避免在批量更新时创建许多新成员时对 Neutron API 造成过大的压力,我们在批量更新成员 API 调用中缓存子网验证结果。我们还更改为仅在批量更新成员期间验证新成员,因为子网 ID 是不可变的。

  • 确保 rsyslog 使用 amphorav1 提供程序中的 rsyslog 配置文件,方法是重新启动该服务,这修复了在某些发行版中 rsyslog 在 cloud-init 之前启动时的日志卸载功能。

  • taskflow 在 “INFO” 级别消息中记录了 taskflow Flow 的参数,其中包含 TLS 启用监听器和池参数,例如证书和 private_key。

  • 修复了在使用应用程序凭证令牌或信任 ID 创建 TERMINATED_HTTPS 监听器时与 Barbican 相关的身份验证错误。

  • 修复了成员批量更新 API 调用中的潜在竞争条件,负载均衡器可能未被正确锁定。

  • 修复了在持久化 amphorav2 时可能发生的问题,ComputeActiveWait 在不同的控制器上被错误地执行了两次。

  • 修复了在 Centos 9 Stream 中重新加载服务器状态后出现的“损坏的全局服务器状态文件”错误。它还修复了 haproxy 重启后服务器的操作状态恢复问题。

  • 修复了禁用的 UDP 池。禁用的 UDP 池被标记为“OFFLINE”,但请求仍然转发到池的成员。

  • 修复了驱动程序代理的关闭问题,该过程可能在等待线程完成时卡住。Systemd 会在超时后杀死该过程,但某些子进程可能会泄漏到控制器上。

  • 为 CentOS 或 RHEL amphora 镜像启用所需的 SELinux 布尔值。

  • 修复了在 jobboard_enabled=False 的情况下创建完全图的负载均衡器时出现的一个错误。

  • 修复了一个阻止 Octavia 在 SINGLE 拓扑模式下使用完全填充的负载均衡器 API 创建监听器的问题。

  • 修复了与在 HAProxy 状态之间保留状态的功能的向后兼容性问题。HAProxy 1.5 或更早版本不支持此功能,因此 Octavia 不会在使用这些版本的 amphorae 上激活它。

  • 修复了一个在创建、更新或删除 health-monitor 时发生错误时,无法将 health-monitor 的 provisioning_state 设置为 ERROR 的错误。

  • 修复了一个未将所有活动负载均衡器 Health Monitors 在填充的 LB 单个创建调用中设置为 ONLINE 的错误。

  • 修复了一个错误,该错误阻止了在 controller_ip_port_list 中用方括号括起来的 IPv6 地址设置健康监控的 operating_status 为 ONLINE。

  • 修复了协议用于 PROXY 或 PROXYV2 的监听器创建失败的问题,这些是池协议而不是监听器协议。

  • 修复了更新监听器证书失败的问题。该修复确保现有的证书被正确覆盖。

  • 修复了一个潜在的错误,在从新网络连接成员的同时删除另一个成员并断开其网络时,Octavia 可能会尝试将新网络连接到新接口,但接口名称已存在。此修复需要更新 Amphora 镜像。

  • 现在 amphora 上设置了 net.netfilter.nf_conntrack_max 和 nf_conntrack_expect_max Netfilter Conntrack Sysfs 变量为合理的值。 以前,使用了内核默认值,这些值对于配置的 net.netfilter.nf_conntrack_buckets 值来说太低了。 因此,数据包可能会因为 conntrack 表填充过快而丢失。 请注意,这仅影响 UDP 和 SCTP 协议监听器。 amphora 上禁用 TCP 连接的连接跟踪,包括 HTTP(S)。

  • 现在 [nova] service_name 参数可有效地用于在 keystone 目录中查找 nova 端点。在修复之前,该参数无效。

  • 修复了 Centos 8 Stream 上 PING health-monitor 的问题。Centos 和 systemd 的更改阻止了非特权用户从网络命名空间发送 ping 请求。

  • 修复了使用最新 haproxy 版本(>=2.2)的 PING health-monitor 的问题,haproxy 现在需要额外的“insecure-fork-wanted”选项才能授权 Octavia PING healthcheck。

  • 修复了在连接属于具有多个子网的网络上的子网时,amphora 中可能连接了错误的子网的问题。

  • 修复了在删除最后一个连接到网络的成员时,未删除不再使用的端口的问题。

  • 修复了一个未在创建完全填充的负载均衡器时将未连接池的 provisioning_status 设置为正确的错误。

  • 修复了在故障转移后更新具有 QoS 策略的负载均衡器时出现的问题,Octavia 尝试更新已删除 amphorae 的 VRRP 端口,将负载均衡器的配置状态移动到 ERROR。

  • 修复了 amphorav2 worker 中更新资源时可能出现的竞争条件。worker 没有等待资源设置为 PENDING_UPDATE,因此资源可能使用数据库中的旧数据进行更新,从而导致无操作更新。

  • 修复了已恢复后重新调度 taskflow 任务的问题。

  • 修复了 amphora 上 lvs-masquerade.sh 脚本中的 SELinux 问题。该脚本已经以 root 权限运行,因此脚本内部使用 sudo 是不必要的。

  • 修复了基于 TCP 的 health-monitor 在 UDP 池上的 SELinux 问题,某些特定的监控端口被 SELinux 拒绝。Amphora 镜像现在启用了 keepalived_connect_any SELinux 布尔值,允许连接到任何端口。

  • 修复了在对具有两个 amphora 都缺失的 ACTIVE-STANDBY 负载均衡器进行故障转移时出现的问题。控制器中的某些任务花费了太多的时间才能超时,因为在 [haproxy_amphora].active_connection_max_retries[haproxy_amphora].active_connection_rety_interval 中定义的超时值未被使用。

  • 修复了在使用持久化 amphorav2 驱动程序和 TLSContainer 时,数据模型中字节类型列表未正确转换为可序列化数据的问题。

  • 修复了在删除 CA/CRL 后更新/删除监听器的 client_ca_tls_container_ref 字段时出现的“无法检索证书”错误。

  • 修复了一个 python3 错误,该错误阻止了在构建 amphorae 时使用 [controller_worker]/user_data_config_drive 选项。

  • 修复了 L7 规则和会话 cookie API 中的验证,以防止经过身份验证和授权的用户将代码注入到 HAProxy 配置中。CR 和 LF (\r 和 \n) 不允许在 L7 规则键和值中使用。会话持久性 cookie 名称必须遵循 https://mdn.org.cn/en-US/docs/Web/HTTP/Headers/Set-Cookie 中描述的规则。

  • 修复了在某些 API 调用(POST /l7rule、PUT /pool)中负载均衡器卡在 PENDING_UPDATE 状态的问题,当提供程序拒绝该调用时。

  • Octavia API 在数据库中创建对象时约束失败时返回了无用的消息。该错误现在包含违反约束的参数的名称和值。

  • 当连接新的成员子网时,amphora 会发送新分配的 IP 的 IP 广告。它允许同一 L2 网络上的服务器刷新先前分配的 IP 地址的 ARP 条目。

  • 验证 L7 策略的创建与 Amphora 驱动程序中监听器的协议兼容。L7 策略允许用于 Terminated HTTPS 或 HTTP 协议监听器,但不允许用于 HTTPS、TCP 或 UDP 协议监听器。

其他说明

  • 数据库模型对象的字符串表示形式已得到改进。调用 str() 会返回字段的某个子集,调用 repr() 会返回所有字段。这有助于调试,但也会更改 Octavia 发出的某些日志消息。

10.0.0

新特性

  • 添加了一个新的 PROMETHEUS 监听器,用于暴露 prometheus exporter 端点。

已知问题

  • PROMETHEUS 监听器不会报告 UDP 或 SCTP 监听器的信息。

升级说明

  • PROMETHEUS 监听器需要一个带有 HAProxy 2.0 或更高版本的 amphora 镜像。

  • 配置选项 [haproxy_amphora].active_connection_rety_interval 已重命名为 [haproxy_amphora].active_connection_retry_interval。为了与旧配置文件兼容,旧名称的别名仍然存在。

错误修复

  • 增加了 TCP 缓冲区内存最大值并启用了 MTU ICMP 黑洞检测。

  • amphora 上生成的 RSyslog 配置现在支持使用 TCP 进行 RSyslog 故障转移,如果指定了多个 RSyslog 服务器。

  • 确保 rsyslog 使用提供的 rsyslog 配置文件,方法是重新启动该服务,这修复了在某些发行版中 rsyslog 在 cloud-init 之前启动时的日志卸载功能。

  • 配置选项 [haproxy_amphora].active_connection_rety_interval 已重命名为 [haproxy_amphora].active_connection_retry_interval

  • 修复了为 Centos Stream 9 构建 amphora 镜像时的问题。

  • 修复了为 RHEL 9 构建 amphora 镜像时的问题。

  • 正确检测成员操作状态“drain”在从 HAProxy 查询状态数据时。

  • 修复了一个 IPv6 成员在添加后可能短暂地设置为 ERROR 操作状态的问题。

  • 修复了 amphorav2 和持久化的问题,某些由控制器执行的长时间任务可能过早地在 taskflow 中释放,并在另一个控制器上重新调度。Octavia 现在通过使用 keepalive 机制通知 taskflow(及其 redis 后端)作业仍在运行,来确保任务不会过早释放。

  • 修复了一个处于 ERROR 操作状态的成员在负载均衡器配置更改期间可能短暂地更新为 ONLINE 的问题。

  • 修复了一个负载均衡器的配置状态过早设置为 ERROR 的问题,导致在资源完成任务执行之前负载均衡器处于可变状态。

  • 修复了一个在 amphora 故障转移流程中可能将负载均衡器的配置状态设置为 PENDING_UPDATE 状态的问题。

  • 修复了一个在配置 amphora 中的成员接口时可能触发的竞争条件。由于竞争条件,网络接口可能从 amphora 中删除,导致连接丢失。