本文字數: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索引:
- 建立阿裡雲Elasticsearch執行個體 和 阿裡雲Logstash執行個體 。在遷移過程中,需要連接配接公網才能與騰訊雲ES互通。由于Logstash執行個體部署在VPC下,可以通過配置NAT網關實作與公網的連通,詳情請參見 公網資料導入和導出常見問題
。
說明 對于自建的Logstash,需要購買與阿裡雲ES在同一可用區、同一VPC下的ECS執行個體(已符合條件的ECS不需要重複購買,需要綁定彈性公網IP)。您也可以購買經典網絡的ECS執行個體(不建議),但需要配置Classiclink,實作通過經典網絡通路專有網絡中的阿裡雲ES,詳情請參見
通過經典網絡通路ES常見問題 - 建立騰訊雲ES執行個體,并搭建騰訊雲代理伺服器。由于騰訊雲Elasticsearch不支援公網直接通路,是以您需要準備cvm伺服器搭建nginx代理,詳情請參見 外網通路騰訊ES叢集
- 修改Logstash的yml檔案配置。目前阿裡雲Logstash隻支援通過kibana方式,修改yml檔案的pipeline配置,詳情請參見 通過Kibana配置Pipeline 。您也可以使用自建Logstash,需要安裝JDK(1.8及以上版本)以及相應版本的Logstash,然後在Logstash的conf下配置yml檔案,并啟動服務,詳情請參見 Logstash部署
- 在目标端使用
GET /_cat/indices?v`
,
`
檢視索引是否遷移成功。
本案例以使用阿裡雲Logstash,将Elasticsearch(簡稱ES)索引從騰訊雲ES遷移至阿裡雲ES中為例,具體實施步驟如下。
配置Logstash pipeline
以下為您介紹使用阿裡雲Logstash,通過Kibana方式配置pipeline的方法。
在配置pipeline前,您需要首先完成
,以及
解決方案概述中的前兩步。
說明 您也可以使用自建Logstash,需要安裝JDK(1.8及以上版本)以及相應版本的Logstash,然後在Logstash的conf下配置yml檔案,并啟動服務,詳情請參見
Logstash部署。- 登入ES執行個體的Kibana控制台
- 單擊左側導航欄的Management。
- 在Management頁面,單擊Logstash下的Pipelines。
- 在Pipelines頁面中,單擊Create 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]}"
}
}
- 其他參數詳情請參見 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執行個體
- 進入Logstash執行個體管理頁面
- 單擊左側導航欄的管道管理。
- 在管道管理頁面,單擊關聯Elasticsearch執行個體右側的修改。
【最佳實踐】Logstash高效的資料索引遷移能力—如何實作從騰訊雲Elasticsearch遷移至阿裡雲
目前Logstash的管道管理方式僅支援集中式管道管理。您需要首先在所要關聯的ES執行個體的Kibana控制台中,建立和配置Logstash管道。
- 在修改配置頁面,選擇Elasticsearch執行個體,并輸入ES執行個體的使用者名和密碼。使用者名為所選的ES叢集的使用者名(一般為elastic),密碼為建立叢集時設定的密碼。
- 單擊測試連通性并擷取管道清單。連通成功後,系統顯示管道ID下拉框。
- 選擇管道ID。管道ID對應您在 時,配置的Pipeline ID。如果您還沒有管道ID,可單擊前往建立連結,前往所選Elasticsearch執行個體的Kibana控制台建立并配置管道,詳情請參見
【最佳實踐】Logstash高效的資料索引遷移能力—如何實作從騰訊雲Elasticsearch遷移至阿裡雲
管道建立成功後,傳回Logstash管道管理的修改配置頁面,再次單擊測試連通性并擷取管道清單,擷取新建立的管道ID。
警告 管道配置變更需要重新開機Logstash程序,請在不影響業務的情況下,繼續執行以下操作。
- 勾選重新開機Logstash程序注意事項,單擊确認。确認後,Logstash會進行重新開機。重新開機過程中,可在 任務清單 中檢視重新開機進度。重新開機成功後,即可完成Logstash執行個體的管道配置,并啟動相應的資料傳輸程序。
相關活動
【全鍊路雲上Elastic Stack】系列直播_第四場
直播主題:【阿裡雲Elasticsearch 輕量化資料管道解決方案——Logstash/Beats介紹】
直播時間:2020年1月14日 11:30~12:00
參與方式:掃碼加群,觀看直播
産品購買:
Elasticsearch增強版 Logstash掃碼關注公衆号‘Elasticsearch技術’,收獲大咖最佳行業應用經驗