【问题标题】:Flink Statefun HA kubernetes clusterFlink Statefun HA Kubernetes 集群
【发布时间】:2020-05-21 12:10:41
【问题描述】:

我正在尝试在 kubernetes 上部署高可用的 flink 集群。在下面的示例中,工作节点被复制,但我们只有一个主 pod。

https://github.com/apache/flink-statefun

据我所知,有 2 种方法可以让作业经理 HA。

  1. https://ci.apache.org/projects/flink/flink-docs-stable/ops/jobmanager_high_availability.html
  2. https://medium.com/hepsiburadatech/high-available-flink-cluster-on-kubernetes-setup-73b2baf9200e

在第一个示例中,我们部署了另一个作业管理器以在发生故障时在它们之间切换 在第二个示例中,kubernetes 重新部署作业管理器 pod 以防发生故障

所以我有几个问题

  • 对于这两个示例,当活动作业管理器发生故障时,正在运行的作业会发生什么情况?
  • 第一个场景可以应用在 Kubernetes 上吗?
  • 对于第二种情况,在作业管理器失败的情况下,flink UI 在 pod 恢复之前将不可用,但在第二种第一种情况下,它会可用,对吗?

  • 这两种方案的优缺点是什么?

【问题讨论】:

    标签: kubernetes apache-flink high-availability flink-statefun


    【解决方案1】:

    有一种方法可以使作业管理器 HA,您的两个链接都使用 JM HA,使用 zookeeper 集群来创建 JM 的活动/备用架构。

    1. 当 JobManager 发生故障时,如 apache flink 文档(第一个链接)中描述的“故障转移”,备用 JM 变为活动状态。
    2. 当然,kubernetes 只是整个 Flink 集群的部署,你仍然可以使用 zk 的 HA 集群模式。
    3. 不,两者都会进行“故障转移”,备用 JM 将变为活动状态。

    你不明白kubernetes只是flink的部署集群,就像你可以部署在物理/虚拟服务器上,而不是你可以部署在kubernetes上,但是像High Aviability这样的东西会保持不变。

    编辑: 你可以在 JobManager 的 kubernetes 中制作 2 个或更多的 pod,然后它会等于第一个解决方案。

    【讨论】:

    • 在第二个示例中,JM 的复制因子为 1。他们是否依赖 kubernetes 重新部署失败的 pod,因为他们没有standBy JM。假设我们将 JM 的复制值更改为 2,我们如何相应地配置 zookeeper。
    • 是的,他们依靠失败的 pod 立即重置并从 zookeeper 读取状态。如果将 JM 的复制因子更改为 2,那么它的行为类似于第一个链接,如果活动 JM 的 pod 将崩溃,则第二个 pod 将变为活动状态(但这里您还需要重新启动失败的荚)。我看不出保留 1 个 JM pod 的充分理由(除了节省一些资源),但我想它会起作用。(当然取决于 pod 重启的速度)。
    • 这是我最初的计划,但是当我们重新部署失败的 Pod 时,Pod 的 IP 将被更改。动态配置是问题所在。
    • 我没有看到 Pod IP 会改变的任何问题,为什么会出现问题?您的任务经理与暴露服务的工作经理交谈。
    • 任何关于如何动态和单独地获取服务后面的复制 pod 的 IP 地址的来源都值得赞赏。
    猜你喜欢
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 2018-12-25
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多