全部產品
Search
文件中心

Elasticsearch:通過執行個體私網打通將自建Elasticsearch資料移轉至阿里雲

更新時間:Jun 30, 2024

本文主要介紹當您的Elasticsearch建立於新網路架構下時,如何通過執行個體私網串連打通網路後,使用reindex方式將ECS上自建的Elasticsearch中的資料移轉至Elasticsearch中,包括建立索引和遷移資料。

前提條件

  • 自建Elasticsearch需要滿足以下條件:

    • 所在的ECS的網路類型必須是專用網路(不支援Classiclink方式打通的ECS),且必須與Elasticsearch在同一個專用網路下。

    • 所在的ECS的安全性群組不能限制Elasticsearch執行個體的各節點IP(Kibana控制台可查看各節點的IP),且要開啟9200連接埠。

    • 已經與Elasticsearch執行個體連通。可在執行指令碼的機器上,使用curl -XGET http://<host>:9200驗證。

      說明

      您可以通過任意一台機器執行文檔中的指令碼,前提是該機器可以同時訪問自建Elasticsearch和Elasticsearch叢集的9200連接埠。

    • 準備自建Elasticsearch索引資料,本文以下圖中的source索引作為需要遷移的索引為例。source索引

  • Elasticsearch需要滿足以下條件:

    • 提前開啟自動建立索引功能或者在Elasticsearch上建立好索引mappingssettings

    • 未做白名單限制。

使用限制

2020年10月阿里雲ES進行了網路架構調整,新網路架構下的叢集跨叢集reindex需依賴Privatelink打通阿里雲ES叢集私網。您可以參見下表,依據您的業務情境選擇解決方案進行處理。

說明

2020年10月之前建立的ES叢集屬於舊網路架構,2020年10月及之後建立的ES叢集屬於新網路架構。

使用情境

ES叢集所處網路架構

解決方案

阿里雲ES叢集間的資料移轉

兩個ES叢集均建立於舊網路架構下。

reindex方式:阿里雲ES間跨叢集reindex

其中一個ES叢集建立於新網路架構下。

說明

另一個ES叢集可以建立於新網路架構,也可以建立於舊網路架構。

將ECS上自建的ES叢集中的資料移轉至阿里雲ES叢集中

阿里雲ES叢集建立於舊網路架構下。

reindex方式:通過reindex將自建ES資料移轉至阿里雲

阿里雲ES叢集建立於新網路架構下。

reindex方式:通過執行個體私網打通將自建Elasticsearch資料移轉至阿里雲

操作流程

  1. 步驟一:配置支援PrivateLink功能的Server Load Balancer執行個體

    目前,僅支援PrivateLink功能的Server Load Balancer執行個體作為終端節點服務的服務資源。通過PrivateLink實現在VPC間私網訪問服務前,您需要建立支援PrivateLink功能的Server Load Balancer執行個體,並配置相關監聽資訊。

  2. 步驟二:建立終端節點服務

    終端節點服務是可以被其他VPC通過建立終端節點建立私網已連線的服務,待Server Load Balancer執行個體配置完成後,您需要建立終端節點服務。

  3. 步驟三:配置Elasticsearch私網互連

    在Elasticsearch控制台關聯Elasticsearch執行個體與步驟二中建立的終端節點服務。

  4. 步驟四:擷取終端節點網域名稱

    目標執行個體與終端節點服務關聯成功後,即可擷取終端節點網域名稱,用於配置reindex白名單。

  5. 步驟五:配置reindex白名單

    在Elasticsearch控制台將步驟四中擷取的網域名稱配置到目標執行個體的reindex白名單中,進行授權。

  6. 步驟六:資料移轉

    完成以上步驟後,即完成源執行個體與目標執行個體間的網路互連,可以進行資料移轉。

步驟一:配置支援PrivateLink功能的Server Load Balancer執行個體

  1. 建立Server Load Balancer執行個體。

    確保Server Load Balancer執行個體的地區和後端添加的Elastic Compute Service的地區相同。詳情請參見建立支援PrivateLink功能的Server Load Balancer執行個體

  2. 配置協議&監聽。選擇負載平衡協議為TCP,並配置連接埠號碼為9200

    詳情請參見配置協議&監聽

  3. 配置後端伺服器,添加自建ES所在的ECS伺服器,並配置連接埠號碼為9200

    詳情請參見配置後端伺服器

  4. 單擊下一步,按需配置健全狀態檢查,本文以預設值為例。

  5. 配置完成後,單擊提交,單擊知道了,根據頁面提示返回執行個體管理頁面,查看後端ECS執行個體的健全狀態檢查狀態。

    當後端ECS執行個體的健全狀態檢查狀態為正常時,表示後端ECS執行個體可以正常處理負載平衡轉寄的請求了。

