AWS ElasticSearch 升級紀錄 5/6
目錄
本篇紀錄 AWS ES 升級相關資訊,這次是從版本 5.x 升到 6.x,因為敝 TEAM ES 資料龐大,為了不讓切換時影響 Prod ES ,擬定升級流程之外也需要 Dev/Stg 不同環境進行演練
升級流程與步驟
先看官方建議的流程 Upgrading Elasticsearch,而我後續實際執行的步驟可以這樣看:
-
修正 Breaking Changes 錯誤/設定/測試
-
執行資料轉移(底下仰賴 ES API 完成)
- Create the snapshot backups for ES V5 (透過 API 備份舊版 ES V5)
- Create the new V6 ES (建立新版 ES V6)
- Enable slow Log action (設定到 slow log action 收集到 CloudWatch)
- Register the snapshot repository (註冊備份用的 S3 Path )
- Delete the
.kibana
alias (刪除 V6 預設的.kibana
Alias) - Restore the snapshot of V5 (復原 V5 的資料到 V6 的 Instance)
- Delete the
.kibana
index (刪除 V6 內的 V5 .kibana index) - Create the alias named
.kibana
from.kibana_1
(根據 .kibana 從新建立 .kibana_1 的 alias) - Wait for green status (等待同步完成)
-
Kibana 設定匯出/匯入
- 利用 Kibana Web Console 匯出 Dashboard/Visualize/Search 等資料 (json file),等 V6 完成再匯入即可
注意V5 的 kibana 無法匯出 Index Pattern·。如果有 V6 的DEV 環境,可以先把 PROD 的 Index Pattern 轉過去再使用 V6 匯出功能就可以連同 Index Pattern 一起輸出,這邊也要注意是否有設定
scripted_fields
,如果轉移後有少會影響 Visualize 拉資料的轉換
- 利用 Kibana Web Console 匯出 Dashboard/Visualize/Search 等資料 (json file),等 V6 完成再匯入即可
-
確認其他 AWS Service 是否有正確轉換接到新的 ES 版本
- 如果有使用 Cloudformation 可能會搭配 SSM 的 Parameter Store 來管理 ELK Endpoint。確保相對應的 ELK 參數都有被更新為新版
Breaking Changes
- v6 不再支援 Multiple Mapping types
- v6 不再需要做 Store throttling
- v6 有幾個重要的 Mapping 調整
- ES Doc - Mapping changes
string
fields replaced bytext/keyword
fieldsindex
property only accepttrue/false
- 其他檢查清單
Elasticsearch RESTful API
使用 ES 提供的 RESTful API 來備份、編輯 Index 及 Alias、刪除復原等動作。
Blue/Green Deployments
操作同時,Create ES V6 跟 Enable Slow log action 要分開做沒辦法一次到位,同時要注意 Blue/Green deployments,最後真的要做的時候可以把會進行 Blue/Green 的修改盡可能安排在一起,避免 Instance 數量很多的時候觸發會噴更多 $$$.
Enabling or disabling the publication of error logs or slow logs to CloudWatch