亞馬遜 OpenSearch 服務故障 - Amazon OpenSearch 服務

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

亞馬遜 OpenSearch 服務故障

本主題說明如何識別和解決常見的 Amazon OpenSearch 服務問題。聯絡 AWS 支援之前,先參閱本節資訊。

無法存取 OpenSearch 儀表板

OpenSearch 儀表板端點不支援已簽署的要求。如果網域的存取控制政策只對特定 IAM 角色授予存取權,而且您尚未設定 Amazon Cognito 身分驗證,當您嘗試存取 Dashboards 時可能會收到以下錯誤:

"User: anonymous is not authorized to perform: es:ESHttpGet"

如果您的 OpenSearch Service 網域使用 VPC 存取,您可能不會收到此錯誤,但要求可能逾時。如要進一步了解有關修正此問題和各種可用組態選項的詳細資訊,請參閱控制 OpenSearch 儀表板的存取關於 VPC 網域上的存取政策以及 Amazon OpenSearch 服務中的 Identity and Access Management

無法存取 VPC 網域

請參閱 關於 VPC 網域上的存取政策測試 VPC 網域

叢集處於唯讀狀態

與早期的彈性搜索版本 OpenSearch 和彈性搜索 7 相比。 x 使用不同的系統進行叢集協調。在這個新系統中,當叢集遺失仲裁,在您採取動作之前,叢集將無法使用。遺失仲裁有兩種形式:

  • 如果您的叢集使用專用主節點,當一半或更多個節點無法使用時,會發生仲裁遺失。

  • 如果您的叢集使用專用主節點,當一半或更多個資料節點無法使用時,會發生仲裁遺失。

如果發生仲裁遺失,且叢集有多個節點, OpenSearch Service 會還原仲裁並將叢集置於唯讀狀態。您有兩種選擇:

如果您偏好依原樣使用叢集,請使用下列請求來驗證叢集運作狀態為綠色:

GET _cat/health?v

如果叢集運作狀態為紅色,建議從快照還原叢集。您也可以參閱 紅色叢集狀態 以取得疑難排解步驟。如果叢集運作狀態為綠色,請使用下列請求來檢查所有預期索引是否存在:

GET _cat/indices?v

然後執行一些搜尋來驗證預期的資料存在。如果存在,您可以使用下列請求來移除唯讀狀態:

PUT _cluster/settings { "persistent": { "cluster.blocks.read_only": false } }

如果發生仲裁遺失,而您的叢集只有一個節點, OpenSearch Service 會取代節點,且會將叢集置於唯讀狀態。否則,您的選項會是相同的:依原樣使用叢集或從快照還原。

在這兩種情況下, OpenSearch Service 都會將兩個事件傳送給您的 AWS Health Dashboard. 第一個會通知您遺失仲裁。第二個發生在 OpenSearch Service 成功還原仲裁之後。如需使用 AWS Health Dashboard 的詳細資訊,請參閱 AWS Health 使用者指南

紅色叢集狀態

紅色叢集狀態表示至少有一個主要碎片及其複本未配置給節點。 OpenSearch 服務會持續嘗試擷取所有索引的自動快照,不論其狀態為何,但快照會在紅色叢集狀態持續存在時失敗。

紅色叢集狀態的最常見原因是叢集節點失敗,以及處理 OpenSearch 序因為持續繁重的處理負載而當機。

注意

OpenSearch 無論叢集狀態為何,服務都會儲存自動快照 14 天。因此,如果紅色叢集狀態持續超過兩週,將會刪除最後一個狀況良好的自動快照,而您可能永遠遺失叢集資料。如果您的 OpenSearch 服務網域進入紅色的叢集狀態,AWS Support可能會與您連絡,詢問您是否要自行解決問題,或是希望支援團隊協助。您可以設定 CloudWatch 警示,在發生紅色叢集狀態時通知您。

