繁体   English   中英

Presto Coordinator 不支持高可用性

[英]Presto Coordinator does not have support for High Availabiltiy

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

HA 可能意味着多种含义。

正在进行的查询没有 HA,Presto 项目没有为协调器提供 HA,因为这本质上需要绑定到部署和监控系统。

您的选择包括:

  • 使用 Starburst 进行部署,它提供协调器的快速故障转移已经一年多了
  • AWS 的 EMR 也可能为协调器提供故障转移(需要验证)
  • 自己建造

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

Presto 协调器 HA 设置

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

活动/活动

要求

  • ELB 的 N+1 个主机名。

    要么

  • ELB 上的 N+1 个端口。

N 是 presto 集群的数量。

在此处输入图像描述

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

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

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

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

由于您询问了 Prestodb,因此正在研究单个协调器的问题,以便为 prestodb 设计多个协调器。

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

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

如果你在 Kube.netes 中运行容器,K8s 可以检测到一个宕机的 pod 并自动重启协调器,从而在一定程度上为你提供 HA。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM