Stein 系列发布说明

4.1.4-5

错误修复

  • 修复了一个问题,即设置 SNI 容器在监听器更新 API 调用中没有应用。

  • 修复了监听器更新 API 中 Octavia 验证,SNI 容器可以设置为非 TERMINATED_HTTPS 监听器。

  • 修复了空 UDP 池的错误 operating_status。没有成员的 UDP 池现在为 ONLINE,而不是 OFFLINE

  • 将缺少的 cloud-utils-growpart RPM 添加到基于 Red Hat 的 amphora 镜像中。

  • 将缺少的 cronie RPM 添加到基于 Red Hat 的 amphora 镜像中。

4.1.4

安全问题

  • 如果您使用的是 admin_or_owner-policy.yaml 策略覆盖文件,则应升级您的 API 进程以包含 unscoped token 的修复。

错误修复

  • 修复了一个问题,即添加到启用 TLS 的池中的成员会进入 ERROR 供应状态。

  • 修复了一个问题,即 API 列表调用中的某些列不能用于排序键。

  • 修复了禁用 UDP 监听器的运行状态。禁用 UDP 监听器的运行状态现在为 OFFLINE,而不是 ONLINE,其行为与 HTTP/HTTPS/TCP/... 监听器的行为类似。

  • 修复了一个问题,即监听器 “insert_headers” 参数被接受用于不支持标头插入的协议。

  • 修复了在 housekeeping 服务初始化时,由于首次调用 strptime 时线程安全问题,可能出现的 AttributeError 异常(在使用 python2 时)。

  • 修复了配置 CentOS/Red Hat amphora 镜像以使用静态路由和路由规则的正确网络 ‘ifcfg’ 文件名称的代码。它使用了错误的路由文件名,并且不支持两个文件中的 IPv6。

  • 修复了一个问题,即启用 TLS 的池无法供应。

  • 修复了在使用 admin_or_owner-policy.yaml 策略覆盖文件和 unscoped token 时的问题。

4.1.2

升级说明

  • 升级后,用户将无法在负载均衡器上使用他们看不到或“显示”的网络资源。操作员可以通过将“allow_invisible_resource_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

4.1.1

升级说明

  • 需要新的 amphora 镜像来修复潜在的 certs-ramfs 竞争条件。

安全问题

  • certs-ramfs 和 amphora 代理之间的竞争条件可能导致租户 TLS 内容存储在 amphora 文件系统上,而不是加密的 RAM 文件系统中。

错误修复

  • 修复了一个问题,即具有多个启用 TLS 监听器的负载均衡器,其中一个或多个启用 SNI,可能会从其他 TLS 启用监听器加载证书以供 SNI 使用。

  • 修复了 certs-ramfs 和 amphora 代理服务之间的潜在竞争条件。

  • 修复了筛选提供程序风味功能 API 的能力。

  • 修复了在多子网网络中选择 vip-subnet-id 的问题,方法是检查子网的 IP 可用性,确保在指定 vip-network-id 创建负载均衡器时有足够的 IP 可用。

  • 修复了一个错误,该错误可能在执行控制器工作程序的正常关闭时中断资源创建,并使资源处于 PENDING_CREATE/PENDING_UPDATE/PENDING_DELETE 供应状态。如果 Octavia 流的持续时间大于 ‘graceful_shutdown_timeout’ 配置值,则停止 Octavia 工作程序仍然可能中断资源的创建。

4.1.0

新特性

  • 现在支持 oslo_middleware http_proxy_to_wsgi,它将在负载均衡器(例如 HAProxy)位于 Octavia API 前面时正确设置请求 URL。默认情况下已禁用,可以通过在 octavia.conf[oslo_middleware] 部分设置 enable_proxy_headers_parsing=True 来启用。