最後,紅色碎片會導致紅色叢集,而紅色索引會造成紅色碎片。若要識別造成紅色叢集狀態的索引,請使用一些 OpenSearch 有用的 API。

  • GET /_cluster/allocation/explain 選擇第一個發現的未指派碎片,並說明為何無法將它分配到節點:

    { "index": "test4", "shard": 0, "primary": true, "current_state": "unassigned", "can_allocate": "no", "allocate_explanation": "cannot allocate because allocation is not permitted to any of the nodes" }
  • GET /_cat/indices?v 顯示每個索引的良好運作狀態、文件數量和磁碟使用方式:

    health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open test1 30h1EiMvS5uAFr2t5CEVoQ 5 0 820 0 14mb 14mb green open test2 sdIxs_WDT56afFGu5KPbFQ 1 0 0 0 233b 233b green open test3 GGRZp_TBRZuSaZpAGk2pmw 1 1 2 0 14.7kb 7.3kb red open test4 BJxfAErbTtu5HBjIXJV_7A 1 0 green open test5 _8C6MIXOSxCqVYicH3jsEA 1 0 7 0 24.3kb 24.3kb

刪除紅色索引能以最快速度修正紅色叢集狀態。根據紅色叢集狀態的原因,接著您可能會擴展 OpenSearch Service 網域,以使用較大的執行個體類型、更多執行個體或更多 EBS 型儲存體,並嘗試重新建立有問題的索引。

若無法刪除有問題的索引,您可以還原快照、從索引刪除文件、變更索引設定、減少複本數量,或刪除其他索引以釋出更多可用磁碟空間。重要的步驟是解決紅色的叢集狀態,然後再重新設定 OpenSearch Service 網域。重新設定具紅色叢集狀態的網域可能使問題複雜化,進而導致網域停滯在 Processing (處理中) 的設定狀態,直到您解決狀態問題為止。

紅色叢集的自動修復

如果叢集的狀態持續為紅色超過一小時, OpenSearch Service 會嘗試透過重新路由傳送未配置的碎片或從過去的快照還原來自動修復叢集。

如果無法修正一或多個紅色索引,且叢集狀態在 14 天內仍保持紅色,則只有在叢集至少符合下列其中一項條件時, OpenSearch Service 才會採取進一步的動作:

  • 只有一個可用區域

  • 沒有專用主節點

  • 包含爆量執行個體類型 (T2 或 T3)

目前,如果您的叢集符合上述條件之一, OpenSearch Service 會在接下來的 7 天內傳送每日通知給您,說明如果您不修正這些索引,則會刪除所有未指派的碎片。如果您的叢集狀態在 21 天後仍為紅色, OpenSearch Service 會刪除所有紅色索引上未指派的碎片 (儲存區和運算)。您會在 OpenSearch Service 主控台的「通知」面板中收到這些事件的通知。如需詳細資訊,請參閱叢集運作狀態事件

從持續繁重的處理負載中復原

若要判斷紅色叢集狀態是否是資料節點上的持續繁重處理負載所造成,可監控以下叢集指標。

相關指標 描述 復原
JVM MemoryPressure

指定用於叢集中所有資料節點的 Java heap 的百分比。檢視此指標的最大統計資料來獲知這項指標,並且檢視當 Java 垃圾回收器無法回收足夠記憶體,進而造成記憶體越來越小的壓力。此模式可能是因為複雜的查詢或大型資料欄位所造成。

x86 執行個體類型使用 Conconnect Mark Sweep (CMS) 廢棄項目收集器,與應用程式執行緒一起執行,將暫停可能情況降到短暫。如果 CMS 在一般收集期間無法回收足夠的記憶體,會觸發完整的廢棄項目收集,導致長時間應用程式暫停和影響叢集穩定性。

ARM 型 Graviton 執行個體類型使用 Garbage-First (G1) 廢棄項目收集器,它類似於 CMS,但使用額外的短暫暫停和堆積磁碟重組,進一步減少對完整廢棄項目收集的需求。

在任何一種情況下,如果記憶體使用量持續超過記憶體回收期間可回收的記憶體回收,則會因記憶體不足錯誤而 OpenSearch 當機。在所有執行個體類型上,最好的經驗法則是將使用量保持低於 80%。