步驟二:建立終端節點服務

  1. 登入終端節點服務控制台

  2. 在頂部功能表列處,選擇要建立終端節點服務的地區。

    本文以華東1(杭州)為例。

  3. 單擊建立終端節點服務,在服務建立頁面,按需選擇建立終端節點服務配置。

    具體操作和詳細說明請參見建立和管理終端節點服務。本文使用的配置說明如下,未提及的參數按需選擇或保持預設。

    參數

    說明

    選擇服務資源

    選擇要承載流量的可用性區域,然後選擇與終端節點服務關聯的Server Load Balancer執行個體。

    Server Load Balancer執行個體作為服務資源與終端節點服務關聯,關聯的Server Load Balancer執行個體將接受來自您服務的使用者的網路訪問,終端節點服務的可用性區域與服務資源所在的主可用性區域一致。

    可以作為服務資源的Server Load Balancer執行個體必須滿足以下兩個條件:

    • 網路類型專用網路

    • 功能特性支援PrivateLink

    自動接受終端節點串連

    選擇是否自動接受終端節點的串連請求,建議選擇,取值含義如下:

    • :終端節點服務將自動接受終端節點的串連請求,通過終端節點能夠訪問服務。

    • :終端節點串連將處於已斷開狀態,等待服務管理員進行處理:

      • 如果服務管理員接受該終端節點對應的終端節點服務串連,通過終端節點將能夠訪問服務。

      • 如果服務管理員拒絕該終端節點對應的終端節點服務串連,通過終端節點無法訪問服務。

    是否支援同可用性區域優先

    選擇是否支援同可用性區域優先,建議選擇

  4. 單擊確定建立

步驟三:配置Elasticsearch私網互連

  1. 登入Elasticsearch控制台
  2. 在左側導覽列,單擊Elasticsearch執行個體
  3. 進入目標執行個體。
    1. 在頂部功能表列處,選擇資源群組和地區。
    2. Elasticsearch執行個體中單擊目標執行個體ID。
  4. 在左側導覽列,選擇配置與管理 > 安全配置

  5. 叢集網路設定地區,單擊配置執行個體私網串連右側的修改

  6. 配置執行個體私網串連面板,單擊+添加私網串連,選擇步驟二中建立的終端節點服務和目標訪問可用性區域,並選中系統提示資訊。

    選擇對應可用性區域

  7. 單擊確認,終端節點服務主動串連終端節點,串連成功後會顯示已串連

    串連成功

步驟四:擷取終端節點網域名稱

執行完以上步驟後,需要擷取終端節點網域名稱用於配置reindex白名單。

  1. 配置執行個體私網串連面板中,單擊目標終端節點ID

    單擊終端節點ID

  2. 終端節點串連頁簽,單擊目標終端節點ID前的展開符表徵圖,即可查看終端節點對應的網域名稱。

    擷取網域名稱

步驟五:配置reindex白名單

重要

該操作會觸發叢集重啟,建議在業務低峰期進行。

  1. 登入Elasticsearch控制台
  2. 在左側導覽列,單擊Elasticsearch執行個體
  3. 進入目標執行個體。
    1. 在頂部功能表列處,選擇資源群組和地區。
    2. Elasticsearch執行個體中單擊目標執行個體ID。
  4. 在左側導覽列,選擇配置與管理 > ES叢集配置

  5. YML檔案配置地區,單擊右側的修改配置

  6. YML檔案配置面板,修改其他Configure配置,將從步驟四中擷取的網域名稱配置至此處。

    程式碼範例:

    reindex.remote.whitelist: 'ep-bp1nitq0krp8yhcf****-cn-hangzhou-i.epsrv-bp1zczi0fgoc5qtv****.cn-hangzhou.privatelink.aliyuncs.com:9200'

    配置reindex白名單

  7. 單擊確定

步驟六:資料移轉

  1. 在Kibana控制台的Dev Tools中執行如下命令,進行資料移轉。

    說明

    登入Kibana控制台的具體步驟請參見登入Kibana控制台

    POST /_reindex?pretty
    {
    
      "source": {
    
        "remote": {
    
          "host": "http://ep-bp1nitq0krp8yhcf****-cn-hangzhou-i.epsrv-bp1zczi0fgoc5qtv****.cn-hangzhou.privatelink.aliyuncs.com:9200",
    
          "username": "elastic",
    
          "password": "Elastic@123***"
    
        },
    
        "index": "source",
        "size": 5000
    
      },
    
      "dest": {
    
        "index": "dest"
    
      }
    
    }

    更多資訊說明請參見reindex api

  2. 可選:在資料移轉過程中,如果您需要擷取所有正在啟動並執行reindex請求狀態,請執行以下命令。

    GET _tasks?detailed=true&actions=*reindex
  3. 查看資料移轉結果。

    待資料移轉完成後,您可以通過執行以下命令查看資料移轉結果。

    GET _cat/indices?

    如果目標端索引test中顯示健康狀態正常並且資料大小正常,則證明資料移轉成功。資料移轉結果

常見問題

問題:單索引資料量比較大,資料同步速度比較慢時,如何處理?

解決方案:

  • 由於reindex功能的底層實現原理是通過scroll方式實現的,所以您可以適當調大scroll size的大小或配置scroll slice,藉助scroll並行化機制提升效率。詳情請參見reindex api

  • 如果源端資料量較大,建議採用OSS快照方式。詳情請參見通過OSS將自建Elasticsearch資料移轉至阿里雲

  • 如果單索引資料量比較大,可以在遷移前將目標索引的副本數設定為0,重新整理時間設定為-1,以加快資料同步速度。待資料移轉完成後,再修改回來。

    // 遷移索引資料前可以先將索引複本數設為0,不重新整理,用於加快資料移轉速度。
    curl -u user:password -XPUT 'http://<host:port>/indexName/_settings' -d' {
            "number_of_replicas" : 0,
            "refresh_interval" : "-1"
    }'
    // 索引資料移轉完成後,可以重設索引複本數為1,重新整理時間1s(1s是預設值)。
    curl -u user:password -XPUT 'http://<host:port>/indexName/_settings' -d' {
            "number_of_replicas" : 1,
            "refresh_interval" : "1s"
    }'