升級 Amazon OpenSearch 服務域 - Amazon OpenSearch 服務

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

升級 Amazon OpenSearch 服務域

注意

OpenSearch 和彈性搜尋版本升級與服務軟體更新不同。如需更新 Service 網域之服務軟體的 OpenSearch 資訊,請參閱Amazon 服務中的服 OpenSearch 務軟件更新

Amazon OpenSearch 服務為執行 OpenSearch 1.0 或更新版本的網域或彈性搜尋 5.1 或更新版本的網域提供就地升級。如果您使用 Amazon Data Firehose 或 Amazon CloudWatch 日誌等服務將資料串流至 OpenSearch 服務,請 OpenSearch 在遷移之前檢查這些服務是否支援較新版本的。

支援的升級路徑

目前, OpenSearch 服務支援下列升級路徑:

原始版本 目標版本
OpenSearch 一點三或二. x

OpenSearch 2. x

2.3 版具有以下突破性變更:

  • type參數已從 2.0 版中的所有 OpenSearch API 端點中刪除。如需詳細資訊,請參閱 Breaking changes (突破性變更)。

  • 如果您的網域包含任何最初在 Elasticsearch 6.8 中建立的索引 (熱索引或冷),則這些索引與 OpenSearch 2.3 不相容。 UltraWarm

    升級至 2.3 版之前,您必須對不相容的索引重新編製索引。對於不相容 UltraWarm 或冷索引,請將它們移轉至熱儲存區,重新建立資料索引,然後將其移轉回暖或冷儲存庫。或者,您也可以在不再需要時刪除索引。

    如果您意外將網域升級至 2.3 版,而未先執行這些步驟,則無法從目前的儲存層遷移出不相容的索引。您的唯一選項是刪除它們。

OpenSearch 1. x OpenSearch 1. x
Elasticsearch 7.x

彈性搜索 7. x 或 OpenSearch 1. x

重要

OpenSearch 1. x 引入了許多突破性變化。如需詳細資訊,請參閱 Amazon OpenSearch Service 重新命名:變更摘要

Elasticsearch 6.8

彈性搜索 7. x 或 OpenSearch 1. x

重要

彈性搜索 7.0 和 OpenSearch 1.0 包括許多突破性更改。在啟動就地升級之前,建議您先擷取 6 的手動快照x 域,在測試 7 上恢復它。 x 或 OpenSearch 1. x 網域,並使用該測試網域來識別潛在的升級問題。如需中斷 OpenSearch 1.0 中的變更,請參閱Amazon OpenSearch Service 重新命名:變更摘要

如同 Elasticsearch 6.x,索引只能包含一個映射類型,但該類型現在必須名為 _doc。因此,特定 API 不再要求在請求內文中有映射類型 (例如 _bulk API)。

對於新索引,自託管彈性搜索 7. x 和 OpenSearch 1. x 的預設碎片計數為 1。 OpenSearch 彈性搜索上的服務域 7. x 及更新版本保留先前的預設值 5。

Elasticsearch 6.x

Elasticsearch 6.x

Elasticsearch 5.6

Elasticsearch 6.x

重要

在 6.x 版建立的索引不再支援多個映射類型。在 5.x 版中建立的索引,在恢復為 6.x 叢集時仍支援多個​映射類型。請檢查您的用戶端程式碼是否每個索引只建立單一映射類型。

最大限度地減少從彈性搜索 5.6 升級到 6 期間的停機時間。 x, OpenSearch Service 會將索引重新編製索引.kibana-6、刪除.kibana、建立名為的別名.kibana,並將新索引對應至新的別名。.kibana

Elasticsearch 5.x Elasticsearch 5.x

升級程序包含三個步驟:

  1. 升級前檢查 — OpenSearch 服務會檢查是否有可能阻止升級的問題,除非這些檢查成功,否則不會繼續進行下一個步驟。

  2. 快照 — OpenSearch 服務會擷取 OpenSearch 或 Elasticsearch 叢集的快照,除非快照成功,否則不會繼續執行下一個步驟。如果升級失敗, OpenSearch Service 會使用此快照將叢集還原至其原始狀態。如需更多資訊,請參閱 升級後無法降級

  3. 升級 — OpenSearch 服務開始升級,可能需要 15 分鐘到數小時才能完成。 OpenSearch 在部分或全部升級期間,儀表板可能無法使用。

