為什麼 Amazon OpenSearch Service 網域升級需要很長時間?

上次更新日期:2021 年 7 月 30 日

我正在嘗試升級我的 Amazon OpenSearch Service (Amazon Elasticsearch Service 的後繼者) 叢集,但升級所費時間太長。為何會發生這種情況與如何在 OpenSearch Service 中更好地監控我的叢集升級狀態?

簡短描述

當您在 OpenSearch Service 中進行組態變更時,會使用藍/綠部署程序。在藍/綠部署中,會執行兩個生產環境 (一個是即時的,而另一個則是閒置)。然後會根據軟體更新切換這兩個生產環境。針對 OpenSearch Service,系統會在網域更新期間建立新環境,並在更新完成後將使用者路由至新的生產環境。這種行為可將停機時間降到最低,並在部署不成功時維護原始環境。

為了更好地監控 OpenSearch Service 中的叢集升級狀態,請監控每個階段的藍/綠部署程序:

  • 建立新節點
  • 資料遷移
  • 移除舊節點

解決方案

擷取所有叢集快照和節點 ID

在遷移之前,OpenSearch Service 會在您的叢集通過資格測試時自動擷取快照。在快照期間,進度狀態可能會顯示為「空值」或 0%。擷取快照後,會更新百分比值。完成快照所需的時間可能會因儲存空間而有所不同。由於快照是以增量方式拍攝,若您的資料與先前的自動快照有重大變更,則您可能需要更長時間才能完成快照。

下列 _snapshot 請求會擷取所有目前執行中的快照,其中包含詳細狀態資訊:

GET /_snapshot/_status

如需有關快照 API 的詳細資訊,請參閱 Elasticsearch 網站上的監控快照和恢復進度

若要擷取目前在叢集中執行的所有快照,請使用目前參數:

GET /_snapshot/<snapshot-repository>/_current

若要獲取所有資料節點的 ID,請使用 cat 節點 API:

GET _cat/nodes

您可以使用節點 ID 來識別哪些節點是舊的,以及哪些節點是新的。新節點上的碎片數量越來越多,表示遷移順利。最終,所有的碎片將移動到新節點,而舊節點會變成空的。

監控藍/綠部署程序

當您的叢集進入藍/綠部署程序時,會出現新節點 (在綠色環境中)。之後,碎片會從舊節點 (在藍色環境中) 遷移。資料遷移或碎片重新分配完成後,您的舊叢集會被拆除。

您可以在三個階段監控藍/綠部署程序:新節點、資料遷移和移除舊節點。

階段 1:建立新節點

您可以在 Amazon CloudWatch 中監控 節點叢集指標,以取得節點計數。或者,您可以使用 cat 節點 API 來列出叢集中的所有節點:

GET /_cat/nodes?v&pretty

因為您只更新叢集版本,只要節點計數 (舊節點和新節點) 增加,程序就完成。之後,您可能會看到您的 OpenSearch Service 網域回到「作用中」狀態 (處於「處理中」狀態之後)。對於具有專用節點的叢集,您可以看到節點計數會增加到舊節點和新節點的總和。較舊組態的領導節點將會關閉,而節點計數會減少領導節點的數目。例如,具有三個專用領導者節點的 OpenSearch Service 叢集將會減少三個節點。

階段 2:資料遷移

一旦第一階段完成,碎片遷移就會開始。在資料遷移期間,較舊節點的碎片計數會減少,而較新節點的碎片計數會增加。您可以使用 cat 分配 API 查看分配給每個節點的碎片數量:

GET /_cat/allocation?v&pretty

如需詳細資訊,請參閱 Elasticsearch 網站上的 cat 分配

階段 3:移除舊節點

所有的碎片被遷移到新節點後,舊節點從您的叢集中移除。然後,節點計數會返回您設定的原始節點計數。在這個階段,藍/綠部署和更新程序已完成。


此文章是否有幫助?


您是否需要帳單或技術支援?