升级指南¶
本文档概述了运营商在从 OpenStack 早期版本升级 heat 时需要参考的步骤和注意事项。
注意
本文档仅在连续版本之间升级的情况下进行了测试。
计划升级¶
阅读并确保您理解下一个版本的 发行说明。
备份您的数据库。
升级仅支持一次一个系列,或在系列内部进行。
冷升级¶
Heat 已经支持“冷升级”,即在升级期间 heat 服务必须关闭。对于耗时的升级,服务不可用较长时间可能无法接受。这种类型的升级非常简单,请按照以下步骤操作
停止所有 heat-api 和 heat-engine 服务。
卸载旧代码。
安装新代码。
更新配置文件。
进行数据库同步(最耗时的步骤)
启动所有 heat-api 和 heat-engine 服务。
滚动升级¶
注意
自 Pike 版本以来,已支持滚动升级,这意味着运营商可以以最少的停机时间从 Ocata 版本滚动升级 Heat 服务到 Pike 版本。
滚动升级将为云的用户和运营商提供更好的体验。滚动升级允许一次升级单个 heat-api 和 heat-engine 服务,而其余服务仍然可用。这种升级将具有最少的停机时间。请查看 关于滚动升级的规范。
先决条件¶
多个 Heat 节点。
负载均衡器或其他类型的重定向设备被用于运行 heat-api 服务节点的正面,以便可以使节点退出轮换。该节点继续运行 Heat 服务(heat-api 或 heat-engine),但不再将请求路由到它。
步骤¶
以下步骤是使用最少停机时间升级 Heat 的过程
在虚拟环境或单独的控制平面节点中安装 Heat 下一版本的代码,包括所有 python 依赖项。
使用新安装的 heat 代码,运行以下命令将数据库同步到最新版本。这些模式更改操作应该对性能没有影响,也不应该导致任何操作失败。
heat-manage db_sync此时,数据库中可能存在新的列和表。这些 DB 模式更改以一种允许 N 和 N+1 版本都对同一模式执行操作的方式完成。
为新版本创建一个新的 rabbitmq vhost,并将 heat.conf 文件中的 transport_url 配置更改为
transport_url = rabbit://<user>:<password>@<host>:5672/<new_vhost>对于所有升级服务。
优雅地停止 heat-engine,Heat 已经支持优雅关闭功能(请参阅 关于滚动升级的规范)。然后使用新代码(和相应的配置)启动新的 heat-engine。
注意
请记住执行步骤 4,这将确保现有的引擎不会与新引擎通信。
然后升级 heat-api 服务并使用新的 rabbitmq vhost 启动它。
注意
执行此步骤的第二种方法是首先切换 heat-api 服务以使用新的 vhost(但请记住不要关闭 heat-api)并对其进行升级。
可以按照上述过程升级所有 heat-api 和 heat-engine 服务,直到全部升级完成。
注意
确保所有 heat-api 服务都已升级,然后再开始升级最后一个 heat-engine 服务。
警告
使用收敛架构,每当资源完成时,引擎将向另一个(或相同的)引擎发送 RPC 消息,以开始处理下一个(或多个)要处理的资源。如果最后一个引擎将要优雅关闭,它将完成正在处理的内容,这可能会向队列发布更多消息。这意味着优雅关闭不会等待队列排空。关闭会留下一些未处理的消息,任何 IN_PROGRESS 堆栈都会卡住而没有进一步的进展。运营商在关闭最后一个引擎时必须小心,确保在执行此操作之前队列中没有未处理的消息。运营商可以使用 RabbitMQ 的管理插件直接检查队列。
完成所有服务的升级后,仔细检查数据库和服务