開始升級 (主控台)

升級程序無法復原,且無法暫停或取消。升級時,您無法對網域做出組態變更。開始升級前,重複確認您是否要繼續。您可以使用這些相同的步驟,來執行預先升級的檢查,而不用實際開始升級。

如果叢集具有專用的主節點,則 OpenSearch 升級完成而不會停機。否則叢集在選擇主節點時,可能會在升級後數秒沒有回應。

若要將網域升級至較新版本的 OpenSearch 或彈性搜尋
  1. 建立您網域的手動快照。此快照可做為備份,如果您想要返回使用舊 OpenSearch 版,您可以在新網域上還原該備份。

  2. 前往 https://aws.amazon.com 並選擇 Sign In to the Console (登入主控台)

  3. 分析下,選擇 Amazon OpenSearch 服務

  4. 在導覽窗格中,於 Domains (網域) 下,選擇您想要升級的網域。

  5. 選擇 Actions (動作) 和 Upgrade (升級)。

  6. 選取要升級到的版本。如果您要升級至某個 OpenSearch 版本,則會出現「啟用相容模式」選項。如果啟用此設定,請將其版本 OpenSearch 報告為 7.10,以允許 Elasticsearch OSS 用戶端和外掛程式 (例如 Logstash) 繼續使用 Amazon 服務。 OpenSearch 您可以稍後停用此設定

  7. 選擇 Upgrade (升級)

  8. 請檢查網域儀表板上的 Status (狀態) 來監控升級狀態。

開始升級 (CLI)

您可以使用下列作業來識別網域的正確版本 OpenSearch 或 Elasticsearch、啟動就地升級、執行升級前檢查,以及檢視進度:

  • get-compatible-versions (GetCompatibleVersions)

  • upgrade-domain (UpgradeDomain)

  • get-upgrade-status (GetUpgradeStatus)

  • get-upgrade-history (GetUpgradeHistory)

如需詳細資訊,請參閱 AWS CLI 命令參考Amazon OpenSearch 服務 API 參考

開始升級 (SDK)

此範例使用中的OpenSearchService低階 Python 用戶端來檢查網域是否符合升級至特定版本的資格、對其進行升級,以及持續檢查升級狀態。 AWS SDK for Python (Boto)

import boto3 from botocore.config import Config import time # Build the client using the default credential configuration. # You can use the CLI and run 'aws configure' to set access key, secret # key, and default Region. DOMAIN_NAME = '' # The name of the domain to upgrade TARGET_VERSION = '' # The version you want to upgrade the domain to. For example, OpenSearch_1.1 my_config = Config( # Optionally lets you specify a Region other than your default. region_name='us-east-1' ) client = boto3.client('opensearch', config=my_config) def check_versions(): """Determine whether domain is eligible for upgrade""" response = client.get_compatible_versions( DomainName=DOMAIN_NAME ) compatible_versions = response['CompatibleVersions'] for i in range(len(compatible_versions)): if TARGET_VERSION in compatible_versions[i]["TargetVersions"]: print('Domain is eligible for upgrade to ' + TARGET_VERSION) upgrade_domain() print(response) else: print('Domain not eligible for upgrade to ' + TARGET_VERSION) def upgrade_domain(): """Upgrades the domain""" response = client.upgrade_domain( DomainName=DOMAIN_NAME, TargetVersion=TARGET_VERSION ) print('Upgrading domain to ' + TARGET_VERSION + '...' + response) time.sleep(5) wait_for_upgrade() def wait_for_upgrade(): """Get the status of the upgrade""" response = client.get_upgrade_status( DomainName=DOMAIN_NAME ) if (response['UpgradeStep']) == 'UPGRADE' and (response['StepStatus']) == 'SUCCEEDED': print('Domain successfully upgraded to ' + TARGET_VERSION) elif (response['StepStatus']) == 'FAILED': print('Upgrade failed. Please try again.') elif (response['StepStatus']) == 'SUCCEEDED_WITH_ISSUES': print('Upgrade succeeded with issues') elif (response['StepStatus']) == 'IN_PROGRESS': time.sleep(30) wait_for_upgrade() def main(): check_versions() if __name__ == "__main__": main()

