天天看點

【最佳實踐】Logstash高效的資料索引遷移能力—如何實作從騰訊雲Elasticsearch遷移至阿裡雲

本文字數:1655

閱讀時間:3~5分鐘

以下是正文

搜尋釘釘群号:21737292 ,加入阿裡雲Elasticsearch官方社群

遷移方案選取

由于騰訊雲ES版本與阿裡雲ES版本不一緻,需要選擇相容的版本進行遷移,本文支援的版本方案如下(其他方案不保證相容):

  • 騰訊雲ES 5.6.4 -> ECS(Logstash 5.6.x)-> 阿裡雲ES 5.5.6
  • 騰訊雲ES 6.4.3 -> ECS(Logstash 6.7.0)-> 阿裡雲ES 6.7.0
  • 騰訊雲ES 6.4.3 -> 阿裡雲Logstash 6.7.0 -> 阿裡雲ES 6.7.0(本文以此為例)

注意 由于騰訊雲ES版本分别與阿裡雲ES版本不一緻,是以建議您在大版本内進行資料同步,不建議跨大版本同步。關于Logstash版本選取詳情,請參見[Support Matrix](連結位址

https://www.elastic.co/cn/support/matrix#matrix_compatibility

解決方案

您可以通過以下步驟來遷移Elasticsearch索引:

  1. 建立阿裡雲Elasticsearch執行個體 阿裡雲Logstash執行個體 。在遷移過程中,需要連接配接公網才能與騰訊雲ES互通。由于Logstash執行個體部署在VPC下,可以通過配置NAT網關實作與公網的連通,詳情請參見 公網資料導入和導出常見問題

    說明 對于自建的Logstash,需要購買與阿裡雲ES在同一可用區、同一VPC下的ECS執行個體(已符合條件的ECS不需要重複購買,需要綁定彈性公網IP)。您也可以購買經典網絡的ECS執行個體(不建議),但需要配置Classiclink,實作通過經典網絡通路專有網絡中的阿裡雲ES,詳情請參見

    通過經典網絡通路ES常見問題
  2. 建立騰訊雲ES執行個體,并搭建騰訊雲代理伺服器。由于騰訊雲Elasticsearch不支援公網直接通路,是以您需要準備cvm伺服器搭建nginx代理,詳情請參見 外網通路騰訊ES叢集
  3. 修改Logstash的yml檔案配置。目前阿裡雲Logstash隻支援通過kibana方式,修改yml檔案的pipeline配置,詳情請參見 通過Kibana配置Pipeline 。您也可以使用自建Logstash,需要安裝JDK(1.8及以上版本)以及相應版本的Logstash,然後在Logstash的conf下配置yml檔案,并啟動服務,詳情請參見 Logstash部署
  4. 在目标端使用

    `

    GET /_cat/indices?v

`

檢視索引是否遷移成功。

本案例以使用阿裡雲Logstash,将Elasticsearch(簡稱ES)索引從騰訊雲ES遷移至阿裡雲ES中為例,具體實施步驟如下。

配置Logstash pipeline

以下為您介紹使用阿裡雲Logstash,通過Kibana方式配置pipeline的方法。

在配置pipeline前,您需要首先完成

,以及

解決方案概述

中的前兩步。

說明 您也可以使用自建Logstash,需要安裝JDK(1.8及以上版本)以及相應版本的Logstash,然後在Logstash的conf下配置yml檔案,并啟動服務,詳情請參見

Logstash部署。
  1. 登入ES執行個體的Kibana控制台
  2. 單擊左側導航欄的Management。
  3. 在Management頁面,單擊Logstash下的Pipelines。
  4. 在Pipelines頁面中,單擊Create pipeline。
【最佳實踐】Logstash高效的資料索引遷移能力—如何實作從騰訊雲Elasticsearch遷移至阿裡雲
  1. 在Create pipeline頁面,輸入Pipeline ID和Description,并根據需求配置其他參數。本文的Pipeline參數配置如下,其他參數說明請參見
input {
     elasticsearch {
       hosts => "http://xxxxxxxxx:9200"
       user  => "elastic"
       index => "*"
       password => "xxxxxx"
       docinfo => true
     }
   }
output {
      elasticsearch {
        hosts => "http://xxxxxxx.elasticsearch.aliyuncs.com:9200"
        user => "elastic"
        password => "xxxxxx"
        index => "%{[@metadata][_index]}"
        document_type => "%{[@metadata][_type]}"
        document_id => "%{[@metadata][_id]}"
  }
}
           
【最佳實踐】Logstash高效的資料索引遷移能力—如何實作從騰訊雲Elasticsearch遷移至阿裡雲
  1. 其他參數詳情請參見 input插件說明
  • 以上配置将源ES叢集的所有索引同步到目标叢集中,您也可以設定隻同步指定的索引,input配置如下。
input {
     elasticsearch {
       hosts => "http://xxxxxxxx:9200"
       user  => "elastic"
       index => "alicloudtest"
       password => "xxxxxxx"
       query => '{ "query":{ "query_string": { "query": "*" } } }'
       docinfo => true
     }
           
  • Elasticsearch input插件是根據配置的query語句,從ES叢集讀取文檔資料。适用于批量導入測試日志、重索引等操作。預設一次query抽取完資料後,worker會自動關閉。如果想要實作定時觸發同步動作,可以使用cron文法,配合schedule屬性的配置實作,詳情請參見 Logstash官網Scheduling介紹
schedule => "* * * * *"           
  • 以上示例會每分鐘觸發抽取。如果沒有指定schedule參數,那麼抽取僅執行一次。

關聯Logstash與ES執行個體

  1. 進入Logstash執行個體管理頁面
  2. 單擊左側導航欄的管道管理。
  3. 在管道管理頁面,單擊關聯Elasticsearch執行個體右側的修改。
    【最佳實踐】Logstash高效的資料索引遷移能力—如何實作從騰訊雲Elasticsearch遷移至阿裡雲

目前Logstash的管道管理方式僅支援集中式管道管理。您需要首先在所要關聯的ES執行個體的Kibana控制台中,建立和配置Logstash管道。

  1. 在修改配置頁面,選擇Elasticsearch執行個體,并輸入ES執行個體的使用者名和密碼。使用者名為所選的ES叢集的使用者名(一般為elastic),密碼為建立叢集時設定的密碼。
  2. 單擊測試連通性并擷取管道清單。連通成功後,系統顯示管道ID下拉框。
  3. 選擇管道ID。管道ID對應您在 時,配置的Pipeline ID。如果您還沒有管道ID,可單擊前往建立連結,前往所選Elasticsearch執行個體的Kibana控制台建立并配置管道,詳情請參見
    【最佳實踐】Logstash高效的資料索引遷移能力—如何實作從騰訊雲Elasticsearch遷移至阿裡雲

管道建立成功後,傳回Logstash管道管理的修改配置頁面,再次單擊測試連通性并擷取管道清單,擷取新建立的管道ID。

【最佳實踐】Logstash高效的資料索引遷移能力—如何實作從騰訊雲Elasticsearch遷移至阿裡雲

警告 管道配置變更需要重新開機Logstash程序,請在不影響業務的情況下,繼續執行以下操作。

  1. 勾選重新開機Logstash程序注意事項,單擊确認。确認後,Logstash會進行重新開機。重新開機過程中,可在 任務清單 中檢視重新開機進度。重新開機成功後,即可完成Logstash執行個體的管道配置,并啟動相應的資料傳輸程序。

相關活動

【全鍊路雲上Elastic Stack】系列直播_第四場

直播主題:【阿裡雲Elasticsearch 輕量化資料管道解決方案——Logstash/Beats介紹】

直播時間:2020年1月14日 11:30~12:00

參與方式:掃碼加群,觀看直播

産品購買:

Elasticsearch增強版 Logstash
【最佳實踐】Logstash高效的資料索引遷移能力—如何實作從騰訊雲Elasticsearch遷移至阿裡雲

掃碼關注公衆号‘Elasticsearch技術’,收獲大咖最佳行業應用經驗

【最佳實踐】Logstash高效的資料索引遷移能力—如何實作從騰訊雲Elasticsearch遷移至阿裡雲