本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon OpenSearch 服務中進行配置更改
Amazon OpenSearch 服務在更新網域時使用藍色/綠色部署程序。藍/綠部署會為複製生產環境的網域更新建立閒置環境,並在這些更新完成後將使用者路由至新環境。在藍/綠部署中,藍色環境是目前的生產環境。綠色環境是閒置的環境。
資料會從藍色環境移轉至綠色環境。當新環境準備就緒時, OpenSearch Service 會在環境中切換,以提升綠色環境成為新的生產環境。切換發生,沒有數據丟失。此作法可將停機時間降至最低,並在部署至新環境失敗的情況下維護原始環境。
通常會導致藍/綠部署的變更
以下操作會造成藍/綠部署:
-
變更執行個體類型
-
啟用精細存取控制
-
執行服務軟體更新
-
啟用或停用專用主節點
-
啟用或停用異地同步備份 (無待命
-
變更儲存類型、磁碟區類型或磁碟區大小
-
選擇不同的 VPC 子網路
-
新增或移除 VPC 安全群組
-
啟用或停用儀表板的 Amazon Cognito 身份驗證 OpenSearch
-
選擇不同的 Amazon Cognito 使用者集區或身分集區
-
修改進階設定
-
升級至新 OpenSearch 版本 (在部分或全部升級期間,OpenSearch 儀表板可能無法使用)
-
啟用靜態或加密資料的 node-to-node 加密
-
啟用或禁用 UltraWarm 或冷存儲
-
停用自動調整並還原其變更
-
將可選插件與域關聯並將可選插件與域分離
-
增加具有兩個專用主節點的異地同步備份網域的專用主節點計數
-
減少 EBS 磁碟區大小
-
變更 EBS 磁碟區大小、IOPS 或輸送量 (如果您上次所做的變更正在進行中或發生時間少於 6 小時)
-
啟用將稽核記錄發佈至 CloudWatch。
對於具備待命網域的異地同步備份,您一次只能提出一個變更請求。如果變更已在進行中,則會拒絕新請求。您可以使用 DescribeDomainChangeProgress
API 檢查當前更改的狀態。
通常不會導致藍/綠部署的變更
在大多數情況下,以下操作不會造成藍/綠部署:
-
修改存取原則
-
修改自訂端點
-
變更傳輸層安全性 (TLS) 原則
-
變更自動快照時間
-
啟用或停用 Require HTTPS (需要使用 HTTPS)
-
啟用自動調整,或停用且不還原其變更
-
如果您的網域有專用主節點,請變更資料節點或 UltraWarm 節點計數
-
如果您的網域有專用主節點,請變更專用主要執行個體類型或計數 (具有兩個專用主節點的異地同步備份網域除外)
-
啟用或停用錯誤記錄檔或慢速記錄檔的發佈 CloudWatch
-
將稽核記錄檔的發佈停用 CloudWatch
-
將磁碟區大小增加至每個資料節點最多 3 TiB,變更磁碟區類型、IOPS 或輸送量
-
新增或移除標籤
注意
視您的服務軟體版本而定,有一些例外情況。如果您想要確定變更不會造成藍/綠部署,請在更新網域之前執行乾式執行 (如果此選項可用)。某些更改不提供乾運行選項。我們通常建議您在流量尖峰時段之外對叢集進行變更。
判斷變更是否會導致藍/綠部署
您可以測試某些類型的規劃組態變更,以判斷這些變更是否會造成藍/綠部署,而不需要認可這些變更。在您啟動組態變更前,請使用主控台或 API 執行驗證檢查,以確保網域符合更新資格。
啟動和追蹤組態變更
注意
您可以一次要求一個組態變更。您也可以在單一要求中分組多個組態變更。請先等待網域狀態變更,Active
然後再要求任何其他組態變更。
您可以在 Amazon Ser OpenSearch vice 主控台中檢視網域處理狀 Config 和組態變更狀態欄位,以追蹤網域和組態變更。您也可以透過 API 回應中的和ConfigChangeStatus
參數追蹤網域DomainProcessingStatus
和組態變更。如需詳細資訊,請參閱 OpenSearch 服務 API 參考資DomainStatus料中的資料類型。
網域處理狀態可見性:您可以查看主控台中的 [網域處理狀態] 欄位,輕鬆判斷網域的組態狀態。同樣,DomainProcessingStatus
API 參數可用於識別狀態。下列值為網域的處理狀態:
-
Active
:未進行任何組態變更。您可以提交新的組態變更請求。 -
Creating
:正在建立網域。 -
Modifying
:正在進行組態變更,例如新增資料節點、EBS、gp3、IOPS 佈建或設定 KMS 金鑰。注意
您可能會看到狀態,就像
Modifying
在域需要分片移動才能完成配置更改的情況下。為了向後兼容,Processing
參數的行為在 API 響應中保持不變,並且在核心配置更改完成後立即設置為 false,而無需等待碎片移動完成。 -
Upgrading Engine Version
:正在進行引擎版本升級。 -
Updating Service Software
: 正在進行服務軟體更新。 -
Deleting
:正在刪除網域。 -
Isolated
:網域已暫停。
組態狀態可見性:設定變更可由操作員啟動 (例如新增資料節點、執行個體類型變更) 或由服務啟動 (例如,自動調整和離峰時間更新)。您可以在 Amazon Ser OpenSearch vice 主控台的「組態變更狀態」欄位和 ConfigChangeStatus
API 回應中找到最新組態變更的狀態詳細資訊。下列值表示網域的組態狀態:
-
Pending
:已提交組態變更請求。 -
Initializing
:服務正在初始化組態變更要求。 -
Validating
:服務正在驗證請求的更改和所需的資源。 -
Awaiting user inputs
:當運算子預期進行某些組態變更 (例如執行個體類型變更) 時適用。您可以編輯組態變更。 -
Applying changes
:服務正在套用要求的組態變更。 -
Cancelled
:已取消組態變更。如果您收到驗證失敗狀態,可以按一下主控台中的「取消」或呼叫CancelDomainConfigChange
API 作業。如果執行此操作,則會復原所有套用的變更。 -
Completed
:要求的組態變更已成功完成。 -
Validation Failed
:請求的變更驗證失敗。不會套用任何組態變更。注意
驗證失敗可能是因為您的網域中存在紅色索引、選擇的執行個體類型無法使用或磁碟空間不足所造成。如需驗證錯誤的清單,請參閱對驗證錯誤進行疑難排解。在驗證失敗事件期間,您可以取消、重試或編輯組態變更。
API 摘要:您可以使用DescribeDomain
DescribeDomainChangeProgress
、和 DescribeDomainConfig
API 作業取得詳細的組態更新狀態。此外,您可以使CancelDomainConfigChange
用在驗證失敗時取消更新。如需詳細資訊,請參閱OpenSearch 服務 API 文件
當組態變更完成時,網域狀態會變回Active
。
您可以檢閱叢集運作狀態和 Amazon CloudWatch 指標,並在網域更新時看到叢集中的節點數目暫時增加 (通常是翻倍)。在下圖中,您可以看到在組態變更期間節點數量從 11 加倍到 22,而在更新完成時恢復回 11。
![網域組態變更期間節點數從 11 加倍到 22。](images/NodesDoubled.png)
此暫時增加可能形成叢集專用主節點的負擔,突然可能會有許多節點需要管理。當 OpenSearch Service 將資料從舊叢集複製到新叢集時,也會增加搜尋和索引延遲。在叢集務必維持足夠的容量,以處理與這些藍/綠部署相關的負荷。
重要
組態變更和服務維護期間,您不需要支付任何額外費用。您也只需要針對您為叢集請求的節點數付費。如需詳細規格,請參閱組態變更的費用。
為了防止專用主節點過載,您可以使用 Amazon CloudWatch 指標監控使用情況。如需建議的最大值,請參閱推薦的 Amazon 服 OpenSearch 務 CloudWatch 警報。
組態變更的階段
啟動組態變更後, OpenSearch 服務會執行一系列步驟來更新您的網域。您可以在主控台的 [組態變更狀態] 下檢視組態變更進度。更新會經歷的確切步驟依您正在執行的變更類型而定。您也可以使用 DescribeDomainChangeProgressAPI 作業監視設定變更。
以下是更新在組派變更過程中可能會經歷的階段:
階段名稱 | 描述 |
---|---|
驗證 |
驗證網域是否有資格進行更新,並在必要時顯示驗證問題。 |
建立新環境 |
完成必要的先決條件並建立所需資源,以開始進行藍/綠部署。 |
佈建新節點 |
在新環境中建立一組新的執行個體。 |
新節點上的流量路由 |
將流量重新引導至新建立的資料節點。 |
舊節點上的流量路由 |
停用舊資料節點上的流量。 |
準備要移除的節點 |
準備移除節點。僅在您縮減網域時 (例如,從 8 個節點減少至 6 個節點),系統才會執行此步驟。 |
將碎片複製到新節點 |
將碎片從舊節點移動至新節點。 |
終止節點 |
在移除碎片後,終止和刪除舊節點。 |
刪除舊資源 |
刪除與舊環境 (例如負載平衡器) 相關聯的資源。 |
動態更新 |
已在更新無需藍/綠部署且可動態套用更新時顯示。 |
套用專屬的主要相關變更 |
當專用主要執行個體類型或計數變更時顯示。 |
套用磁碟區相關變更 |
當磁碟區大小、類型、IOPS 和輸送量變更時顯示。 |
藍/綠部署的效能影響
在藍/綠部署期間,您的 Amazon OpenSearch 服務叢集可用於傳入的搜尋和索引請求。不過,您可能會遇到下列效能問題:
-
由於叢集有更多要管理的節點,導線節點的使用量暫時增加。
-
隨著 OpenSearch Service 將資料從舊節點複製到新節點,因此增加了搜尋和索引延遲。
-
隨著叢集負載在藍/綠部署期間增加而增加,對傳入要求的拒絕次數增加。
-
若要避免延遲問題和要求拒絕,您應該在叢集狀態良好且網路流量低時執行藍/綠部署。
組態變更的費用
如果您變更網域的組態, OpenSearch Service 會依照中的說明建立新叢集在 Amazon OpenSearch 服務中進行配置更改。在將舊的遷移到新的期間,您需要支付以下費用:
-
如果您變更執行個體類型,會收取兩個叢集第一個小時的費用。在第一個小時後,則只會收取新叢集的費用。EBS 磁碟區不會收取兩次費用,因為它們是叢集的一部分,因此它們的計費會按執行個體計費。
範例:您將組態從三個
m3.xlarge
執行個體變更為四個m4.large
執行個體。對於第一個小時,您會被收取兩個叢集 (3 *m3.xlarge
+ 4 *m4.large
) 的費用。在第一個小時後,則只會收取新叢集 (4 *m4.large
) 的費用。 -
如果您不變更執行個體類型,您只會被收取最大叢集第一個小時的費用。在第一個小時後,則只會收取新叢集的費用。
範例:您將組態從六個
m3.xlarge
執行個體變更為三個m3.xlarge
執行個體。對於第一個小時,您會被收取最大叢集 (6 *m3.xlarge
) 的費用。在第一個小時後,則只會收取新叢集 (3 *m3.xlarge
) 的費用。
對驗證錯誤進行疑難排解
當您啟動組態變更或執行 OpenSearch 或 Elasticsearch 版本升級時, OpenSearch Service 會先執行一系列的驗證檢查,以確保您的網域符合更新資格。如果其中任何一項檢查失敗,您會在主控台中收到通知,其中包含您必須在更新網域之前解決的特定問題。下表列出 OpenSearch Service 可能出現的可能網域問題,以及解決這些問題的步驟。
問題 | 錯誤代碼 | 疑難排解步驟 |
---|---|---|
找不到安全群組 | SecurityGroupNotFound |
與您的 OpenSearch 服務網域相關聯的安全性群組不存在。若要解決此問題,請使用指定的名稱建立安全群組。 |
找不到子網 | SubnetNotFound |
與您的 OpenSearch 服務網域相關聯的子網路不存在。若要解決此問題,在您的 VPC 中建立子網。 |
未設定服務連結角色 | SLRNotConfigured |
未設定服務的服 OpenSearch 務連結角色。服務連結角色由 OpenSearch Service 預先定義,包含服務代表您呼叫其他服 AWS 務所需的所有權限。如果角色不存在,則可能需要手動建立。 |
IP 地址不足 | InsufficientFreeIPsForSubnets |
一個或多個 VPC 子網沒有足夠的 IP 地址來更新您的網域。若要計算您需要多少 IP 地址,請參閱 在 VPC 子網路中保留 IP 地址。 |
Cognito 使用者集區不存在 | CognitoUserPoolNotFound |
OpenSearch 服務找不到 Amazon Cognito 使用者集區。確認您已建立一個且具有正確的 ID。若要尋找 ID,您可以使用 Amazon Cognito 主控台或以下 AWS CLI 命令:
|
Cognito 身分集區不存在 | CognitoIdentityPoolNotFound |
OpenSearch 服務找不到 Cognito 身分識別集區。確認您已建立一個且具有正確的 ID。若要尋找 ID,您可以使用 Amazon Cognito 主控台或以下 AWS CLI 命令:
|
找不到使用者集區的 Cognito 網域 | CognitoDomainNotFound |
使用者集區沒有網域名稱。您可以使用 Amazon Cognito 主控台或下列 AWS CLI 命令來設定一個主控台:
|
未設定 Cognito 角色 | CognitoRoleNotConfigured |
未設定 IAM 角色,授予 OpenSearch 服務權限以設定 Amazon Cognito 使用者和身分識別集區,以及將其用於身分驗證。使用適當的許可集合和信任關係來設定角色。您可以使用主控台來為您建立預設CognitoAccessForAmazonOpenSearch角色,也可以使用 AWS CLI 或 AWS SDK 手動設定角色。 |
無法描述使用者集區 | UserPoolNotDescribable |
指定的 Amazon Cognito 角色沒有許可,無法描述與您的網域相關聯之使用者集區。請確定角色許可政策允許 cognito-identity:DescribeUserPool 動作。請參閱 關於 CognitoAccessForAmazonOpenSearch角色 了解完整的許可政策。 |
無法描述身分集區 | IdentityPoolNotDescribable |
指定的 Amazon Cognito 角色沒有許可,無法描述與您的網域相關聯之身分集區。請確定角色許可政策允許 cognito-identity:DescribeIdentityPool 動作。請參閱 關於 CognitoAccessForAmazonOpenSearch角色 了解完整的許可政策。 |
無法描述使用者集區和身分集區 | CognitoPoolsNotDescribable |
指定的 Amazon Cognito 角色沒有許可,無法描述與您的網域相關聯之使用者集區和身分集區。請確定角色許可政策允許 cognito-identity:DescribeIdentityPool 和 cognito-identity:DescribeUserPool 動作。請參閱 關於 CognitoAccessForAmazonOpenSearch角色 了解完整的許可政策。 |
未啟用 KMS 金鑰 | KMSKeyNotEnabled |
用來加密網域的 AWS Key Management Service (AWS KMS) 金鑰已停用。立即重新啟用金鑰。 |
自訂憑證未處於 ISSUED (已發行) 狀態 | InvalidCertificate |
如果您的網域使用自訂端點,您可以在 AWS Certificate Manager (ACM) 中產生 SSL 憑證或匯入您自己的端點來保護它。憑證狀態必須為 Issued (已發佈)。如果您收到此錯誤,在 ACM 主控台中檢查憑證的狀態。如果狀態為 Expired (已過期)、Failed (失敗)、Inactive (非作用中) 或者 Pending validation (待定驗證),請參閱 ACM 疑難排解文件以解決該問題。 |
沒有足夠的容量來啟動選擇的執行個體類型 | InsufficientInstanceCapacity |
請求的執行個體類型容量不可用。例如,您可能已請求五個 |
叢集中的紅色索引 | RedCluster |
叢集中的一個或多個索引具有紅色狀態,這導致整體紅色叢集狀態。若要進行疑難排解並修正此問題,請參閱 紅色叢集狀態。 |
對記憶體斷路器的請求太多 | TooManyRequests |
您的網域有太多搜尋和寫入要求,因此 OpenSearch Service 無法更新其設定。您可以減少請求數量,將執行個體垂直擴展到 64 GiB 的 RAM,或者透過新增執行個體進行水平擴展。 |
新組態無法存放資料 (磁碟空間不足) | InsufficientStorageCapacity |
設定的儲存空間大小無法存放您網域上的所有資料。若要解決此問題,請選擇更大的磁碟區、刪除未使用的索引 |
固定到特定節點的碎片 | ShardMovementBlocked |
網域中的一個或多個索引會連接至特定節點,且無法重新指派。這很可能是因為您已設定碎片分配篩選,這可讓您指定允許哪些節點託管特定索引的碎片。 若要解決此問題,請從所有受影響的索引中移除碎片分配篩選條件:
|
新組態無法存放所有碎片 (碎片計數) | TooManyShards |
網域上的碎片計數太高,這會導致 OpenSearch Service 無法將它們移至新的組態。若要解決此問題,請新增與目前叢集節點相同的組態類型的節點,以便水平擴展您的網域。請注意,EBS 磁碟區大小上限取決於節點的執行個體類型。 若要避免將來發生此問題,請參閱 選擇碎片數 並定義適用於您的使用案例的碎片策略。 |
與您的網域相關聯的子網路不支援 IPv4 位址 |
|
若要解決此問題,請根據網域的設定 IP 位址類型,建立子網路或更新 VPC 中的現有子網路。如果您的網域僅使用 IPv4 位址類型,請使用僅限 IPv4 的子網路。如果您的網域使用雙堆疊模式,請使用雙堆疊子網路。 |
與您的網域相關聯的子網路不支援 IPv6 位址 |
|
若要解決此問題,請根據網域的設定 IP 位址類型,建立子網路或更新 VPC 中的現有子網路。如果您的網域僅使用 IPv4 位址類型,請使用僅限 IPv4 的子網路。如果您的網域使用雙堆疊模式,請使用雙堆疊子網路。 |