_nodes/stats/jvmAPI 提供有用的 JVM 統計資料摘要、記憶體集區使用量,以及垃圾回收資訊:

GET domain-endpoint/_nodes/stats/jvm?pretty

設定 JVM 的記憶體斷路器。如需詳細資訊,請參閱JVM OutOfMemoryError

如果問題仍存在,請刪除不需要的索引、減少對網域的請求數或複雜度、新增執行個體,或使用較大的執行個體類型。

CPUUtilization 指定用於叢集中的資料節點的 CPU 資源百分比。檢視此指標的最大統計資料,尋找持續的高用量模式。 新增資料節點,或增加現有資料節點之執行個體類型的大小。
節點 指定叢集中的節點數。檢視此指標的最小統計資料。當服務為叢集部署新的執行個體時,這個值會有所變動。 新增資料節點。

黃色叢集狀態

黃色叢集狀態表示已將所有索引的主要碎片分配給叢集中的節點,但至少有一個索引的複本碎片未獲分配。單節點叢集一律以黃色叢集狀態初始化,因為沒有其他節點可 OpenSearch 供 Service 指派複本。為了達到綠色叢集狀態,請增加節點數。如需詳細資訊,請參閱調整 Amazon OpenSearch 服務域

建立新索引或發送節點故障後,多節點叢集可能會短暫呈現黃色叢集狀態。此狀態會在叢集中 OpenSearch 複寫資料時自行解析。磁碟空間不足也可能導致黃色叢集狀態;如果節點擁有容納它們的磁盤空間,叢集只能分配複本分片。

ClusterBlockException

您可能會接收到 ClusterBlockException 錯誤,原因如下。

缺少可用儲存空間

如果叢集中的一或多個節點的儲存空間小於 1) 20% 可用儲存空間的最小值,或 2) 20 GB 的儲存空間,基本寫入作業 (例如新增文件和建立索引) 可能會開始失敗。 計算儲存需求提供 OpenSearch 服務如何使用磁碟空間的摘要。

為避免發生問題,請在 OpenSearch 服務主控台中監視FreeStorageSpace指標,並建立 CloudWatch 警示以在FreeStorageSpace低於特定臨界值時觸發。 GET /_cat/allocation?v還提供碎片分配和磁盤使用情況的有用摘要。若要解決與儲存空間不足相關的問題,請擴展 OpenSearch Service 網域以使用較大的執行個體類型、更多執行個體或更多 EBS 型儲存。

高 JVM 記憶體壓力

JVM 指MemoryPressure標在 30 分鐘內超過 92% 時, OpenSearch Service 會觸發保護機制並封鎖所有寫入作業,以防止叢集達到紅色狀態。若保護已啟動,則當寫入操作失敗且出現 ClusterBlockException 錯誤時,新的索引將無法建立,並會擲出 IndexCreateBlockException 錯誤。

JVM MemoryPressure 測量結果返回 88% 或更低五分鐘時,會停用保護,而且會解除封鎖叢集的寫入作業。

高 JVM 記憶體壓力可能是因為叢集的請求數量猛增、節點之間的碎片配置不均衡、叢集中的碎片太多、欄位資料或索引映射激增,或無法處理傳入負載的執行個體類型所致。它也可能是由於在查詢中使用彙總、萬用字元或寬泛的時間範圍造成的。

若要減少叢集的流量並解決高 JVM 記憶體壓力問題,請嘗試執行下列其中一個或多個動作:

  • 擴展網域,使每個節點的堆積大小上限為 32 GB。

  • 透過刪除舊的或未使用的索引來減少碎片數量。

  • 使用 POST index-name/_cache/clear?fielddata=true API 操作清除資料快取。請注意,清除快取可能會中斷進行中的查詢。

一般而言,為了避免將來出現高 JVM 記憶體壓力,請遵循下列最佳實務:

在待命狀態下移轉至異地同步備份