對驗證失敗進行故障排除

當您啟動 OpenSearch 或 Elasticsearch 版本升級時, OpenSearch 服務會先執行一系列驗證檢查,以確保您的網域符合升級資格。如果其中任何一項檢查失敗,您會收到通知,其中包含您必須在更新網域之前解決的特定問題。如需潛在問題的清單以及解決問題的步驟,請參閱 對驗證錯誤進行疑難排解

升級疑難排解

就地 ​ 升級需要運作狀態良好的網域。您的網域可能不符合升級的資格,或因各種原因而無法升級。下表顯示最常見的問題。

問題 描述
不支持可選插件

當您使用可選外掛程式升級網域時, OpenSearch Service 也會自動升級外掛程式。因此,您網域的目標版本也必須支援這些選用的外掛程式。如果網域安裝的選用外掛程式不適用於目標版本,則升級要求會失敗。

每個節點有太多碎片 OpenSearch,以及 7. x 個版本的彈性搜索,每個節點的碎片不超過 1,000 個的默認設置。如果目前叢集中的節點超過此設定, OpenSearch Service 將不允許您升級。如需疑難排解選項,請參閱超出最大碎片限制
處理中的網域 組態變更中的網域 在操作完成後檢查升級資格。
紅色叢集狀態 叢集中一或多個索引是紅色的。如需疑難排解步驟,請參閱紅色叢集狀態
高錯誤率 在嘗試處理請求時,叢集傳回大量的 5xx 錯誤。此問題通常是因為太多同時讀寫請求造成。請考慮降低叢集流量或擴展網域。
分割大腦 分割大腦表示叢集有不只一個主節點,且已分為兩個叢集,這兩個叢集將不會自行重新連結。您也可以使用建議數量的專用主節點來避免大腦分割。如需從大腦分割中恢復的協助,請聯絡 AWS Support
找不到主節點 OpenSearch 服務找不到叢集的主節點。如果您的網域使用的是多個可用區,則可用區域故障可能會導致叢集遺失仲裁,且無法選擇新的主節點。如果問題無法自主解決,請聯絡AWS Support
待處理任務過多 主節點負載太重且待處理任務過多。請考慮降低叢集流量或擴展網域。
儲存磁碟區受損 一或多個節點的磁碟區無法正常運作。此問題通常與其他問題 (例如高錯誤率或待處理任務過多) 一起發生。如果此問題單獨發生且無法自主解決,請聯絡AWS Support
KMS 金鑰問題 用於加密網域的 KMS 金鑰無法存取或遺失。如需詳細資訊,請參閱 監控靜態加密資料的網域
快照處理中 網域正在拍攝快照。在快照完成後檢查升級資格。也確認您是否列出手動快照儲存庫、列出這些儲存庫中的快照與手動拍攝快照。如果 OpenSearch 服務無法檢查快照是否正在進行中,升級可能會失敗。
快照逾時或故障 預先升級快照耗時太久,無法完成或失敗。請檢查叢集的運作狀態並再試一次。如果問題仍存在,請聯絡 AWS Support
索引不相容 一或多個索引與目標版本不相容。如果您從舊版 OpenSearch 或彈性搜尋移轉索引,就可能會發生這個問題。重新編製索引,然後重試。
高磁碟使用量 叢集的磁碟使用量超過 90%。篩除資料或擴展網域,然後重試。
高 JVM 用量 JVM 記憶體壓力超過 75%。​ 降低叢集的流量或擴展網域,然後重試。
OpenSearch 儀表板別名問題 .dashboards已設定為別名,並對映至不相容的索引,可能是來自舊版 OpenSearch 儀表板的索引。重新建立索引並再試一次。
紅色 Dashboards 狀態 OpenSearch 儀表板狀態為紅色。在升級完成時嘗試使用 Dashboards。如果紅色狀態仍持續,手動解決它,然後重試。
跨叢集相容性

