本文主要介紹當您的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索引作為需要遷移的索引為例。
Elasticsearch需要滿足以下條件:
使用限制
2020年10月阿里雲ES進行了網路架構調整,新網路架構下的叢集跨叢集reindex需依賴Privatelink打通阿里雲ES叢集私網。您可以參見下表,依據您的業務情境選擇解決方案進行處理。
說明
2020年10月之前建立的ES叢集屬於舊網路架構,2020年10月及之後建立的ES叢集屬於新網路架構。
步驟一:配置支援PrivateLink功能的Server Load Balancer執行個體
建立Server Load Balancer執行個體。
配置協議&監聽。選擇負載平衡協議為TCP,並配置連接埠號碼為9200。
配置後端伺服器,添加自建ES所在的ECS伺服器,並配置連接埠號碼為9200。
單擊下一步,按需配置健全狀態檢查,本文以預設值為例。
配置完成後,單擊提交,單擊知道了,根據頁面提示返回執行個體管理頁面,查看後端ECS執行個體的健全狀態檢查狀態。
當後端ECS執行個體的健全狀態檢查狀態為正常時,表示後端ECS執行個體可以正常處理負載平衡轉寄的請求了。
步驟二:建立終端節點服務
登入終端節點服務控制台。
在頂部功能表列處,選擇要建立終端節點服務的地區。
單擊建立終端節點服務,在服務建立頁面,按需選擇建立終端節點服務配置。
具體操作和詳細說明請參見建立和管理終端節點服務。本文使用的配置說明如下,未提及的參數按需選擇或保持預設。
參數 | 說明 |
選擇服務資源 | 選擇要承載流量的可用性區域,然後選擇與終端節點服務關聯的Server Load Balancer執行個體。 Server Load Balancer執行個體作為服務資源與終端節點服務關聯,關聯的Server Load Balancer執行個體將接受來自您服務的使用者的網路訪問,終端節點服務的可用性區域與服務資源所在的主可用性區域一致。 可以作為服務資源的Server Load Balancer執行個體必須滿足以下兩個條件: 網路類型為專用網路。 功能特性為支援PrivateLink。
|
自動接受終端節點串連 | 選擇是否自動接受終端節點的串連請求,建議選擇是,取值含義如下: |
是否支援同可用性區域優先 | 選擇是否支援同可用性區域優先,建議選擇是。 |
單擊確定建立。
步驟三:配置Elasticsearch私網互連
- 登入Elasticsearch控制台。
- 在左側導覽列,單擊Elasticsearch執行個體。
- 進入目標執行個體。
- 在頂部功能表列處,選擇資源群組和地區。
- 在Elasticsearch執行個體中單擊目標執行個體ID。
在左側導覽列,選擇。
在叢集網路設定地區,單擊配置執行個體私網串連右側的修改。
在配置執行個體私網串連面板,單擊+添加私網串連,選擇步驟二中建立的終端節點服務和目標訪問可用性區域,並選中系統提示資訊。
單擊確認,終端節點服務主動串連終端節點,串連成功後會顯示已串連。
步驟四:擷取終端節點網域名稱
執行完以上步驟後,需要擷取終端節點網域名稱用於配置reindex白名單。
在配置執行個體私網串連面板中,單擊目標終端節點ID。
在終端節點串連頁簽,單擊目標終端節點ID前的
表徵圖,即可查看終端節點對應的網域名稱。
步驟五:配置reindex白名單
- 登入Elasticsearch控制台。
- 在左側導覽列,單擊Elasticsearch執行個體。
- 進入目標執行個體。
- 在頂部功能表列處,選擇資源群組和地區。
- 在Elasticsearch執行個體中單擊目標執行個體ID。
在左側導覽列,選擇。
在YML檔案配置地區,單擊右側的修改配置。
在YML檔案配置面板,修改其他Configure配置,將從步驟四中擷取的網域名稱配置至此處。
程式碼範例:
reindex.remote.whitelist: 'ep-bp1nitq0krp8yhcf****-cn-hangzhou-i.epsrv-bp1zczi0fgoc5qtv****.cn-hangzhou.privatelink.aliyuncs.com:9200'

單擊確定。
步驟六:資料移轉
在Kibana控制台的Dev Tools中執行如下命令,進行資料移轉。
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。
可選:在資料移轉過程中,如果您需要擷取所有正在啟動並執行reindex請求狀態,請執行以下命令。
GET _tasks?detailed=true&actions=*reindex
查看資料移轉結果。
待資料移轉完成後,您可以通過執行以下命令查看資料移轉結果。
如果目標端索引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"
}'