為什麼我的 OpenSearch Service 網域升級需要這麼長時間?

2 分的閱讀內容
0

我正在嘗試升級 Amazon OpenSearch Service 網域,但升級需要很長時間。

簡短說明

當您升級 OpenSearch Service 網域版本時,會進行組態變更以啟動藍/綠部署流程。在藍/綠部署中,會執行兩個生產環境。一個環境就是住的,另一個環境就是閒置。然後會根據軟體更新情況,在兩個生產環境之間切換。在 OpenSearch Service 中,會在網域更新期間建立新環境,並在更新完成後將用戶路由至新的生產環境。此行為可最大限度地減少停機時間,並在部署失敗時維護原始環境。

OpenSearch Service 升級流程會在升級前檢查是否有任何問題,並在升級失敗時將叢集快照還原成叢集。

升級 OpenSearch Service 時可能會發生下列問題:

  • 升級前檢查失敗
  • 升級流程需要太長時間才能完成
  • 升級成功但出現問題

如需詳細資訊,請參閱升級 Amazon OpenSearch Service 網域

解決方法

升級前檢查

升級流程是不可逆轉的。您無法暫停或取消。在升級期間,您無法對網域進行組態變更。在開始升級之前,最好仔細檢查資格。您的網域可能不符合升級資格,或無法升級。

若要檢查最常見的升級問題,請參閱升級問題的疑難排解

檢查快照狀態

在移轉之前,OpenSearch Service 會在叢集通過資格測試時,自動擷取叢集的快照。在快照期間,進度狀態可能會顯示零值或 0%。OpenSearch Service 擷取快照後,便會更新百分比值。完成快照所需的時間可能會因儲存空間不同而異。OpenSearch Service 會以增量方式擷取快照。如果先前的自動化快照中的資料有重大變更,則快照需要更長的時間才能完成。

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

GET /_snapshot/_status

如需快照 API 的詳細資訊,請參閱 Elasticsearch 網站上的快照監視

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

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

GET /_snapshot/<snapshot-repository>/_current

要獲取所有資料節點的 ID,請運行 cat 節點 API:

GET _cat/nodes

您可以使用節點 ID 來識別舊節點或新節點。新節點上的碎片數量越來越多,表示移轉順暢。最終,所有的碎片移動到新節點,舊節點變為空。

監控藍/綠部署流程

當您的叢集進入藍/綠部署流程時,會顯示綠色環境中的新節點。然後,碎片從藍色環境中的舊節點遷移。資料移轉或碎片重新分配完成後,舊節點就會終止。

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

第一階段: 建立新節點

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

GET /_cat/nodes?v&pretty

在藍/綠部署流程的這個階段中,您可以在節點計數增加時,在 API 輸出時檢視新節點。

第二階段: 資料遷移

第一個階段完成後,立即開始碎片遷移。在資料移轉期間,較舊節點的碎片計數會減少,而較新節點的碎片計數則會增加。您可以使用 cat/分配 API (來自 OpenSearch 網站) 來獲取分配給每個節點的碎片數量:

GET /_cat/allocation

若要獲知碎片狀態是[已開始]、[重新定位] 或 [未指派],請執行下列 API:

GET _cat/shards?h=index,shard,prirep,state,relocating.reason

若要 (從 Elasticsearch 網站) 中檢查叢集中碎片的復原狀態,請執行下列 API:

GET _cat/recovery?active_only=true

在此階段中,由於叢集過載、不平衡的碎片或後端問題,資料移轉可能需要額外的時間才能完成。

叢集過載

請確定在叢集流量不高時升級版本。在開始升級之前,請檢查 CPUUtilizationJVMMemoryPressure 叢集指標,以確保這些指標數值為最佳。

如需詳細資訊,請參閱如何疑難排解 Amazon OpenSearch Service 叢集上的高 CPU 利用率?

不平衡碎片

根據預設,Amazon OpenSearch Service 的碎片策略為 5:1,其中每個索引會分為五個主要碎片。設定您的分片策略大小,以便 10—30 GiB 之間的每個碎片能進行搜尋工作負載,或 30—50 GiB 之間的碎片能進行日志工作負載。

OpenSearch 和 Elasticsearch 7.x 及更新版本中每個節點的碎片上限為 1,000。最佳做法是每 GiB 的 Java 堆積不超過 25 個碎片。

如需更多詳細資訊,請參閱如何重新平衡 Amazon OpenSearch Service 叢集中不均勻的碎片分佈?

後端問題

在此階段,由於後端問題,碎片遷移可能會卡住。如果沒有遷移工作無進展,且此問題無法自我解決,請聯絡 AWS Support

第三階段: 移除舊節點

將所有碎片移轉至新節點之後,會從叢集中移除較舊的節點。然後,節點計數會返回至您已經設定的原始節點計數處。在此階段,藍/綠部署和更新流程已完成。

升級成功但出現問題

叢集封鎖傳入的寫入要求時,就會出現「升級成功但有問題」的訊息。檢查 OpenSearch Service ClusterIndexWritesBlocked 指標。值為 1 時表示叢集正在封鎖寫入要求。若要解決此問題,請新增更多磁碟空間或按一定比例調節叢集。

如需詳細資訊,請參閱 Amazon OpenSearch Service 操作最佳實務

AWS 官方
AWS 官方已更新 10 個月前