只有在可維持升級後來源和目的地網域之間的跨叢集相容性的情況下,才能進行升級。在升級程序期間,系統會識別任何不相容的連線。若要繼續進行,請升級遠端網域或刪除不相容的連線。請注意,如果複寫在網域上處於啟用狀態,一旦刪除連線,就無法繼續複寫。

其他 OpenSearch 服務服務問題 OpenSearch 服務本身的問題可能會導致您的網域顯示為不符合升級資格。如果上述問題都不適用於您的網域,且問題持續超過一天,請聯絡AWS Support

使用快照來遷移資料

就地升級是將網域升級至更新版本 OpenSearch 或 Elasticsearch 版本的更簡單、更快速且更可靠的方式。如果您需要從 ​Elasticsearch 5.1 之前的版本中遷移或想要遷移至全新的叢集,快照會是一個好選擇。

下表顯示如何使用快照將資料移轉至使用其他版本 OpenSearch 或 Elasticsearch 版本的網域。如需有關拍攝和恢復快照的資訊,請參閱在 Amazon OpenSearch 服務中創建索引快照

原始版本 目標版本 遷移程序
OpenSearch 一點三或二. x OpenSearch 2. x
  1. 檢閱 OpenSearch 2.3 的重大變更,看看是否需要調整索引或應用程式。

  2. 建立 1.3 或 2 的手動快照。 x 網域名稱。

  3. 創建一個 2. x 域名的版本比原來的 1.3 或 2 更高。 x 網域名稱。

  4. 將快照從原始網域還原到 2。 x 網域名稱。在作業期間,您可能需要以新名稱還原.opensearch索引:

    POST _snapshot/<repository-name>/<snapshot-name>/_restore { "indices": "*", "ignore_unavailable": true, "rename_pattern": ".opensearch", "rename_replacement": ".backup-opensearch" }

    然後,您可以在新網域 .backup-opensearch 上重建索引,並將其別名命名為 .opensearch。請注意,_restoreREST 調用不包括,include_global_state因為默認值_restore是假的。因此,測試網域不會包含任何索引範本,也不會有備份的完整狀態。

  5. 如果您不再需要原始網域,請將其刪除。否則,您要繼續負擔網域的費用。

OpenSearch 1. x OpenSearch 1. x
  1. 建立 1 的手動快照。 x 網域名稱。

  2. 創建一個 1. x 域名比您原來的版本更高 1。 x 網域名稱。

  3. 將快照從原始網域還原到新的 1。 x 網域名稱。在作業期間,您可能需要以新名稱還原.opensearch索引:

    POST _snapshot/<repository-name>/<snapshot-name>/_restore { "indices": "*", "ignore_unavailable": true, "rename_pattern": ".opensearch", "rename_replacement": ".backup-opensearch" }

    然後,您可以在新網域 .backup-opensearch 上重建索引,並將其別名命名為 .opensearch。請注意,_restoreREST 調用不包括,include_global_state因為默認值_restore是假的。因此,測試網域不會包含任何索引範本,也不會有備份的完整狀態。

  4. 如果您不再需要原始網域,請將其刪除。否則,您要繼續負擔網域的費用。

Elasticsearch 6.x 或 7.x OpenSearch 1. x
  1. 檢閱 OpenSearch 1.0 的重大變更,看看是否需要調整索引或應用程式。

  2. 建立 Elasticsearch 7.x 或 6.x 網域的手動快照。

  3. 創建一個 OpenSearch 1. x 網域名稱。

  4. 將快照從彈性搜尋網域還原至網域。 OpenSearch 在作業期間,您可能需要以新名稱還原.elasticsearch索引:

    POST _snapshot/<repository-name>/<snapshot-name>/_restore { "indices": "*", "ignore_unavailable": true, "rename_pattern": ".elasticsearch", "rename_replacement": ".backup-opensearch" }

    然後,您可以在新網域 .backup-opensearch 上重建索引,並將其別名命名為 .elasticsearch。請注意,_restoreREST 調用不包括,include_global_state因為默認值_restore是假的。因此,測試網域不會包含任何索引範本,也不會有備份的完整狀態。

  5. 如果您不再需要原始網域,請將其刪除。否則,您要繼續負擔網域的費用。

