Xena 系列发布说明¶
9.1.0-40¶
升级说明¶
一个修复 VIP 端口由于缺少 IP 规则而无法访问的问题的补丁,需要更新 Amphora 镜像。
安全问题¶
当启用 “INFO” 级别消息且 jobboard 启用时,从 taskflow 日志中过滤掉私有信息。日志可能包含 TLS 证书和 private_key。默认情况下,在 Octavia 中,taskflow 中仅启用 WARNING 及以上级别的消息,并且 jobboard 已禁用。
错误修复¶
修复了使用 ‘text/plain’ mime 类型与 healthcheck 端点的问题。
taskflow 在 “INFO” 级别消息中记录了 taskflow Flow 的参数,其中包含 TLS 启用监听器和池参数,例如证书和 private_key。
修复 amphora haproxy_count 以返回正在运行的 haproxy 进程的数量。
修复了 amphorav1 中的一个错误,被删除的成员的子网并非立即从 amphora 上断开,而仅在成员下次更新时断开。
修复了成员批量更新 API 调用中的潜在竞争条件,负载均衡器可能未被正确锁定。
修复了在持久化 amphorav2 时可能发生的问题,ComputeActiveWait 在不同的控制器上被错误地执行了两次。
修复了在 Centos 9 Stream 中重新加载服务器状态后出现的“损坏的全局服务器状态文件”错误。它还修复了 haproxy 重启后服务器的操作状态恢复问题。
修复了禁用的 UDP 池。禁用的 UDP 池被标记为“OFFLINE”,但请求仍然转发到池的成员。
修复了在 jobboard_enabled=False 的情况下创建完全图的负载均衡器时出现的一个错误。
修复了一个阻止 Octavia 在 SINGLE 拓扑模式下使用完全填充的负载均衡器 API 创建监听器的问题。
修复了一个未将所有活动负载均衡器 Health Monitors 在填充的 LB 单个创建调用中设置为 ONLINE 的错误。
修复了一个由于在 Amphora 中删除某些 IP 规则而可能导致 VIP 端口无法访问的错误。只有在从不是 VIP 子网但作为成员子网连接的子网发送请求时才会触发此错误。
修复了数据库中断期间负载均衡器卡在
PENDING_*状态的问题。现在,当 Octavia 中的任务失败时,它会重试更新负载均衡器的provisioning_status,直到数据库恢复(或在非常长的超时后放弃 - 大约 2 小时 45 分钟)
修复了协议用于 PROXY 或 PROXYV2 的监听器创建失败的问题,这些是池协议而不是监听器协议。
修复了更新监听器证书失败的问题。该修复确保现有的证书被正确覆盖。
修复了一个潜在的错误,在从新网络连接成员的同时删除另一个成员并断开其网络时,Octavia 可能会尝试将新网络连接到新接口,但接口名称已存在。此修复需要更新 Amphora 镜像。
现在
[nova] service_name参数可有效地用于在 keystone 目录中查找 nova 端点。在修复之前,该参数无效。
修复了 octavia-status 中报告的在使用默认 amphora 别名时,amphorav2 驱动程序的错误状态的问题。
修复了 Centos 8 Stream 上 PING health-monitor 的问题。Centos 和 systemd 的更改阻止了非特权用户从网络命名空间发送 ping 请求。
修复了使用最新 haproxy 版本(>=2.2)的 PING health-monitor 的问题,haproxy 现在需要额外的“insecure-fork-wanted”选项才能授权 Octavia PING healthcheck。
修复了一个未在创建完全填充的负载均衡器时将未连接池的 provisioning_status 设置为正确的错误。
修复了成员批量更新 API 调用中的竞争条件,传递到 Octavia worker 服务的的数据在快速发送连续 API 调用时可能不正确。然后负载均衡器卡在 PENDING_UPDATE provisioning_status 中。
修复了已恢复后重新调度 taskflow 任务的问题。
修复了基于 TCP 的 health-monitor 在 UDP 池上的 SELinux 问题,某些特定的监控端口被 SELinux 拒绝。Amphora 镜像现在启用了
keepalived_connect_anySELinux 布尔值,允许连接到任何端口。
修复了在故障转移期间 amphora 无法访问时启动 VRRP 服务时超时过长的问题。在故障转移期间应使用更短的特定超时时间。
修复了在使用持久化 amphorav2 驱动程序和 TLSContainer 时,数据模型中字节类型列表未正确转换为可序列化数据的问题。
修复了一个 python3 错误,该错误阻止了在构建 amphorae 时使用
[controller_worker]/user_data_config_drive选项。
Octavia API 在数据库中创建对象时约束失败时返回了无用的消息。该错误现在包含违反约束的参数的名称和值。
当连接新的成员子网时,amphora 会发送新分配的 IP 的 IP 广告。它允许同一 L2 网络上的服务器刷新先前分配的 IP 地址的 ARP 条目。
减少 ACTIVE_STANDBY 负载均衡器的故障转移持续时间。在故障转移期间可能会尝试多次更新无法访问的 amphora,现在如果 amphora 在第一次更新时无法访问,则会跳过其他更新。
减少当两个 amphora 都无法访问时 ACTIVE_STANDBY 负载均衡器的故障转移持续时间。
修复了 Tags 对象与其他 Octavia 资源之间的关系警告。
9.1.0¶
已知问题¶
当使用具有最新 SELinux 版本的发行版(例如 CentOS 8 Stream)时,PING health-monitor 无法工作,因为 shell_exec_t 调用被 SELinux 拒绝。
修复了配置问题,该问题允许经过身份验证和授权的用户使用 API 请求将代码注入到 HAProxy 配置中。Octavia API 不再接受更新 healthmonitor 请求中 url_path 值中的未编码的空白字符。
升级说明¶
更新 Netfilter Conntrack Sysfs 变量的修复需要重建 amphora 镜像才能生效。
错误修复¶
增加了 TCP 缓冲区内存最大值并启用了 MTU ICMP 黑洞检测。
amphora 上生成的 RSyslog 配置现在支持使用 TCP 进行 RSyslog 故障转移,如果指定了多个 RSyslog 服务器。
为了避免在批量更新时创建许多新成员时对 Neutron API 造成过大的压力,我们在批量更新成员 API 调用中缓存子网验证结果。我们还更改为仅在批量更新成员期间验证新成员,因为子网 ID 是不可变的。
确保 rsyslog 使用提供的 rsyslog 配置文件,方法是重新启动该服务,这修复了在某些发行版中 rsyslog 在 cloud-init 之前启动时的日志卸载功能。
确保 rsyslog 使用 amphorav1 提供程序中的 rsyslog 配置文件,方法是重新启动该服务,这修复了在某些发行版中 rsyslog 在 cloud-init 之前启动时的日志卸载功能。
修复了为 Centos Stream 9 构建 amphora 镜像时的问题。
修复了为 RHEL 9 构建 amphora 镜像时的问题。
修复了在使用应用程序凭证令牌或信任 ID 创建 TERMINATED_HTTPS 监听器时与 Barbican 相关的身份验证错误。
正确检测成员操作状态“drain”在从 HAProxy 查询状态数据时。
修复了驱动程序代理的关闭问题,该过程可能在等待线程完成时卡住。Systemd 会在超时后杀死该过程,但某些子进程可能会泄漏到控制器上。
为 CentOS 或 RHEL amphora 镜像启用所需的 SELinux 布尔值。
修复了与在 HAProxy 状态之间保留状态的功能的向后兼容性问题。HAProxy 1.5 或更早版本不支持此功能,因此 Octavia 不会在使用这些版本的 amphorae 上激活它。
修复了一个在创建、更新或删除 health-monitor 时发生错误时,无法将 health-monitor 的 provisioning_state 设置为 ERROR 的错误。
修复了一个 IPv6 成员在添加后可能短暂地设置为 ERROR 操作状态的问题。
修复了 amphorav2 和持久化的问题,某些由控制器执行的长时间任务可能过早地在 taskflow 中释放,并在另一个控制器上重新调度。Octavia 现在通过使用 keepalive 机制通知 taskflow(及其 redis 后端)作业仍在运行,来确保任务不会过早释放。
修复了一个处于 ERROR 操作状态的成员在负载均衡器配置更改期间可能短暂地更新为 ONLINE 的问题。
现在 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)。
修复了在连接属于具有多个子网的网络上的子网时,amphora 中可能连接了错误的子网的问题。
修复了在删除最后一个连接到网络的成员时,未删除不再使用的端口的问题。
修复了在故障转移后更新具有 QoS 策略的负载均衡器时出现的问题,Octavia 尝试更新已删除 amphorae 的 VRRP 端口,将负载均衡器的配置状态移动到 ERROR。
修复了 amphorav2 worker 中更新资源时可能出现的竞争条件。worker 没有等待资源设置为 PENDING_UPDATE,因此资源可能使用数据库中的旧数据进行更新,从而导致无操作更新。
修复了 amphora 上 lvs-masquerade.sh 脚本中的 SELinux 问题。该脚本已经以 root 权限运行,因此脚本内部使用 sudo 是不必要的。
修复了在对具有两个 amphora 都缺失的 ACTIVE-STANDBY 负载均衡器进行故障转移时出现的问题。控制器中的某些任务花费了太多的时间才能超时,因为在
[haproxy_amphora].active_connection_max_retries和[haproxy_amphora].active_connection_rety_interval中定义的超时值未被使用。
修复了一个在配置 amphora 中的成员接口时可能触发的竞争条件。由于竞争条件,网络接口可能从 amphora 中删除,导致连接丢失。
修复了在删除 CA/CRL 后更新/删除监听器的 client_ca_tls_container_ref 字段时出现的“无法检索证书”错误。
修复了 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 状态的问题,当提供程序拒绝该调用时。
验证 L7 策略的创建与 Amphora 驱动程序中监听器的协议兼容。L7 策略允许用于 Terminated HTTPS 或 HTTP 协议监听器,但不允许用于 HTTPS、TCP 或 UDP 协议监听器。
其他说明¶
数据库模型对象的字符串表示形式已得到改进。调用 str() 会返回字段的某个子集,调用 repr() 会返回所有字段。这有助于调试,但也会更改 Octavia 发出的某些日志消息。
9.0.1¶
错误修复¶
修复了一个负载均衡器的配置状态过早设置为 ERROR 的问题,导致在资源完成任务执行之前负载均衡器处于可变状态。
修复了一个在 amphora 故障转移流程中可能将负载均衡器的配置状态设置为 PENDING_UPDATE 状态的问题。
9.0.0¶
新特性¶
AmphoraV2 提供程序在早期版本中引入,现在是 Octavia 的默认 Amphora 提供程序。 可用别名 amphorav1 用于旧版本的 Amphora 提供程序。 别名 amphorav2 现在与 amphora 相同。 默认情况下,jobboard(使用持久性存储)未启用,可通过 task_flow 部分中的 jobboard_enabled 选项进行配置。
升级说明¶
对新功能的支持,例如池上的 ALPN、池上的 HTTP/2、gRPC 和 SCTP,需要更新的 amphora 镜像。
备用池功能在 Victoria 版本中已被弃用后已删除。 升级控制器后,备用 amphora 将由 Octavia health-manager 服务自动删除。
弃用说明¶
配置选项
[amphora_agent].agent_server_network_file已被弃用,Xena 中引入的新 Amphora 网络配置工具不支持单个配置文件。
错误修复¶
修复了 amphora 驱动程序池 ALPN 与旧 amphora 镜像的兼容性问题。
Amphora 网络配置现在使用 amphora-interface 工具应用于 VIP 接口和池成员接口。 amphora-interface 使用 pyroute2 底层函数配置接口,而不是特定于发行版的工具,例如“network-scripts”或“/etc/network/interfaces”文件。
禁用 Amphora 中 TCP 流的 conntrack,这可以减少基于 HAProxy 的监听器的内存使用量,并防止一些内核警告关于丢弃的数据包。
修复了 amphorav2 驱动程序的问题,一个 amphora 的故障转移创建了一个状态为 ERROR 的 amphora。
修复了负载均衡器创建失败的问题,当其中一个监听器端口与 octavia 生成的对等端口匹配,并且监听器上的 allowed_cidr 显式设置为 0.0.0.0/0 时。 这是由于创建了两个安全组规则,remote_ip_prefix 为 None 和 remote_ip_prefix 为 0.0.0.0/0,neutron 拒绝了第二个请求,因为安全组规则已存在。
修复了 Amphora 中 rsyslog 配置文件的问题,当日志卸载功能和本地日志存储功能都禁用时。
修复了在使用 host_routes 的 VIP 子网中启用 amphorav2 驱动程序持久性时的序列化错误。
修复了 API 监听器 timeout_client_data、timeout_member_connect、timeout_member_data、timeout_tcp_inspect 的 MAX_TIMEOUT。 该值从 365 天减少到 24 天,现在不超过数据库中数据类型的允许值。
修复了
amphora-haproxy网络命名空间中的lo接口的问题。lo接口已关闭,并阻止 haproxy 在配置更改时与其他 haproxy 进程(用于持久粘性表)进行通信。 这延迟了旧的 haproxy worker 清理,并增加了重新加载配置后的内存消耗。
增加了 amphora 中 nr_open 和 file-max 的限制值,新值基于 HAProxy 2.x 从系统期望的值,该系统具有 Octavia 可以设置的最大 maxconn 值。
修复了带有 keepalived 和 lvs 的 UDP 和 SCTP 监听器的加权轮询。 必须将算法指定为 ‘wrr’ 才能正确工作加权轮询,但被设置为 ‘rr’。
修复了一个错误,允许用户使用子网 UUID 在属于另一个用户的
vip_subnet_id上创建负载均衡器。
其他说明¶
diskimage-create.sh 的 Ubuntu 默认值现在是 focal。