4.9.2. 消息迁移


当集群部署中的代理因为部署失败或有意缩减而关闭时,消息迁移可确保消息传递数据的完整性。这个过程也称为 Pod 排空,指的是从已关闭的代理 Pod 中移除和重新发布信息。

注意
  • 用于执行消息迁移的 scaledown 控制器只能在单个 OpenShift 项目中运行。控制器无法在单独的项目中的代理之间迁移消息。
  • 要使用消息迁移,在部署中必须至少有两个代理。默认情况下,带有两个或多个代理的代理会被集群。

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

消息迁移过程按照以下步骤执行:

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

    如果卷声明中的序数大于仍在代理集群中运行的任何代理 Pod 的ordinal,缩减控制器会决定该序上的代理 Pod 已关闭,且该消息必须迁移到另一个代理 Pod。

  4. scaledown 控制器启动一个排空程序 Pod。drainer Pod 运行代理并执行消息迁移。然后,drainer Pod 会识别一个可迁移孤立消息的替代代理 Pod。

    注意

    您的部署中必须至少有一个代理 Pod 运行,才能进行消息迁移。

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

Ah ocp pod draining 3

成功将消息迁移到操作代理 Pod 后,drainer Pod 会关闭,缩减控制器会删除孤立 PV 的 PVC。PV 返回到"Released"状态。

注意

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

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.