簡體   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