2024.1 系列发布说明

2024.1-eom

错误修复

  • 修复了一个错误,在使用队列管理器时,在 podman 容器内调用某些 OpenStack 工具(例如 nova-manage)会导致失败。 LP#2091703

14.7.1

错误修复

  • 当无法重新声明队列时,强制删除队列。有关详细信息,请参阅 bug 2068630

14.7.0

新特性

  • 添加三个新选项(use_queue_managerhostnameprocessname)以将 oslo.messaging 从随机队列名称(用于 reply_q 和 fanouts)切换到一致的命名。默认值为 False,因此如果服务配置文件中未设置任何内容,oslo.messaging 仍将使用随机队列名称。当将 use_queue_manager 切换为 True 时,队列名称中的 uuid4 随机字符串将被主机名、进程名和计数器的组合替换。计数器将保存在共享内存中 (/dev/shm/x_y_qmanager)。这样,当使用 oslo.messaging 的服务重新启动(例如 neutron)时,它将使用与先前运行相同的名称重新创建队列,因此不会创建新队列,也不需要 rabbitmq 删除先前的队列。这对于操作员调试哪个队列属于哪个服务器/进程非常有用。强烈建议在对临时队列(选项名为 rabbit_transient_quorum_queue)使用 quorum 队列时启用此功能,以避免在一段时间后消耗所有 erlang atom。

  • 添加一个选项以启用临时队列使用 quorum。

    OpenStack 中的临时队列并非真正“临时”,它们存在于整个进程生命周期中(例如,直到您重新启动服务,如 nova-compute)。这里“临时”意味着它们属于特定进程,与可由更多进程使用的常规队列相比。通常,临时队列是“fanout”和“reply”队列。

    默认情况下,如果没有任何 rabbitmq 策略调整,它们既不可持久化,也不具备高可用性。

    通过为临时队列启用 quorum,oslo.messaging 将在 rabbitmq 上声明 quorum 队列而不是经典队列。结果是,这些队列将自动变为 HA 和持久化。请注意,这可能会对您的集群产生影响,因为 rabbit 需要更多的 cpu、ram 和网络带宽来管理队列。这已经在相当大的规模(2k 超虚拟机)上使用 5 个节点的集群进行了测试。

    另请注意,当前的 rabbitmq 实现依赖于固定数量的“erlang atom”(默认情况下为 5M),并且每次使用不同名称创建 quorum 队列时都会消耗一个 atom。如果您的部署执行了大量的队列删除/创建操作,您可能会更快地消耗完所有 atom。

    在为临时队列启用 quorum 时,您可能还需要相应地更新您的 rabbitmq 策略(例如,确保它们应用于 quorum)。

    此选项现在默认禁用,但将来可能会成为默认选项。

  • 现在,在等待回复时发生超时时,将记录 reply_q 的名称。

  • 添加一个选项以使用 stream 队列代替 fanouts 作为 rabbitmq 驱动程序。