已知问题

  • 当负载均衡器具有 UDP 监听器时更新时,监听器服务将重新启动,这会导致流量在短时间内中断。这是由 keepalived 错误(https://github.com/acassen/keepalived/issues/1163)引起的,该错误已在 keepalived 2.0.14 中修复,但此软件包尚未由发行版提供。

升级说明

  • 需要新的 amphora 镜像来解决负载均衡器具有多个监听器且 amphora 镜像使用 haproxy 1.8 或更高版本时 amphora 内存问题。

安全问题

  • 正确地要求双向证书认证才能连接到 amphora agent API (CVE-2019-17134)。

错误修复

  • 修复了 API 处理对象更新调用中 None(JSON null)的处理方式。API 现在将清除字段中的值,或将字段的值重置为 API 默认值。

  • 修复了健康管理器在尝试获取数据库连接时报告 UnboundLocalError 的问题。

  • 修复了在测试中发现的 allocate_and_associate 中的潜在 DB 死锁。

  • 修复了一个问题,如果无法将基础 (VRRP) 端口附加到 amphora 实例,则回滚不会在 neutron 中清理端口。

  • 修复了一个驱动程序错误未被捕获的问题。

  • 修复了一个阻止 Octavia housekeeper 服务在数据库中清理负载均衡器条目的问题。

  • 为 UDP 成员添加了 monitor_address 和 monitor_port 属性的支持。 以前,monitor_address 和 monitor_port 被忽略,并且地址和 protocol_port 属性被用作监视地址和端口。

  • 修复了使用 UDP 协议的池和成员的 operating_status。 operating_status 值现在与非 UDP 负载均衡器的值一致。

  • 修复了一个错误,该错误阻止在删除健康监视器资源后将 UDP 服务器恢复为池的成员。

  • 修复了在使用包含 HAProxy 1.8 或更高版本的 amphora 镜像的负载均衡器具有多个监听器时的问题。需要更新的 amphora 镜像才能应用此修复。

  • 配置选项 ‘server_certs_key_passphrase’ 的密码用作 Octavia 中的 Fernet 密钥,因此必须是 32 个、base64(url) 兼容的字符长。 Octavia 现在将验证密码的长度和格式。

  • 在 UDP 负载均衡器中添加具有与 VIP IP 协议版本不同的 IP 协议版本的成员导致 amphora 崩溃。 现在,amphora 驱动程序中的一个验证步骤可以防止在 UDP 负载均衡器中混合 IP 协议版本。

4.0.1

错误修复

  • 修复了 CentOS amphorae 在 Active/Standby 模式下重复的 IPv6 地址问题。

  • 修复了一个问题,即 listener API 会接受必须具有有效值的字段(例如 connection-limit)的 null/None 值。 现在,当对这些字段中的一个字段进行 PUT 调用并将 null 作为值时,API 将将字段值重置为字段默认值。

  • 修复了一个阻止备用 amphora 轮换的错误。

4.0.0

序言

对于 OpenStack Stein 版本,Octavia 团队很高兴地宣布支持:Octavia 规格,TLS 客户端身份验证,后端重新加密和对象标签。

  • Octavia 规格允许操作员定义负载均衡器的“规格”,例如使用 amphora 驱动程序“主动-待机”或“单实例”,从而配置负载均衡器拓扑。Amphora 驱动程序还支持指定用于负载均衡器 amphora 的 nova 计算规格。

  • TLS 客户端身份验证允许监听器向连接到负载均衡器的用户请求客户端证书。然后可以检查此证书与 CA 证书和可选的证书吊销列表进行匹配。新的 HTTP 标头插入允许将客户端证书信息传递给后端成员,而新的 L7 规则允许您根据客户端证书的内容采取自定义操作。

  • 后端重新加密允许用户配置池以启动到后端成员服务器的 TLS 连接。这使得负载均衡器能够验证和加密从负载均衡器到后端成员服务器的连接。

  • 对象标签允许用户将字符串列表分配给负载均衡器对象,然后这些标签可用于高级 API 列表过滤。

新功能

  • 现在可以在监听器上指定证书颁发机构证书引用,用于 TLS 客户端身份验证。

  • 现在可以为使用 TLS 客户端身份验证的监听器提供证书吊销列表引用。

  • 在使用 TERMINATED_HTTPS 监听器进行 TLS 客户端身份验证时,现在可以为后端成员插入以下标头:‘X-SSL-Client-Verify’、‘X-SSL-Client-Has-Cert’、‘X-SSL-Client-DN’、‘X-SSL-Client-CN’、‘X-SSL-Issuer’、‘X-SSL-Client-SHA1’、‘X-SSL-Client-Not-Before’、‘X-SSL-Client-Not-After’。

  • 现在可以在监听器上启用 TLS 客户端身份验证。

  • Octavia 现在有一个管理 API,用于更新正在运行的 amphora 上的 amphora 代理配置。

  • 现在可以在池上指定 ca_tls_container_ref 和 crl_container_ref,用于使用 TLS 验证后端池成员。

  • 现在可以在池上指定 tls_container_ref,用于池成员的 TLS 客户端身份验证。

  • 现在可以通过在池上启用 tls_enabled 选项来为与成员服务器的连接启用 TLS 后端重新加密。

  • 添加了基于 TLS 客户端身份验证信息定义 L7 规则的功能。新的 L7 规则是:“L7RULE_TYPE_SSL_CONN_HAS_CERT”、“L7RULE_TYPE_VERIFY_RESULT”和“L7RULE_TYPE_DN_FIELD”。

  • Octavia 现在具有规格支持,允许操作员定义用户在创建负载均衡器时可以选择的命名自定义配置。

  • Octavia 的 Stein 版本引入了 octavia-lib python 模块。该库使提供程序驱动程序更容易与 Octavia API 集成,因为它提供了一组共享的编码对象和接口。

  • Amphora API 现在可以返回字段 compute_flavor,它是用于启动 amphora 的计算实例规格的 ID。

  • 现在可以通过对象标签过滤 API 查询。

  • 操作员现在可以使用新的 CLI 工具 octavia-status upgrade check 来检查 Octavia 部署是否可以从 N-1 安全地升级到 N 版本。

  • 添加了新的工具 octavia-status upgrade check。此框架允许添加各种检查,这些检查可以在 Octavia 升级之前运行,以确保可以安全地执行升级。

  • Octavia API 现在支持云审计数据联合 (CADF) 审计。

  • 为 Octavia 资源添加了标签属性。它包括

    • 负载均衡器

    • 监听器

    • 成员

    • L7 规则

    • L7 策略

    • 健康监视器

  • 监听器的默认超时可以在 haproxy_amphora 部分的配置中设置

    • timeout_client_data: 前端客户端不活动超时

    • timeout_member_connect: 后端成员连接超时

    • timeout_member_data: 后端成员不活动超时

    • timeout_tcp_inspect: 等待 TCP 数据包进行内容检查的时间

    所有这些选项的值都应以毫秒为单位。

  • 这将通过并行分配 AAP 端口来加速 lb 创建,对于具有多个 amp 的 LB。作为副作用,AAP 驱动程序将得到简化,从而更容易维护。

  • 添加了一个管理 API,用于访问每个 amphora 的统计信息。

  • 扩展了 Octavia 健康监视器 API,增加了两个新字段 http_versiondomain_name,用于支持 HTTP 健康检查,它会将域名注入 HTTP host 标头。

  • 现在 Octavia L7Policy API 可以接受一个新的选项 redirect_http_code,用于 L7Policy 操作 REDIRECT_URLREDIRECT_PREFIX,然后每个 HTTP 请求到关联的监听器都将返回配置的 HTTP 响应代码。

  • 支持 L7Policy 的 REDIRECT_PREFIX 操作

  • 支持使用 PyDev 进行远程调试。请参阅贡献者文档部分,以获取更多详细信息。

升级说明

  • 当在运行不支持配置更新的 amphora 代理版本的 amphora 上调用 amphora 代理配置更新 API 时,将向控制器日志文件发布一条 ERROR 日志消息,指示 amphora 不支持代理配置更新。在这种情况下,应将 amphora 镜像更新到较新的版本。

  • Octavia 的 Stein 版本添加了驱动程序-代理控制器进程。此进程与 Octavia API 进程一起部署,并使用 unix 域套接字在 octavia-lib 使用的提供程序驱动程序和驱动程序-代理之间进行通信。升级到 Stein 时,操作员应确保 /var/run/octavia 目录可用于驱动程序-代理,并具有驱动程序-代理和 API 进程访问它的适当所有权和权限。操作员可能需要确保驱动程序-代理进程在安装后启动。例如,可能需要创建一个 systemd 服务并启用它。

  • 我们已将 [haproxy_amphora] connection_max_retries 和 build_active_retries 的默认值从 300 更改为 120。这意味着负载均衡器构建将等待十分钟而不是二十五分钟,nova 才能启动虚拟机。我们认为这些是大多数生产部署的更合理默认值,并提供更好的用户体验。如果您在嵌套虚拟化环境中运行 nova,这意味着 nova 在另一个 VM 内部启动 VM,并且您未在底层 hypervisor 中启用嵌套虚拟化,则可能需要将这些值恢复到 300。

  • 要启用在未附加池时 UDP 监听器监视,需要更新 amphora 镜像,并且具有 UDP 监听器的负载均衡器需要故障转移到新的镜像。

  • 操作员现在可以使用新的 CLI 工具 octavia-status upgrade check 来检查 Octavia 部署是否可以从 N-1 安全地升级到 N 版本。

  • 要修复 IPv6 VIP 地址,必须运行“octavia-db-manage upgrade head”迁移脚本。

  • 要修复活动/待机负载均衡器或单拓扑负载均衡器上 VIP 子网上的成员的问题,需要更新 amphora 镜像。

  • 为了解决活动/待机负载均衡器上的 IPv6 VIP 问题,需要构建一个新的 amphora 镜像。

  • 以下配置设置已达到其弃用期限,现在已从配置的 [default] 部分中删除。这些仅在 [api_settings] 部分中可用。

    • [DEFAULT] bind_host

    • [DEFAULT] bind_port

    • [DEFAULT] auth_strategy

    • [DEFAULT] api_handler

弃用说明

  • 以下配置设置已达到其弃用期限,现在已从配置的 [default] 部分中删除。这些仅在 [api_settings] 部分中可用。

    • [DEFAULT] bind_host

    • [DEFAULT] bind_port

    • [DEFAULT] auth_strategy

    • [DEFAULT] api_handler

  • 最后完全删除 user_group 选项,因为它在 Pike 中已被弃用。

  • status_update_threads healthmanager 的配置选项已被弃用,因为它被 health_update_threadsstats_update_threads 替换。

关键问题

  • 修复了一个错误,即活动/待机负载均衡器和 VIP 子网上的单拓扑负载均衡器可能失败。需要更新镜像才能修复此错误。

安全问题

  • 请注意,amphora 提供程序当前仅支持提供给检查吊销的文件。amphora 提供程序将不使用远程吊销列表和/或 OCSP。

  • 作为修复 CVE-2018-16856 的后续措施,Octavia 现在将在其内部工作流程中加密用于与 amphorae 安全通信的证书和密钥。 Octavia 过去会排除为特定任务和流程明确命名的调试级别日志打印,这种方法容易受到代码更改的影响。

  • 添加了一个配置选项“reserved_ips”,允许操作员阻止地址用于负载均衡器成员。 默认设置会阻止 nova 元数据服务地址。

  • 修复了 Amphora 证书的调试级别日志记录,用于诸如“octavia-create-amp-for-lb-subflow-octavia-generate-serverpem”(由负载均衡器故障转移触发)和“octavia-create-amp-for-lb-subflow-octavia-update-cert-expiration”之类的流程。

错误修复

  • 修复了在具有 IPv6 子网的网络上创建成员的问题。

  • 修复了在使用“list”API 时 Octavia v2 API 中的性能回归。

  • 完全扩展的 IPv6 VIP 地址将无法存储,出现“Data too long for column ‘ip_address’ at row 1”错误。此补丁包括一个数据库迁移来修复此列。

  • 修复了创建完全填充的负载均衡器,该负载均衡器没有 REDIRECT_POOL 类型的 L7 策略和 default_pool 字段的问题。

  • 修复了一个问题,即 Octavia 无法访问数据库(所有数据库实例都已关闭)导致所有正在运行的负载均衡器关闭。 健康管理器现在对数据库中断更具弹性。

  • 修复了一个性能问题,即 Housekeeping 服务可能会随着创建和/或标记为 DELETED 的 amphorae 和负载均衡器的增加而显著且逐步地利用 CPU。

  • 修复了处于 ERROR 供应状态时无法故障转移的负载均衡器。

  • 修复了一个导致打开过多的 RabbitMQ 连接的错误。

  • 修复了一个阻止创建备用 amphorae 的问题。

  • 修复了在基于 CentOS 的 amphorae 上插入 VIP 时出现的错误。

  • 修复了一个问题,即在 QoS 扩展禁用时尝试在 VIP 上设置 QoS 策略会导致负载均衡器进入 ERROR 状态。 如果 QoS 扩展被禁用,API 现在将向用户返回 HTTP 400。

  • 修复了一个问题,即在启用 QoS 扩展时在 VIP 上设置 QoS 策略会导致负载均衡器进入 ERROR 状态。

  • 修复了使用 IPv6 VIP 地址配置为活动/待机拓扑的负载均衡器的问题。 此修复需要构建一个新的 amphora 镜像。

  • 删除了非级联删除负载均衡器流程中的不必要的监听器删除,从而加快了负载均衡器的删除速度。

  • Octavia 将不再自动撤销对不再需要访问它们的负载均衡资源的访问权限。这可能会在将来添加。

  • 添加了新的参数来指定更新 amphora 健康状况和统计信息的线程数。

  • 这将自动删除 Octavia 检测到的 nova 僵尸 amphora。 僵尸 amphora 是报告健康信息的 amphorae,但在 Octavia 的数据库中显示为 DELETED 的 amphorae。

其他说明

  • 我们已将 [haproxy_amphora] connection_max_retries 和 build_active_retries 的默认值从 300 更改为 120。这意味着负载均衡器构建将等待十分钟而不是二十五分钟,nova 才能启动虚拟机。我们认为这些是大多数生产部署的更合理默认值,并提供更好的用户体验。如果您在嵌套虚拟化环境中运行 nova,这意味着 nova 在另一个 VM 内部启动 VM,并且您未在底层 hypervisor 中启用嵌套虚拟化,则可能需要将这些值恢复到 300。

  • 在证书部分添加了一个名为 server_certs_key_passphrase 的新选项。 默认值从名为 TLS_PASS_AMPS_DEFAULT 的环境变量复制。 如果未设置 TLS_PASS_AMPS_DEFAULT,并且操作员未直接填写任何其他值,则将使用“insecure-key-do-not-use-this-key”。

  • 处理僵尸 amphora 已经很昂贵,这又增加了一个步骤,可能会增加 Octavia 健康管理器的负载,尤其是在 Nova API 速度较慢期间。