Elasticsearch 6.x Elasticsearch 7.x
  1. 檢閱 7.0 的重大變更,以查看是否需要調整您的索引或應用程式。

  2. 建立 6.x 網域的手動快照。

  3. 建立 7.x 網域。

  4. 將快照從原始網域還原到 7.x 網域。在操作期間,您可能需要以新名稱還原 .opensearch 索引:

    POST _snapshot/<repository-name>/<snapshot-name>/_restore { "indices": "*", "ignore_unavailable": true, "rename_pattern": ".elasticsearch", "rename_replacement": ".backup-elasticsearch" }

    然後,您可以在新網域 .backup-elasticsearch 上重建索引,並將其別名命名為 .elasticsearch。請注意,_restoreREST 調用不包括,include_global_state因為默認值_restore是假的。因此,測試網域不會包含任何索引範本,也不會有備份的完整狀態。

  5. 如果您不再需要原始網域,請將其刪除。否則,您要繼續負擔網域的費用。

Elasticsearch 6.x Elasticsearch 6.8
  1. 建立 6.x 網域的手動快照。

  2. 建立 6.8 網域。

  3. 將快照從原始網域還原到 6.8 網域。

  4. 如果您不再需要原始網域,請將其刪除。否則,您要繼續負擔網域的費用。

Elasticsearch 5.x Elasticsearch 6.x
  1. 檢閱 6.0 的重大變更,以得知您是否需要調整您的索引或應用程式。

  2. 建立 5.x 網域的手動快照。

  3. 建立 6.x 網域。

  4. 將快照從原始網域還原到 6.x 網域。

  5. 如果您不再需要 5.x 網域,請將其刪除。否則,您要繼續負擔網域的費用。

Elasticsearch 5.x Elasticsearch 5.6
  1. 建立 5.x 網域的手動快照。

  2. 建立 5.6 網域。

  3. 將快照從原始網域還原到 5.6 網域。

  4. 如果您不再需要原始網域,請將其刪除。否則,您要繼續負擔網域的費用。

Elasticsearch 2.3 Elasticsearch 6.x

Elasticsearch 2.3 快照與 6.x 不相容。若要直接將您的資料從 2.3 遷移至 6.x,您必須在新網域手動重新建立索引。

或者,您可以遵照此表中的 2.3 到 5.x 步驟,在全新 5.x 網域中執行 _reindex 操作,將您的 2.3 索引轉換為 5.x 索引,接著再遵循 5.x 到 6.x 步驟。

Elasticsearch 2.3 Elasticsearch 5.x
  1. 檢閱 5.0 的重大變更,以查看是否需要調整您的索引或應用程式。

  2. 建立 2.3 網域的手動快照。

  3. 建立 5.x 網域。

  4. 將快照從 2.3 網域還原到 5.x 網域。

  5. 如果您不再需要 2.3 網域,請將其刪除。否則,您要繼續負擔網域的費用。

Elasticsearch 1.5 Elasticsearch 5.x

Elasticsearch 1.5 快照與 5.x 不相容。若要將您資料從 1.5 遷移至 5.x,您必須在新網域手動重新建立索引。

重要

1.5 快照與 2.3 相容,但 OpenSearch 服務 2.3 網域不支援此_reindex作業。因為您無法為其重新編製索引,所以在 1.5 網域中產生的索引仍然無法從 2.3 快照還原到 5.x 網域。

Elasticsearch 1.5 Elasticsearch 2.3
  1. 使用遷移外掛程式來確認您是否可以直接升級至 2.3 版。您在遷移前可能需要對資料進行變更。

    1. 在 Web 瀏覽器中,開啟 http://domain-endpoint/_plugin/migration/

    2. 選擇 Run checks now (立即執行檢查)

    3. 如有需要,檢閱結果,並依照操作說明來變更您的資料。

  2. 建立 1.5 網域的手動快照。

  3. 建立 2.3 網域。

  4. 將快照從 1.5 網域還原到 2.3 網域。

  5. 如果您不再需要 1.5 網域,請將其刪除。否則,您要繼續負擔網域的費用。