在待命狀態下將現有網域移轉至異地同步備份時,可能會發生下列問題。

在從不待命的網域移轉至待命狀態的網域期間建立索引、索引範本或 ISM 原則

如果您在將異地同步備份網域 (不含待命) 移轉至具備待命狀態的同時建立索引,且索引範本或 ISM 政策未遵循建議的資料複製準則,這可能會造成資料不一致,且移轉可能會失敗。若要避免此情況,請建立具有三個之倍數之資料副本計數 (包括主要節點和複本) 的新索引。您可以使用 API 檢查遷移進度DescribeDomainChangeProgress。如果您遇到複本計數錯誤,請修正錯誤,然後聯絡 Sup AWSport 人員以重試移轉。

資料複本數量不正確

如果您的網域中沒有正確數量的資料複本,則透過待命方式移轉至異地同步備份將會失敗。

JVM OutOfMemoryError

JVM OutOfMemoryError 通常表示達到以下其中一個 JVM 斷路器。

斷路器 描述 叢集設定屬性
上層中斷器 可用於所有斷路器的 JVM 堆積記憶體總百分比。預設值為 95%。 indices.breaker.total.limit
欄位資料中斷器 可讓 JVM 堆積記憶體將單一資料欄位載入到記憶體的百分比。預設值為 40%。如果您上傳具大型欄位的資料,您可能需要提高此限制。 indices.breaker.fielddata.limit
請求中斷器 允許資料結構用於回應的服務請求的 JVM 堆積記憶體百分比。預設值為 60%。如果您的服務請求涉及計算彙總,您可能需要提高此限制。 indices.breaker.request.limit

叢集節點失敗

Amazon EC2 執行個體可能遇到意外終止和重新啟動。 OpenSearch 服務通常會為您重新啟動節點。不過,失敗的情況下, OpenSearch 叢集仍可能保有一個或多個節點。

若要檢查此狀況,請在 OpenSearch Service 主控台上開啟您的網域儀表板。前往 Cluster health (叢集運作狀態) 標籤,然後找到 Total nodes (總節點) 指標。查看回報節點數是否少於您為叢集設定的數量。如果指標顯示一個或多個節點未運作一天以上,請聯絡 AWS 支援

您也可以設定 CloudWatch 警示,在發生此問題時通知您。

注意

叢集組態變更以及服務的例行維護期間,總節點指標不準確。此行為在預期當中。該指標很快就會報告正確的叢集節點數量。如需進一步了解,請參閱 在 Amazon OpenSearch 服務中進行配置更改

若要保護叢集免於非預期的節點終止和重新啟動,請為 OpenSearch Service 網域中的每個索引建立至少一個複本。

超出最大碎片限制

OpenSearch 以及 7. x 個版本的彈性搜尋具有每個節點不超過 1,000 個碎片的預設設定。 OpenSearch/Elasticsearch 會擲回錯誤,如果要求 (例如建立新索引) 會造成您超過此限制。如果您遇到此錯誤,您有幾個選項:

  • 將更多資料節點新增至叢集。

  • 增加 _cluster/settings/cluster.max_shards_per_node 設定。

  • 使用 _shrink API 來減少節點上的碎片數目。

網域卡在處理狀態

當您的 OpenSearch 服務域在配置更改中間時進入「處理中」狀態。當您啟動組態變更時,網域狀態會變更為「處理中」,而 OpenSearch 服務會建立新的環境。在新環境中, OpenSearch Service 會啟動一組新的適用節點 (例如資料、主節點或 UltraWarm)。遷移完成後,舊節點將會終止。

如果發生下列其中一種情況,叢集可能會卡在「處理中」狀態:

  • 一組新的資料節點無法啟動。

  • 將碎片遷移至新的資料節點集不成功。

  • 驗證檢查失敗並顯示錯誤。

如需每種情況的詳細解決步驟,請參閱為什麼我的 Amazon OpenSearch 服務網域卡在「處理中」狀態?

低 EBS 爆量餘額

