全部產品
Search
文件中心

Elasticsearch:縮容叢集資料節點

更新時間:Jun 30, 2024

當您的業務處於流量低峰期或叢集中的資料量減少時,可通過Elasticsearch的資料節點縮容功能,減少叢集中資料節點的數量。本文介紹如何縮容叢集中的資料節點。

前提條件

在Kibana控制台執行以下命令,檢查叢集中是否存在狀態為close的索引。如果存在,需要將對應索引的狀態暫時設定為open,否則變更不成功。

  • 查看索引狀態

    GET /_cat/indices?v

    查看索引狀態

  • 將close狀態的索引暫時設定為open狀態

    POST /<index_name>/_open

    <index_name>需要替換為狀態為close的索引名稱。

注意事項

  • 縮容叢集資料節點操作會觸發叢集重啟,叢集變更後重啟實際時間長度與叢集規模、資料量及負載情況等有關係,建議在低峰期操作。

  • 如果叢集索引存在副本分區且叢集負載處於正常水平(CPU使用率在60%左右,堆記憶體使用量率在50%左右,load_1m低於CPU核心數),一般情況下,在叢集重啟過程中可持續對外提供服務。

  • Elasticsearch分區高可用要求備份分區和主分區不能分布在同一節點上。對於單可用性區域執行個體,過多的分區數可能會影響變更,建議副本分區數小於縮容後資料節點個數-1或副本設定為1。對於多可用性區域執行個體,在變更時,需要確保叢集中任意一個索引的副本數都小於可用性區域數。待變更完成後,您可以根據業務手動增加副本數。詳細資料請參見索引模板

  • 如果叢集負載過高且索引沒有副本,同時在縮容過程中存在大量寫入或查詢等情況,在縮容過程中可能會出現訪問逾時的問題。建議在縮容前,在用戶端中配置好重試機制,減小對業務的影響。

縮容資料節點

  1. 登入Elasticsearch控制台
  2. 在左側導覽列,單擊Elasticsearch執行個體
  3. 進入目標執行個體。
    1. 在頂部功能表列處,選擇資源群組和地區。
    2. Elasticsearch執行個體中單擊目標執行個體ID。
  4. 基本資料頁面,選擇配置變更 > 叢集資料節點縮容

  5. 縮容配置地區,選擇節點類型縮節點個數

  6. 縮容資料節點選擇:

    • 支援智能選擇節點。

      校正通過後,單擊確定,系統自動進行待下線節點的資料搬遷和節點下線。

      說明

      如果校正不通過,您需要根據頁面提示處理異常結果,處理後再重新進行縮容操作。

    • 支援使用者自訂選擇節點。具體操作如下:

      1. 在節點列表中單擊選擇需要縮減的資料節點。

        選擇後,Elasticsearch會對待縮容的節點進行校正。如果校正不通過,您需要根據頁面提示處理異常結果,處理後再重新進行縮容操作。

        檢查項

        正常狀態

        叢集健康狀態

        叢集狀態正常(綠色)。

        索引的allocation配置

        allocation配置為all,即cluster.routing.allocation.enable: all,表示允許將所有類型的分區分配到對應節點上。

        索引的副本分布

        不同副本分布在不同節點上。

        縮容後,執行個體的剩餘節點數

        大於等於2。對於多可用性區域執行個體,還需確保每個可用性區域節點數大於等於2,且每個可用性區域剩餘節點數相同。

        資料移轉的目標節點的磁碟大小

        縮容時,如果需要進行資料移轉,遷移後節點的磁碟使用率不超過75%。

        資料移轉的目標節點的記憶體

        縮容時,如果需要進行資料移轉,遷移後節點的記憶體使用量率不超過70%。

        節點的shard個數

        被縮容節點的shard個數為0。

      2. 遷移資料。

        為保證資料的安全,進行縮容的資料節點中不應該存在資料。如果所選資料節點中有資料,系統會提示您進行資料移轉。遷移後所選節點上不再有任何索引資料,新的索引資料也不會被寫入該節點。

        1. 單擊提示欄中的資料移轉協助工具輔助

          資料移轉協助工具輔助

          資料移轉協助工具輔助通過Elasticsearch分區過濾器實現資料平滑遷移,資料移轉過程業務無感知。

        2. 叢集資料節點遷移對話方塊,選擇節點遷移方式。

          參數

          說明

          系統建議

          通過系統建議自動選擇需要遷移的資料節點。

          自訂

          手動選擇需要遷移的資料節點。

        3. 選中資料移轉協議,單擊確認

          確認後,叢集會進行重啟。重啟時,可在工作清單中查看資料移轉任務的進度,重啟成功後,即可完成叢集中對應資料節點的資料移轉任務。

          說明

          資料移轉過程中,可以在工作清單中單擊中斷變更,停止遷移任務。

      3. 在執行個體的基本資料頁面,再次選擇配置變更 > 叢集資料節點縮容

      4. 縮容配置地區,選擇已經完成資料移轉的節點,單擊確定

縮容時叢集會進行重啟。可在工作清單中查看縮容任務的進度,重啟成功後,即可完成叢集資料節點的縮容。

遷移復原

資料移轉是一個周期很長的過程,在此期間叢集狀態和資料的變更可能會導致遷移失敗,具體可在工作清單中查看。當資料移轉失敗或者遷移完成後,可通過以下步驟對遷移節點進行復原:

  1. 登入目標Elasticsearch執行個體的Kibana控制台,根據頁面提示進入Kibana首頁。
    登入Kibana控制台的具體操作,請參見登入Kibana控制台
    說明 本文以Elasticsearch 6.7.0版本為例,其他版本操作可能略有差別,請以實際介面為準。
  2. 在左側導覽列,單擊Dev Tools
  3. Console中執行以下命令,擷取遷移節點的IP地址。

    GET _cluster/settings

    執行成功後,返回如下結果。

    {
      "transient": {
        "cluster": {
          "routing": {
            "allocation": {
              "exclude": {
                "_ip": "192.168.xx.xx,192.168.xx.xx,192.168.xx.xx"
              }
            }
          }
        }
      }
    }                        
  4. 執行以下命令,復原遷移節點資料。

    • 復原部分節點資料。配置中要去掉需要復原的節點,但要保留不復原的節點。

      PUT _cluster/settings
      {
        "transient": {
          "cluster": {
            "routing": {
              "allocation": {
                "exclude": {
                  "_ip": "192.168.xx.xx,192.168.xx.xx"
                }
              }
            }
          }
        }
      }
    • 復原全部節點資料。

      PUT _cluster/settings
      {
        "transient": {
          "cluster": {
            "routing": {
              "allocation": {
                "exclude": {
                  "_ip": null
                }
              }
            }
          }
        }
      }                            
  5. 執行以下命令,校正是否完成資料復原。

    GET _cluster/settings

    執行成功後,如果返回結果中不包含遷移節點的IP地址,則表示已經完成該節點的遷移復原任務。您也可以通過觀察相應節點是否被重新分配shard來判斷。

    說明

    資料移轉或復原時,均可以通過GET _cat/shards?v命令查看任務狀態。

常見問題