縮容集群數(shù)據(jù)節(jié)點
當您的業(yè)務(wù)處于流量低峰期或集群中的數(shù)據(jù)量減少時,可通過阿里云Elasticsearch的數(shù)據(jù)節(jié)點縮容功能,減少集群中數(shù)據(jù)節(jié)點的數(shù)量。本文介紹如何縮容集群中的數(shù)據(jù)節(jié)點。
前提條件
在Kibana控制臺執(zhí)行以下命令,檢查集群中是否存在狀態(tài)為close的索引。如果存在,需要將對應(yīng)索引的狀態(tài)暫時設(shè)置為open,否則變更不成功。
查看索引狀態(tài)
GET /_cat/indices?v
將close狀態(tài)的索引暫時設(shè)置為open狀態(tài)
POST /<index_name>/_open
<index_name>需要替換為狀態(tài)為close的索引名稱。
注意事項
縮容集群數(shù)據(jù)節(jié)點操作會觸發(fā)集群重啟,集群變更后重啟實際時長與集群規(guī)模、數(shù)據(jù)量及負載情況等有關(guān)系,建議在低峰期操作。
如果集群索引存在副本分片且集群負載處于正常水平(CPU使用率在60%左右,堆內(nèi)存使用率在50%左右,load_1m低于CPU核數(shù)),一般情況下,在集群重啟過程中可持續(xù)對外提供服務(wù)。
Elasticsearch分片高可用要求備份分片和主分片不能分布在同一節(jié)點上。對于單可用區(qū)實例,過多的分片數(shù)可能會影響變更,建議副本分片數(shù)小于縮容后數(shù)據(jù)節(jié)點個數(shù)-1或副本設(shè)置為1。對于多可用區(qū)實例,在變更時,需要確保集群中任意一個索引的副本數(shù)都小于可用區(qū)數(shù)。待變更完成后,您可以根據(jù)業(yè)務(wù)手動增加副本數(shù)。詳細信息請參見索引模板。
如果集群負載過高且索引沒有副本,同時在縮容過程中存在大量寫入或查詢等情況,在縮容過程中可能會出現(xiàn)訪問超時的問題。建議在縮容前,在客戶端中配置好重試機制,減小對業(yè)務(wù)的影響。
縮容數(shù)據(jù)節(jié)點
- 登錄阿里云Elasticsearch控制臺。
- 在左側(cè)導(dǎo)航欄,單擊Elasticsearch實例。
- 進入目標實例。
- 在頂部菜單欄處,選擇資源組和地域。
- 在Elasticsearch實例中單擊目標實例ID。
在基本信息頁面,選擇 。
在縮容配置區(qū)域,選擇節(jié)點類型和縮節(jié)點個數(shù)。
縮容數(shù)據(jù)節(jié)點選擇:
支持智能選擇節(jié)點。
校驗通過后,單擊確定,系統(tǒng)自動進行待下線節(jié)點的數(shù)據(jù)搬遷和節(jié)點下線。
說明如果校驗不通過,您需要根據(jù)頁面提示處理異常結(jié)果,處理后再重新進行縮容操作。
支持用戶自定義選擇節(jié)點。具體操作如下:
在節(jié)點列表中單擊選擇需要縮減的數(shù)據(jù)節(jié)點。
選擇后,阿里云Elasticsearch會對待縮容的節(jié)點進行校驗。如果校驗不通過,您需要根據(jù)頁面提示處理異常結(jié)果,處理后再重新進行縮容操作。
檢查項
正常狀態(tài)
集群健康狀態(tài)
集群狀態(tài)正常(綠色)。
索引的allocation配置
allocation配置為all,即
cluster.routing.allocation.enable: all
,表示允許將所有類型的分片分配到對應(yīng)節(jié)點上。索引的副本分布
不同副本分布在不同節(jié)點上。
縮容后,實例的剩余節(jié)點數(shù)
大于等于2。對于多可用區(qū)實例,還需確保每個可用區(qū)節(jié)點數(shù)大于等于2,且每個可用區(qū)剩余節(jié)點數(shù)相同。
數(shù)據(jù)遷移的目標節(jié)點的磁盤大小
縮容時,如果需要進行數(shù)據(jù)遷移,遷移后節(jié)點的磁盤使用率不超過75%。
數(shù)據(jù)遷移的目標節(jié)點的內(nèi)存
縮容時,如果需要進行數(shù)據(jù)遷移,遷移后節(jié)點的內(nèi)存使用率不超過70%。
節(jié)點的shard個數(shù)
被縮容節(jié)點的shard個數(shù)為0。
遷移數(shù)據(jù)。
為保證數(shù)據(jù)的安全,進行縮容的數(shù)據(jù)節(jié)點中不應(yīng)該存在數(shù)據(jù)。如果所選數(shù)據(jù)節(jié)點中有數(shù)據(jù),系統(tǒng)會提示您進行數(shù)據(jù)遷移。遷移后所選節(jié)點上不再有任何索引數(shù)據(jù),新的索引數(shù)據(jù)也不會被寫入該節(jié)點。
單擊提示欄中的數(shù)據(jù)遷移輔助工具。
數(shù)據(jù)遷移輔助工具通過Elasticsearch分片過濾器實現(xiàn)數(shù)據(jù)平滑遷移,數(shù)據(jù)遷移過程業(yè)務(wù)無感知。
在集群數(shù)據(jù)節(jié)點遷移對話框,選擇節(jié)點遷移方式。
參數(shù)
說明
系統(tǒng)建議
通過系統(tǒng)建議自動選擇需要遷移的數(shù)據(jù)節(jié)點。
自定義
手動選擇需要遷移的數(shù)據(jù)節(jié)點。
選中數(shù)據(jù)遷移協(xié)議,單擊確認。
確認后,集群會進行重啟。重啟時,可在任務(wù)列表中查看數(shù)據(jù)遷移任務(wù)的進度,重啟成功后,即可完成集群中對應(yīng)數(shù)據(jù)節(jié)點的數(shù)據(jù)遷移任務(wù)。
說明數(shù)據(jù)遷移過程中,可以在任務(wù)列表中單擊中斷變更,停止遷移任務(wù)。
在實例的基本信息頁面,再次選擇 。
在縮容配置區(qū)域,選擇已經(jīng)完成數(shù)據(jù)遷移的節(jié)點,單擊確定。
縮容時集群會進行重啟。可在任務(wù)列表中查看縮容任務(wù)的進度,重啟成功后,即可完成集群數(shù)據(jù)節(jié)點的縮容。
遷移回滾
數(shù)據(jù)遷移是一個周期很長的過程,在此期間集群狀態(tài)和數(shù)據(jù)的變更可能會導(dǎo)致遷移失敗,具體可在任務(wù)列表中查看。當數(shù)據(jù)遷移失敗或者遷移完成后,可通過以下步驟對遷移節(jié)點進行回滾:
- 登錄目標阿里云Elasticsearch實例的Kibana控制臺,根據(jù)頁面提示進入Kibana主頁。登錄Kibana控制臺的具體操作,請參見登錄Kibana控制臺。說明 本文以阿里云Elasticsearch 6.7.0版本為例,其他版本操作可能略有差別,請以實際界面為準。
- 在左側(cè)導(dǎo)航欄,單擊Dev Tools。
在Console中執(zhí)行以下命令,獲取遷移節(jié)點的IP地址。
GET _cluster/settings
執(zhí)行成功后,返回如下結(jié)果。
{ "transient": { "cluster": { "routing": { "allocation": { "exclude": { "_ip": "192.168.xx.xx,192.168.xx.xx,192.168.xx.xx" } } } } } }
執(zhí)行以下命令,回滾遷移節(jié)點數(shù)據(jù)。
回滾部分節(jié)點數(shù)據(jù)。配置中要去掉需要回滾的節(jié)點,但要保留不回滾的節(jié)點。
PUT _cluster/settings { "transient": { "cluster": { "routing": { "allocation": { "exclude": { "_ip": "192.168.xx.xx,192.168.xx.xx" } } } } } }
回滾全部節(jié)點數(shù)據(jù)。
PUT _cluster/settings { "transient": { "cluster": { "routing": { "allocation": { "exclude": { "_ip": null } } } } } }
執(zhí)行以下命令,校驗是否完成數(shù)據(jù)回滾。
GET _cluster/settings
執(zhí)行成功后,如果返回結(jié)果中不包含遷移節(jié)點的IP地址,則表示已經(jīng)完成該節(jié)點的遷移回滾任務(wù)。您也可以通過觀察相應(yīng)節(jié)點是否被重新分配shard來判斷。
說明數(shù)據(jù)遷移或回滾時,均可以通過
GET _cat/shards?v
命令查看任務(wù)狀態(tài)。