OpenSearch 當您其中一個一般用途 (SSD) 磁碟區上的 EBS 突發平衡低於 70% 時,服務會傳送主控台通知給您,如果餘額低於 20%,則會向您傳送後續通知。若要解決此問題,您可以縱向擴展叢集,或減少讀取和寫入 IOPS,以便記入爆量餘額。對於具有 gp3 磁碟區類型的網域,以及具有磁碟區大小高於 1000 GiB 之 gp2 磁碟區的網域,爆量餘額會保持在 0。如需詳細資訊,請參閱一般用途 SSD 磁碟區 (gp2)。您可以使用BurstBalance CloudWatch 指標監視 EBS 突發平衡。

無法啟用稽核日誌

當您嘗試使用 OpenSearch 服務主控台啟用稽核記錄檔發佈時,可能會遇到下列錯誤:

為 CloudWatch 日誌日誌群組指定的資源存取政策未授予 Amazon Ser OpenSearch vice 建立日誌串流的足夠許可。請檢查資源存取政策。

如果您遇到此錯誤,請確認政策的 resource 元素包含正確的日誌群組 ARN。如果有,請遵循以下步驟:

  1. 等候幾分鐘。

  2. 在 Web 瀏覽器中重新整理該頁面。

  3. 選擇 Select existing group (選擇現有群組)。

  4. 對於 Existing log group (現有日誌群組),選擇您在收到錯誤訊息之前建立的日誌群組。

  5. 在存取政策區段中,選擇 Select existing policy (選取現有政策)。

  6. 對於 Existing policy (現有政策),選擇您在收到錯誤訊息之前建立的政策。

  7. 選擇 啟用

如果在重複此程序數次後仍然存在錯誤,請連絡 AWS Support

無法關閉索引

OpenSearch 服務僅支援彈性搜尋 7.4 OpenSearch 及更新版本的 _closeAPI。如果正在使用較舊版本並從快照中恢復索引,您可以刪除現有索引 (在重新編製索引前後)。

用戶端授權檢查

Logstash 和 Beats 的預設發行版包含專有授權檢查,且無法連線至的開放原始碼版本。 OpenSearch確保您使用這些客戶端的 Apache 2.0(OSS)發行版與服 OpenSearch 務。

請求調節

如果您收到持續的 403 Request throttled due to too many requests429 Too Many Requests 錯誤,請考慮垂直擴展。如果有效負載會導致記憶體使用量超過 Java 堆積的大小上限,Amazon OpenSearch 服務會節流請求。

無法對節點執行 SSH

您無法使用 SSH 存取 OpenSearch 叢集中的任何節點,也無法直接修改opensearch.yml。反之,使用主控台、AWS CLI、或軟體開發套件來設定網域。您也可以使用 OpenSearch REST API 指定幾個叢集層級的設定。若要進一步了解,請參閱亞馬遜 OpenSearch 服務 API 參考Amazon OpenSearch 服務中支持的操作.

如果您需要深入了解叢集的效能,您可以將錯誤日誌和慢速查詢日誌發佈至 CloudWatch

「無效的物件存放區類別」快照錯誤

OpenSearch 服務快照不支援 S3 Glacier 儲存類別。如果您的 S3 儲存貯體所包含的生命週期規則將物件轉換為 S3 Glacier 儲存類別,當您嘗試列出快照時,您可能遇到此錯誤。

如果您需要從儲存貯體還原快照,請從 S3 Glacier 中還原物件,將物件複製到新的儲存貯體,以及將新的儲存貯體註冊為快照儲存庫。

無效主機標頭

OpenSearch 服務要求用戶端Host在要求標頭中指定。有效的 Host​ 值是不含 https:// 的網域端點,例如:

Host: search-my-sample-domain-ih2lhn2ew2scurji.us-west-2.es.amazonaws.com

如果您在發出要求時收到Invalid Host Header錯誤訊息,請檢查您的用戶端或 Proxy 是否在Host標頭中包含 OpenSearch 服務網域端點 (而非其 IP 位址)。

