Train 系列发布说明¶
5.1.2-37¶
已知问题¶
当使用具有最新 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 是不可变的。
禁用 Amphora 中 TCP 流的 conntrack,这可以减少基于 HAProxy 的监听器的内存使用量,并防止一些内核警告关于丢弃的数据包。
修复了禁用的 UDP 池。禁用的 UDP 池被标记为“OFFLINE”,但请求仍然转发到池的成员。
正确检测成员操作状态“drain”在从 HAProxy 查询状态数据时。
修复了负载均衡器创建失败的问题,当其中一个监听器端口与 octavia 生成的对等端口匹配,并且监听器上的 allowed_cidr 显式设置为 0.0.0.0/0 时。 这是由于创建了两个安全组规则,remote_ip_prefix 为 None 和 remote_ip_prefix 为 0.0.0.0/0,neutron 拒绝了第二个请求,因为安全组规则已存在。
为 CentOS 或 RHEL amphora 镜像启用所需的 SELinux 布尔值。
修复了与在 HAProxy 状态之间保留状态的功能的向后兼容性问题。HAProxy 1.5 或更早版本不支持此功能,因此 Octavia 不会在使用这些版本的 amphorae 上激活它。
修复了一个在创建、更新或删除 health-monitor 时发生错误时,无法将 health-monitor 的 provisioning_state 设置为 ERROR 的错误。
修复了 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 清理,并增加了重新加载配置后的内存消耗。
修复了一个处于 ERROR 操作状态的成员在负载均衡器配置更改期间可能短暂地更新为 ONLINE 的问题。
修复了一个潜在的错误,在从新网络连接成员的同时删除另一个成员并断开其网络时,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)。
增加了 amphora 中 nr_open 和 file-max 的限制值,新值基于 HAProxy 2.x 从系统期望的值,该系统具有 Octavia 可以设置的最大 maxconn 值。
修复了一个负载均衡器的配置状态过早设置为 ERROR 的问题,导致在资源完成任务执行之前负载均衡器处于可变状态。
修复了一个在 amphora 故障转移流程中可能将负载均衡器的配置状态设置为 PENDING_UPDATE 状态的问题。
修复了在故障转移后更新具有 QoS 策略的负载均衡器时出现的问题,Octavia 尝试更新已删除 amphorae 的 VRRP 端口,将负载均衡器的配置状态移动到 ERROR。
修复了在对具有两个 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 协议监听器。
5.1.2¶
错误修复¶
修复了在构建 HAProxy 配置文件时,在添加新成员后,一些已删除的成员可能包含在服务器列表中的问题。
修复了一个问题,即提供程序驱动程序在删除时可能不会减少负载均衡器对象的配额。
修复了 Amphora 中 rsyslog 配置文件的问题,当日志卸载功能和本地日志存储功能都禁用时。
由于在 amphora 中生成健康消息时存在格式问题,一些 IPv6 UDP 成员被错误地标记为 ERROR 状态。
修复了使用 keepalived 和 lvs 的 UDP 监听器的加权轮询算法。为了使加权轮询正常工作,必须将算法指定为 ‘wrr’,但实际上被设置为 ‘rr’。
修复了一个错误,允许用户使用子网 UUID 在属于另一个用户的
vip_subnet_id上创建负载均衡器。
5.1.1¶
错误修复¶
修复了负载均衡器故障转移时,VIP 子网 IP 地址不足可能导致 VIP 被释放的问题。
修复了监听器超时值默认值覆盖的问题。在配置文件中更改默认超时值没有正确应用于默认监听器参数。
修复了 Amphora 中的 nf_conntrack_buckets sysctl,其值被错误地设置。
修复了一个问题,即更新池上的 CRL 或客户端证书会导致池进入 ERROR 状态。
在 Octavia Amphora 驱动程序中添加一个验证步骤,以确保 VIP 网络的 port_security_enabled 参数已设置。
5.1.0¶
新特性¶
添加了一个新的配置选项,用于定义使用 Amphora 提供程序的新监听器的默认 connection_limit。该选项是 [haproxy_amphora].default_connection_limit,其默认值为 50,000。当创建或设置 connection_limit 参数为 -1 的监听器时,或者取消设置 connection_limit 参数时,将使用此值。
安全问题¶
如果您使用的是 admin_or_owner-policy.yaml 策略覆盖文件,则应升级您的 API 进程以包含 unscoped token 的修复。
错误修复¶
修复了一个问题,即添加到启用 TLS 的池中的成员会进入 ERROR 供应状态。
修复了一个问题,即在活动/待机对中的配对 amphora 在 neutron 中缺少 VRRP 端口时,amphora 故障转移会失败。
修复了禁用 UDP 监听器的运行状态。禁用 UDP 监听器的运行状态现在为 OFFLINE,而不是 ONLINE,其行为与 HTTP/HTTPS/TCP/... 监听器的行为类似。
修复了一个问题,该问题可能导致负载均衡器,其中多个 amphora 处于失败状态,无法完成故障转移。
修复了空 UDP 池的错误
operating_status。没有成员的 UDP 池现在为ONLINE,而不是OFFLINE。
将缺少的 cloud-utils-growpart RPM 添加到基于 Red Hat 的 amphora 镜像中。
将缺少的 cronie RPM 添加到基于 Red Hat 的 amphora 镜像中。
修复了在 housekeeping 服务初始化时,由于在第一次调用 strptime 时线程安全问题,可能出现的 AttributeError 异常(在使用 python2 时)。
修复了一个问题,即启用 TLS 的池无法供应。
修复了一个问题,即仅 UDP 负载均衡器不会启动 VIP 地址。
修复了一个潜在的无效 DOWN 运行状态,适用于 UDP 池的成员。在将新成员添加到池后构建第一个心跳消息时,可能会发生竞争条件,最近添加的成员可能被视为 DOWN。
修复了在使用 admin_or_owner-policy.yaml 策略覆盖文件和 unscoped token 时的问题。
使用 haproxy 1.8.x 版本时,由于预分配的数据结构,haproxy 在 amphorae 中消耗更多的内存。此内存量取决于其配置文件中的 maxconn 参数(与 Octavia API 中的 connection_limit 参数相关)。在 Amphora 提供程序中,默认 connection_limit 值 -1 现在转换为 maxconn 的 50,000。之前为 1,000,000,但该值在快速执行负载均衡器的多个配置更新时会触发一些内存分配问题。
5.0.3¶
升级说明¶
故障转移改进不需要更新 amphora 镜像,但更新现有的 amphora 可以最大限度地减少后续故障转移的停机时间(对于独立 amphora)。
错误修复¶
修复了一个问题,即设置 SNI 容器在监听器更新 API 调用中没有应用。
修复了监听器更新 API 中 Octavia 验证,SNI 容器可以设置为非 TERMINATED_HTTPS 监听器。
修复了一个问题,即 API 列表调用中的某些列不能用于排序键。
修复了一个问题,当 barbican 服务启用 TLS 时,我们创建监听器失败。
修复了一个问题,当 Nova 反亲和性启用且拓扑为 SINGLE 时,amphora 负载均衡器无法创建。
修复了一个问题,即监听器 “insert_headers” 参数被接受用于不支持标头插入的协议。
修复了配置 CentOS/Red Hat amphora 镜像以使用静态路由和路由规则的正确网络 ‘ifcfg’ 文件名称的代码。它使用了错误的路由文件名,并且不支持两个文件中的 IPv6。
显著提高了 amphora 和负载均衡器故障转移的可靠性和性能。当 Nova 服务遇到故障时,尤其如此。
5.0.2¶
升级说明¶
升级后,用户将不再能够使用他们看不到或在负载均衡器上“show”的网络资源。可以通过将配置文件设置 “allow_invisible_reourece_usage” 设置为
True来恢复此行为。
所有运行 py3 基于镜像的 amphora 必须回收利用,否则在证书轮换时最终会失败。
建议更新 amphora 镜像以获取解决 HAProxy 问题的工作方法,该问题会导致如果本地对等名称以 “-x” 开头,HAProxy 将无法重新加载。
安全问题¶
以前,如果用户知道或可以猜到网络资源的 UUID,他们可以使用该 UUID 使用该 UUID 创建负载均衡器资源。现在,用户必须具有查看或“show”资源的权限才能将其与负载均衡器一起使用。这将是新的默认设置,但可以通过将配置文件设置 “allow_invisible_resource_usage” 设置为
True来禁用此行为。此问题属于“C1 类”安全问题,因为用户需要有效的 UUID。
错误修复¶
修复了一个问题,当负载均衡器被禁用时,Octavia Health Manager 会继续故障转移 amphorae。
添加了监听器和池协议验证。池和监听器不能任意组合。我们需要在协议方面进行一些约束。
解决了基于 py3 的 amphora 镜像上的损坏的证书上传。在 housekeeping 证书轮换事件中,amphora 会清除其服务器证书并返回 500,从而使 amphora 进入 ERROR 状态并破坏进一步的通信。请参阅升级说明。
修复了一个问题,即 amphora 镜像创建工具会签出主 amphora-agent 代码和主上界限。
修复了一个问题,即具有多个启用 TLS 监听器的负载均衡器,使用客户端身份验证和/或后端重新加密,可能会加载其他 TLS 启用监听器的错误证书。
修复了一个错误,该错误可能在执行控制器工作程序的正常关闭时中断资源创建,并使资源(例如 amphorae)处于 BOOTING 状态。如果 Octavia 流的持续时间大于 ‘graceful_shutdown_timeout’ 配置值,则停止 Octavia 工作程序仍然可能中断资源的创建。
修复了一个问题,即负载均衡器在设置提供程序不可见的(例如标签)数据时会进入 ERROR 状态。
规避了 HAProxy 问题,该问题会导致如果本地对等名称以 “-x” 开头,HAProxy 将无法重新加载配置更改。
UDP 健康监视器之间的延迟使用错误的配置值
timeout,而应该使用delay。
其他说明¶
为特定负载均衡器启动的 amphorae 现在将在创建后立即链接到该负载均衡器。以前,这不会发生,直到流程快结束时,这使得在尝试解决由于启动问题而进入 ERROR 状态的负载均衡器时很难理解哪个启动的 amphorae 属于哪个负载均衡器。
5.0.1¶
升级说明¶
需要新的 amphora 镜像来修复潜在的 certs-ramfs 竞争条件。
安全问题¶
certs-ramfs 和 amphora 代理之间的竞争条件可能导致租户 TLS 内容存储在 amphora 文件系统上,而不是加密的 RAM 文件系统中。
错误修复¶
修复了一个问题,即具有多个启用 TLS 监听器的负载均衡器,其中一个或多个启用 SNI,可能会从其他 TLS 启用监听器加载证书以供 SNI 使用。
修复了 certs-ramfs 和 amphora 代理服务之间的潜在竞争条件。
修复了筛选提供程序风味功能 API 的能力。
修复了一个错误,该错误可能在执行控制器工作程序的正常关闭时中断资源创建,并使资源处于 PENDING_CREATE/PENDING_UPDATE/PENDING_DELETE 供应状态。如果 Octavia 流的持续时间大于 ‘graceful_shutdown_timeout’ 配置值,则停止 Octavia 工作程序仍然可能中断资源的创建。
5.0.0¶
新功能¶
添加了支持,以便驱动程序代理查询负载均衡器对象。
Octavia 现在支持 Amphora 日志卸载。操作员可以为 Amphora 管理日志和租户负载均衡器流日志定义 syslog 目标。
Octavia 驱动程序代理现在支持启动提供程序驱动程序代理。提供程序驱动程序代理是支持提供程序驱动程序的长期运行的代理进程。
amphora 镜像的默认内核已从 linux-image-generic 切换到 linux-image-virtual,从而减少了镜像大小约 150MB。linux-image-virtual 内核适用于 kvm、qemu tcg 和 Xen 超visor 等。
添加了新的负载均衡算法 SOURCE_IP_PORT。它仅受 OVN 提供程序驱动程序支持。
添加了对使用 Python Visual Studio Debugger 引擎 (ptvsd) 进行调试的支持。
添加了对创建 RHEL 8 amphora 镜像的支持。
添加了对 VIP 访问控制列表的支持。用户现在可以限制允许的 CIDR 集合的传入流量。
Amphora 内部使用的本地生成证书的有效期现在是可配置的。请参阅
[certificates] cert_validity_time。
批量成员更新资源现在可以通过传递查询参数
additive_only=True以累积方式使用。可以更新现有成员并创建新成员,但不会删除缺失的成员。
现在支持
oslo_middleware http_proxy_to_wsgi,它将在存在代理(例如 HAProxy 负载均衡器)在 Octavia API 前面时正确设置请求 URL。默认情况下已关闭,可以通过在octavia.conf的[oslo_middleware]部分中设置enable_proxy_headers_parsing=True来启用。
允许创建基于卷的 amphora。许多生产部署使用基于卷的实例,因为它们具有更大的灵活性。Octavia 将创建卷并将其附加到 amphora。
有新的设置:* volume_driver:是否使用卷驱动程序(cinder)创建基于卷的 amphorae。* volume_size:Amphora 实例根卷的大小,在使用 Cinder 时 * volume_type:Amphorae 卷根磁盘的卷类型 * volume_create_retry_interval:等待卷在可用状态下创建的时间间隔 * volume_create_timeout:卷创建不成功时的超时时间 * volume_create_max_retries:创建卷的最大重试次数
已知问题¶
Amphorae 无法为 UDP 监听器提供租户流日志。
当负载均衡器具有 UDP 监听器时更新时,监听器服务将重新启动,这会导致流量在短时间内中断。这是由 keepalived 错误(https://github.com/acassen/keepalived/issues/1163)引起的,该错误已在 keepalived 2.0.14 中修复,但此软件包尚未由发行版提供。
升级说明¶
要启用日志卸载,需要更新 amphora 镜像。
所有配置在 OVN 提供程序驱动程序下的池都将自动迁移到 SOURCE_IP_PORT 算法。以前的算法名为 ROUND_ROBIN,但实际上并没有像 ROUND_ROBIN 那样工作。经过调查,发现核心 OVN 实际上在 DPDK/Kernel 中使用 5 元组哈希/RSS 哈希作为负载均衡算法。5 元组哈希具有源 IP、目标 IP、协议、源端口、目标端口。为了反映这一点,名称已更改为 SOURCE_IP_PORT。
要修复活动/待机负载均衡器或单拓扑负载均衡器上 VIP 子网上的成员的问题,需要更新 amphora 镜像。
需要新的 amphora 镜像来解决当负载均衡器具有多个监听器并且 amphora 镜像使用 haproxy 1.8 或更高版本时 amphora 内存问题。
Octavia v1 API(用于与 Neutron-LBaaS 集成)已被删除。如果仍然需要 Neutron-LBaaS 集成,请不要升级到此版本。
默认 TaskFlow 引擎现在设置为 ‘parallel’ 而不是 ‘serial’。parallel 引擎将任务调度到不同的线程上,以便同时运行不相关的任务。这的好处是加速某些 Octavia Amphora 流的执行,例如主动-待机 amphora 负载均衡器的供应。操作员可以将引擎类型恢复为以前的默认 ‘serial’ 类型,方法是在 [task_flow] 部分设置配置选项 engine = serial
弃用说明¶
Octavia v1 API 弃用完成。所有相关代码、测试和文档均已删除。
关键问题¶
修复了一个错误,即活动/待机负载均衡器和 VIP 子网上的单拓扑负载均衡器可能失败。需要更新镜像才能修复此错误。
安全问题¶
正确地要求双向证书认证才能连接到 amphora agent API (CVE-2019-17134)。
控制平面和 amphora-agent 之间的通信现在默认使用最低 TLSv1.2,并且可以配置。 之前的 SSLv2/3 默认设置被广泛认为是不安全的。
Amphora 证书的默认有效期已从两年缩短至 30 天。
错误修复¶
修复了 API 处理对象更新调用中 None (JSON null) 的问题。 API 现在将清除字段中的值,或将字段的值重置为 API 默认值。
修复了健康管理器在尝试获取数据库连接时报告 UnboundLocalError 的问题。
修复了在测试中发现的 allocate_and_associate 中的潜在 DB 死锁。
修复了在具有 IPv6 子网的网络上创建成员的问题。
修复了一个问题,如果无法将基础 (VRRP) 端口附加到 amphora 实例,则回滚不会在 neutron 中清理端口。
修复了 CentOS amphorae 在 Active/Standby 模式下重复的 IPv6 地址问题。
修复了未捕获驱动程序错误的问题。
修复了 VIP 安全组删除失败时触发的错误。
修复了一个问题,即 listener API 会接受必须具有有效值的字段(例如 connection-limit)的 null/None 值。 现在,当对这些字段中的一个字段进行 PUT 调用并将 null 作为值时,API 将将字段值重置为字段默认值。
修复了一个问题,该问题阻止了 Octavia housekeeper 服务清理数据库中的负载均衡器条目。
修复了 RHEl-based amphorae 上 /etc/resolv.conf 被 DNS 服务器填充的问题。
修复了负载均衡器转换中 flavor_id 的提供程序驱动程序工具转换,listener 转换中的 sni_refs 和 L7 策略,以及池转换中的健康监视器。
修复了一个阻止创建备用 amphorae 的问题。
为 UDP 成员添加了 monitor_address 和 monitor_port 属性的支持。 以前,monitor_address 和 monitor_port 被忽略,并且地址和 protocol_port 属性被用作监视地址和端口。
修复了使用 UDP 协议的池和成员的 operating_status。 operating_status 值现在与非 UDP 负载均衡器的值一致。
修复了一个错误,该错误阻止在删除健康监视器资源后将 UDP 服务器恢复为池的成员。
修复了在多子网网络中选择 vip-subnet-id 的问题,方法是检查子网的 IP 可用性,确保在指定 vip-network-id 创建负载均衡器时有足够的 IP 可用。
修复了在基于 CentOS 的 amphorae 上插入 VIP 时出现的错误。
修复了一个问题,即在 QoS 扩展禁用时尝试在 VIP 上设置 QoS 策略会导致负载均衡器进入 ERROR 状态。 如果 QoS 扩展被禁用,API 现在将向用户返回 HTTP 400。
修复了一个问题,即在启用 QoS 扩展时在 VIP 上设置 QoS 策略会导致负载均衡器进入 ERROR 状态。
修复了一个阻止备用 amphorae 轮换的错误。
修复了在使用包含 HAProxy 1.8 或更高版本的 amphora 镜像时具有多个 listener 的负载均衡器的问题。 需要更新的 amphora 镜像才能应用此修复。
配置选项 ‘server_certs_key_passphrase’ 的密码用作 Octavia 中的 Fernet 密钥,因此必须是 32 个、base64(url) 兼容的字符长。 Octavia 现在将验证密码的长度和格式。
修复了一个错误,该错误阻止在同一端口上为不同的协议创建 listener(例如:tcp 端口 53 和 udp 端口 53)。
在 UDP 负载均衡器中添加具有与 VIP IP 协议版本不同的 IP 协议版本的成员导致 amphora 崩溃。 现在,amphora 驱动程序中的一个验证步骤可以防止在 UDP 负载均衡器中混合 IP 协议版本。