4.8.2. 消息迁移


当集群部署中的代理因为部署失败或意图部署而关闭时,消息迁移是如何确保消息传递数据的完整性。也称为 Pod 排空功能,这个过程指的是从已关闭的代理 Pod 中删除和重新分配信息。

注意
  • 消息迁移 仅适用于 基于 AMQ Broker Operator 的部署。基于应用模板的部署 没有 消息迁移功能。
  • 执行消息迁移的扩展控制器只能在单个 OpenShift 项目中运行。控制器无法在单独的项目中的代理之间迁移消息。
  • 要使用消息迁移,您的部署中必须至少有两个代理。默认集群有两个或更多代理的代理。

对于基于 Operator 的代理部署,您可以在部署的主代理资源中将 messageMigration 设置为 true 来启用消息迁移。

消息迁移过程遵循以下步骤:

  1. 当因为部署中的代理 Pod 失败或意图缩减而关闭时,Operator 会自动启动一个缩减控制器来为消息迁移做准备。扩展控制器在与代理集群相同的 OpenShift 项目名称中运行。
  2. 缩减控制器自行注册并侦听与项目中的持久性卷声明(PVC)相关的 Kubernetes 事件。
  3. 要检查已孤立的持久性卷(PV),扩展控制器会查看卷声明中的孤立卷。控制器将卷声明中的 或dinal 与您项目中仍运行的代理 Pod(即代理集群)中的代理 Pod 进行比较。

    如果卷声明中的 ordinal 高于代理集群中运行的任何代理 Pod 的 ordinal,则扩展控制器决定在那个或非插件关闭时代理 Pod,且消息传递数据必须迁移到另一个代理 Pod。

  4. 缩减控制器启动排空器 Pod。drainer Pod 运行代理并执行消息迁移。然后,drainer Pod 会标识一个替代的代理 Pod,可将孤立消息迁移到该 Pod。

    注意

    部署中必须至少有一个代理 Pod 仍然在部署中运行,以便进行消息迁移。

下图显示了扩展控制器(也称为 drain控制器)如何将消息迁移到正在运行的代理 Pod。

AH ocp pod draining 3

当消息成功迁移到操作代理 Pod 后,排空程序 Pod 会关闭,扩展控制器会删除孤立 PV 的 PVC。PV 返回为 "Released" 状态。

注意

如果您将代理部署缩减为 0(零),则不会发生消息迁移,因为没有正在运行的代理 Pod 可以迁移到哪些消息传递数据。但是,如果您将部署缩减为 0,然后备份到小于原始部署的大小,则会为保持关闭的代理启动排空 Pod。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.