無效的 M3 執行個體類型

OpenSearch 服務不支援將 M3 執行個體新增或修改至執行中的現有網域 OpenSearch 或 Elasticsearch 6.7 及更新版本。您可以繼續搭配 Elasticsearch 6.5 或較舊版本使用 M3 執行個體。

建議您選擇較新的執行個體類型。執行彈性搜尋 6.7 OpenSearch 或更新版本的網域適用下列限制:

  • 如果現有網域不使用 M3 執行個體,則無法再變更為它們。

  • 如果您將現有網域從 M3 執行個體類型變更為其他執行個體類型,則無法切換回原本的執行個體類型。

啟用後熱查詢停止工作 UltraWarm

當您在網域 UltraWarm 上啟用時,如果設定沒有預先存在的覆寫, OpenSearch Service 會自動將值search.max_buckets設定為,以10000防止大量記憶體的查詢飽和暖節點。如果您的熱查詢使用的值區超過 10,000 個,則啟用時可能會停止運作 UltraWarm。

由於 Amazon Ser OpenSearch vice 的受管性質,您無法修改此設定,因此您需要開啟支援案例來增加限制。增加限制不需要高級支援訂閱。

升級後無法降級

就地升級是無法復原的作業,但您仍可連絡 AWS 支援;支援人員可協助您在新網域上還原自動、預先升級的快照。例如,如果將網域從 Elasticsearch 5.6 升級至 6.4,AWS Support 可協助您在新的 Elasticsearch 5.6 網域上還原預先升級的快照。如果已經製作原有網域的手動快照,則您可以自行執行該步驟

需要所有 AWS 區域 的網域摘要

下列指令碼使用 Amazon EC2 描述區域AWS CLI命令來建立可提 OpenSearch 供服務的所有區域清單。然後它list-domain-names要求每個區域:

for region in `aws ec2 describe-regions --output text | cut -f4` do echo "\nListing domains in region '$region':" aws opensearch list-domain-names --region $region --query 'DomainNames' done

接著,您會收到下列個別區域的輸出:

Listing domains in region:'us-west-2'... [ { "DomainName": "sample-domain" } ]

OpenSearch 服務無法使用的區域會傳回「無法連線到端點 URL」。

使用 OpenSearch 儀表板時出錯瀏覽器

當您使用儀表板檢視 Service 網域中的資料時,瀏覽器會在 HTTP 回應物件中封裝 OpenSearch 服務錯誤訊息。您可以使用 Web 瀏覽器中的常用開發人員工具,例如 Chrome 中的開發人員模式,來檢視基本服務錯誤和協助您的偵錯工作。

若要檢視 Chrome 中的服務錯誤
  1. 從 Chrome 頂部選單列中,選擇 View (檢視)、Developer (開發人員)、Developer Tools (開發人員工具)。

  2. 選擇 Network (網路) 索引標籤。

  3. Status (狀態) 欄中,選擇任何狀態為 500 的 HTTP 工作階段。

若要檢視 Firefox 中的服務錯誤
  1. 從選單中,選擇 Tools (工具)Web Developer (Web 開發人員)Network (網路)

  2. 選擇狀態為 500 的任何 HTTP 工作階段。

  3. 選擇 Response (回應) 索引標籤,以檢視服務回應。

節點碎片和儲存扭曲

節點碎片扭曲是指叢集中的一個或多個節點具有比其他節點更多的碎片。節點儲存扭曲是指叢集中的一個或多個節點具有比其他節點更多的儲存空間 (disk.indices)。雖然這兩種情況都可能暫時發生,例如當網域已替換節點並仍對其分配碎片,如果它們持續存在,則應進行解決。

若要識別這兩種類型的扭曲,請執行 _cat/allocation API 操作並比較回應中的 shardsdisk.indices 條目:

