使用了 Elasticsearch 一段時間,因為跑的順順的也就一直沒有理它或更新它,不過最近發現新版本的 SIEM 功能還滿非常吸引我的,於是上官網看了一下更新的方法,而官方網站上說滾動式升級 Elasticsearch 僅支援:
- 次要版本之間
- 從 5.6 升到 6.8
- 從 6.8 升到 7.5.0
目前我的 Elasticsearch Cluster 主機分別為:
- master-01
- master-02
- node-01
版本均為 6.2.1
也就是說不能直接升級到 7.5.0 版,不過 Chris 很有實驗精神(其實想偷懶),於是就直接從 Elasticsearch 6.2.1 直接升到 7.5.0,最後的結果當然是以失敗收場,還好 Chris 在升級前都有做備份的習慣,所以失敗了之後在還原之前的狀態就好,之後只好乖乖照著官方文件做,一定要從 6.2.1 升到 6.8.0,再從 6.8.0 升到 7.5.0 就沒問題了,所以建議大家在升級前一定要做好備份喔。另外因為我的主要 master-01 效能比較好,為了在升級後也可以讓他繼續當主要的 master 我的升級順序為 node-1->master-01->master-02。
Cluster OS 版本為 CentOS,升級方式使用 rpm 步驟如下:
下載 Elasticsearch 6.8.0
將檔案下載到 /tmp/ 資料夾中
# cd /tmp/
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.0.rpm
下載 Elasticsearch 7.5.0
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.0-x86_64.rpm
這時候從 head 中應該可以看到 node-01 不見了變成 Unassigned
確認是否為更新版本
# rpm -qa | grep elasticsearch
如果沒有執行上面那行就直接啟用 Elasticsearch 服務會出現錯誤下面的錯誤
Warning: elasticsearch.service changed on disk. Run 'systemctl daemon-reload' to reload units.
這時候從 head 中應該可以看到 node-01 回來了
之後每個節點在重複 2~10 步就大功告成了
最後因為跳了一個大版本,一定要檢查每個節點跟運作是否正常喔。
Cluster OS 版本為 CentOS,升級方式使用 rpm 步驟如下:
1.下載更新檔
下載 Elasticsearch 6.8.0
將檔案下載到 /tmp/ 資料夾中
# cd /tmp/
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.0.rpm
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.0-x86_64.rpm
2.停用 shard 分配
# curl -X PUT -H "Content-Type: application/json" -d '{"persistent": {"cluster.routing.allocation.enable": "primaries"}}' "http://localhost:9200/_cluster/settings"3.停止不必要的索引並執行同步刷新(選用)
# curl -X POST -H "Content-Type: application/json" -d '{}' "http://localhost:9200/_flush/synced"4.停止機器學習作業和資料傳送相關的任務(選用)
# curl -X POST -H "Content-Type: application/json" -d '{}' "http://localhost:9200/_ml/set_upgrade_mode?enabled=true"5.停止 Elasticsearch 服務
# sudo systemctl stop elasticsearch.service這時候從 head 中應該可以看到 node-01 不見了變成 Unassigned
6.更新 Elasticsearch
# rpm -Uvh elasticsearch-6.8.0.rpm確認是否為更新版本
# rpm -qa | grep elasticsearch
7.執行systemctl daemon-reload
# systemctl daemon-reload如果沒有執行上面那行就直接啟用 Elasticsearch 服務會出現錯誤下面的錯誤
Warning: elasticsearch.service changed on disk. Run 'systemctl daemon-reload' to reload units.
8.啟用 Elasticsearch 服務
# sudo systemctl start elasticsearch.service9.重新啟用 shard 分配
# curl -X PUT -H "Content-Type: application/json" -d '{"persistent": {"cluster.routing.allocation.enable": null}}' "http://localhost:9200/_cluster/settings"這時候從 head 中應該可以看到 node-01 回來了
10.重新啟動機器學習作業(選用)
# curl -X POST -H "Content-Type: application/json" -d '{}' "http://localhost:9200/_ml/set_upgrade_mode?enabled=false"之後每個節點在重複 2~10 步就大功告成了
沒有留言:
張貼留言