[英]Presto Coordinator does not have support for High Availabiltiy
Presto 協調器沒有對高可用性的內置支持。它是SPOF ,單點故障。 有沒有辦法克服這個問題?
HA 可能意味着多種含義。
正在進行的查詢沒有 HA,Presto 項目沒有為協調器提供 HA,因為這本質上需要綁定到部署和監控系統。
您的選擇包括:
目前這些解決方案是有限的,它們無法幫助正在進行的或當前排隊的查詢失敗,因此您仍然需要在客戶端進行某種重試。 您可以關注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.