shards | disk.indices | disk.used | disk.avail | disk.total | disk.percent | host | ip | node 264 | 465.3mb | 229.9mb | 1.4tb | 1.5tb | 0 | x.x.x.x | x.x.x.x | node1 115 | 7.9mb | 83.7mb | 49.1gb | 49.2gb | 0 | x.x.x.x | x.x.x.x | node2 264 | 465.3mb | 235.3mb | 1.4tb | 1.5tb | 0 | x.x.x.x | x.x.x.x | node3 116 | 7.9mb | 82.8mb | 49.1gb | 49.2gb | 0 | x.x.x.x | x.x.x.x | node4 115 | 8.4mb | 85mb | 49.1gb | 49.2gb | 0 | x.x.x.x | x.x.x.x | node5

雖然一些儲存扭曲是正常的,但超過平均值 10% 需引起注意。當碎片分配扭曲時,CPU、網絡和磁碟頻寬使用率也可能會變得扭曲。由於更多的資料通常意味著更多的索引和搜尋操作,負載最重的節點也往往是資源最緊張的節點,而負載較輕的節點表示未充分利用的容量。

修補:使用數倍於資料節點計數的碎片計數,以確保每個索引均勻分佈在資料節點間。

索引碎片和儲存扭曲

索引碎片扭曲是指一個或多個節點比其他節點持有更多的索引碎片。索引儲存扭曲是指一個或多個節點持有不成比例的大量索引總儲存空間。

索引扭曲比節點扭曲更難識別,因為它需要對 _cat/shards API 輸出結果進行一些處理。如果叢集或節點指標中出現一些扭曲跡象,請調查索引扭曲。以下是索引扭曲的常見跡象:

  • 在資料節點的子集上發生 HTTP 429 錯誤

  • 跨資料節點的索引或搜尋操作佇列不均勻

  • 資料節點間的 JVM 堆積和/或 CPU 利用率不均勻

修補:使用數倍於資料節點計數的碎片計數,以確保每個索引均勻分佈在資料節點間。如果您仍然看到索引儲存或碎片偏斜,則可能需要強制執行碎片重新分配,這會在 Service 網域的每個藍/綠部署時發生。 OpenSearch

在選取 VPC 存取後未經授權的操作

當您使用 OpenSearch 服務主控台建立新網域時,您可以選取 VPC 或公用存取。如果您選取 VPC 存取,則 OpenSearch 服務會查詢 VPC 資訊,如果您沒有適當的權限,則會失敗:

