本文主要介紹當您的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需要滿足以下條件:
提前開啟自動建立索引功能或者在Elasticsearch上建立好索引
mappings
、settings
。未做白名單限制。
使用限制
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資料移轉至阿里雲。 |
操作流程
步驟一:配置支援PrivateLink功能的Server Load Balancer執行個體
目前,僅支援PrivateLink功能的Server Load Balancer執行個體作為終端節點服務的服務資源。通過PrivateLink實現在VPC間私網訪問服務前,您需要建立支援PrivateLink功能的Server Load Balancer執行個體,並配置相關監聽資訊。
終端節點服務是可以被其他VPC通過建立終端節點建立私網已連線的服務,待Server Load Balancer執行個體配置完成後,您需要建立終端節點服務。
在Elasticsearch控制台關聯Elasticsearch執行個體與步驟二中建立的終端節點服務。
目標執行個體與終端節點服務關聯成功後,即可擷取終端節點網域名稱,用於配置reindex白名單。
在Elasticsearch控制台將步驟四中擷取的網域名稱配置到目標執行個體的reindex白名單中,進行授權。
完成以上步驟後,即完成源執行個體與目標執行個體間的網路互連,可以進行資料移轉。
步驟一:配置支援PrivateLink功能的Server Load Balancer執行個體
建立Server Load Balancer執行個體。
確保Server Load Balancer執行個體的地區和後端添加的Elastic Compute Service的地區相同。詳情請參見建立支援PrivateLink功能的Server Load Balancer執行個體。
配置協議&監聽。選擇負載平衡協議為TCP,並配置連接埠號碼為9200。
詳情請參見配置協議&監聽。
配置後端伺服器,添加自建ES所在的ECS伺服器,並配置連接埠號碼為9200。
詳情請參見配置後端伺服器。
單擊下一步,按需配置健全狀態檢查,本文以預設值為例。
配置完成後,單擊提交,單擊知道了,根據頁面提示返回執行個體管理頁面,查看後端ECS執行個體的健全狀態檢查狀態。
當後端ECS執行個體的健全狀態檢查狀態為正常時,表示後端ECS執行個體可以正常處理負載平衡轉寄的請求了。
步驟二:建立終端節點服務
在頂部功能表列處,選擇要建立終端節點服務的地區。
本文以華東1(杭州)為例。
單擊建立終端節點服務,在服務建立頁面,按需選擇建立終端節點服務配置。
具體操作和詳細說明請參見建立和管理終端節點服務。本文使用的配置說明如下,未提及的參數按需選擇或保持預設。
參數
說明
選擇服務資源
選擇要承載流量的可用性區域,然後選擇與終端節點服務關聯的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中執行如下命令,進行資料移轉。
說明登入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。
可選:在資料移轉過程中,如果您需要擷取所有正在啟動並執行reindex請求狀態,請執行以下命令。
GET _tasks?detailed=true&actions=*reindex
查看資料移轉結果。
待資料移轉完成後,您可以通過執行以下命令查看資料移轉結果。
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" }'