【问题标题】:Presto Coordinator does not have support for High AvailabiltiyPresto Coordinator 不支持高可用性
【发布时间】:2023-03-06 01:45:01
【问题描述】:

Presto 协调器没有对高可用性的内置支持。它是一个SPOF,单点故障。 有没有办法克服这个问题?

【问题讨论】:

    标签: nginx presto high-availability trino coordinator


    【解决方案1】:

    HA 有多种含义。

    没有用于持续查询的 HA,Presto 项目没有为协调器提供 HA,因为这本质上需要与部署和监控系统相关联。

    您的选择包括:

    • 使用 Starburst 进行部署,提供协调器一年多的快速故障转移
    • AWS 的 EMR 还可以为协调器提供故障转移(需要验证)
    • 自己构建

    目前这些解决方案是有限的,它们无法帮助正在进行或当前排队的查询失败,因此您仍然需要在客户端进行某种重试。您可以关注 https://github.com/trinodb/trino/issues/455 以了解 Presto 的未来改进,从而提高弹性。

    【讨论】:

      【解决方案2】:

      Presto 协调器 HA 设置

      (如果协调器出现故障,正在进行的查询将受到影响)

      主动/主动

      要求

      • ELB 的 N+1 个主机名。

        或者

      • ELB 上有 N+1 个端口。

      N 是 presto 集群的数量。

      客户端配置有不用作服务器名的 elb 主机名之一。 在当前设置中,presto.client.abc.com.

      Presto 查询协议 https://github.com/prestodb/presto/wiki/HTTP-Protocol

      这是一个基于游标的实现。查询产生游标,客户端迭代游标。每个游标迭代响应都包含一个下一个 uri,用于从中获取下一组结果。 查询的所有下一个 uri 链接必须路由到处理原始查询的协调器。

      使用 nginx 服务器名称将查询绑定到协调器。 也可以设置多个端口(ELB 具有多个端口而不是多个主机名)。

      【讨论】:

        【解决方案3】:

        自从您询问 Prestodb 以来,正在调查单个协调器的问题,以便为 prestodb 提供多个协调器的设计。

        考虑到当前的协调器设计,这是一个很难解决的问题。 https://github.com/prestodb/presto/issues/3918

        正如您所提到的,在两个协调器上使用 HA 代理是目前实现某种协调器 HA 的最佳方式。

        如果您在 Kubernetes 中运行容器,K8s 可以检测到一个 down pod 并自动重启 coordinator,从而在一定程度上为您提供 HA。

        虽然 AWS EMR 提供多主环境,但由于 Presto 不支持多个协调器,因此目前不支持。 (不在可以使用此功能的服务列表中)

        【讨论】:

          猜你喜欢
          • 2015-05-23
          • 1970-01-01
          • 2014-06-25
          • 2018-01-22
          • 2020-04-15
          • 1970-01-01
          • 2016-05-07
          • 2021-12-16
          • 2018-12-20
          相关资源
          最近更新 更多