You are not authorized to perform this operation. (Service: AmazonEC2; Status Code: 403; Error Code: UnauthorizedOperation

若要啟用此查詢,您必須有權存取 ec2:DescribeVpcsec2:DescribeSubnetsec2:DescribeSecurityGroups 操作。此需求僅適用於主控台。如果您使用 AWS CLI 來建立和設定具 VPC 端點的網域,則不需要存取這些操作。

在建立 VPC 網域後載入停滯

建立使用 VPC 存取的新網域後,網域的 Configuration state (組態狀態) 的進度可能永不會超出 Loading (載入)。如果發生此問題,您區域的 AWS Security Token Service (AWS STS) 可能已停用

若要將 VPC 端點新增至您的 VPC, OpenSearch 服務需要擔任該AWSServiceRoleForAmazonOpenSearchService角色。因此,必須啟用 AWS STS 以建立在指定區域使用 VPC 存取的新網域。若要進一步了解如何啟用和停用 AWS STS,請參閱 IAM 使用者指南

拒絕對 OpenSearch API 的要求

隨著 OpenSearch API 引入基於標籤的訪問控制,您可能會開始看到以前沒有訪問被拒絕的錯誤。這可能是因為您的一或多個存取政策包含使用 ResourceTag 條件的 Deny,且目前遵守這些條件。

例如,以下政策僅用於網域具有標籤 environment=production 時,拒絕從組態 API 存取 CreateDomain 動作。即使動作清單同時包含 ESHttpPut,拒絕陳述式也不會套用於該動作或任何其他 ESHttp* 動作。

{ "Version": "2012-10-17", "Statement": [{ "Action": [ "es:CreateDomain", "es:ESHttpPut" ], "Effect": "Deny", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:ResourceTag/environment": [ "production" ] } } }] }

增加了對 OpenSearch HTTP 方法標籤的支援,如上所述的 IAM 身分型政策將導致附加的使用者遭到拒絕存取動作。ESHttpPut之前在沒有標籤驗證的情況下,連接的使用者仍可傳送 PUT 請求。

如果您在將網域更新至服務軟體 R20220323 或更新版本後,開始看到存取遭拒錯誤,請查看身分型存取政策,了解是否是這種情況,並在必要時加以更新以允許存取。

無法從 Alpine Linux 連線

Alpine Linux 會將 DNS 回應大小限制在 512 位元組。如果您嘗試從阿爾派 Linux 3.18.0 或更低版本連線到您的 OpenSearch 服務網域,如果該網域位於 VPC 人雲端中且有超過 20 個節點,則 DNS 解析可能會失敗。如果您使用的是高於 3.18.0 的阿爾派 Linux 版本,您應該能夠解析超過 20 台主機。如需詳細資訊,請參閱阿爾派 Linux 3.18.0 版本說明。

如果您的網域位於 VPC,我們建議使用其他 Linux 發行版本 (如 Debian、Ubuntu、CentOS、Red Hat Enterprise Linux 或 Amazon Linux 2) 來連線到該網域。

搜尋背壓要求太多

以 CPU 為基礎的許可控制是一種閘道機制,可根據節點目前的容量主動限制要求數目,包括隨機增加和流量尖峰。過多的要求會在拒絕時傳回 HTTP 429「要求過多」狀態碼。此錯誤表示叢集資源不足、資源密集型搜尋要求,或工作負載中意外的尖峰。

搜尋背壓提供拒絕的原因,可協助微調耗用大量資源的搜尋要求。對於流量尖峰,我們建議使用指數輪詢和抖動的用戶端重試。

使用開發套件時發生憑證錯誤

因為 AWS 開發套件是使用您的電腦的 CA 憑證,因此當您嘗試使用開發套件時,在 AWS 伺服器上的憑證變更可能導致連線失敗。錯誤訊息會不同,但通常包含以下文字:

Failed to query OpenSearch ... SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

您可以保留電腦的 CA 憑證和作業系統,以防止這些失敗 up-to-date。如果您在企業環境中遇到此問題,且並無管理使用專屬的電腦,則您可能需要尋求管理員協助更新程序。

以下清單列出作業系統及 Java 版本的最低版本需求:

  • 具備自 2005 年 1 月起之更新的 Microsoft Windows 版本,或更新版本 (其信任清單中需包含至少其中一項所需的 CA)。

  • Mac OS X 10.4 搭配適用於 Mac OS X 10.4 發行版本 5 (2007 年 2 月) 的 Java,Mac OS X 10.5 (2007 年 10 月) 和更新版本 (其信任清單中需包含至少其中一項所需的 CA)。

  • Red Hat Enterprise Linux 5 (2007 年 3 月)、6 和 7 以及 CentOS 5、6 和 7,全部均需在其預設信任 CA 清單中包含至少其中一項所需的 CA。

  • Java 1.4.2_12 (2006 年 5 月)、5 更新版本 2 (2005 年 3 月) 及所有更新版本,包括 Java 6 (2006 年 12 月)、7 和 8 (其預設信任 CA 清單中需包含至少其中一項所需的 CA)。

三個憑證授權機構如下:

  • Amazon 根 CA 1

  • Starfield Services 根憑證授權機構:G2

  • Starfield 類別 2 憑證授權機構

前兩個授權單位的根憑證可從 Amazon 信任服務取得,但保留電腦 up-to-date 是更直接的解決方案。若要進一步了解 ACM 提供的憑證,請參閱 AWS Certificate Manager 常見問答集

注意

目前,us-east-1 區域中的 OpenSearch 服務網域使用來自不同授權單位的憑證。我們計劃更新區域,於近期使用這些新的憑證授權機構。