Upgrade Elasticsearch from 2.x to 5.x

  1. 安裝 plugin
  2. 連線到 localhost:2812/_plugin/elasticsearch-migration
  1. 確定有用 snapshot 備份資料
>curl -XGET http://140.119.163.70:2812/_snapshot
{"_backup":{"type":"fs","settings":{"compress":"true","location":"/mnt/cluster/floodfire-backup/elasticsearch/snapshot/"}}}

> ls /mnt/cluster/floodfire-backup/elasticsearch/snapshot/
index                     meta-20170130-050001.dat  meta-20170501-050001.dat  snap-20170102-050001.dat  snap-20170320-050001.dat
indices                   meta-20170206-050001.dat  meta-20170508-050001.dat  snap-20170109-050001.dat  snap-20170403-050001.dat
meta-20161209-163329.dat  meta-20170213-050001.dat  meta-20170515-050001.dat  snap-20170115-223403.dat  snap-20170410-050001.dat
meta-2016120916.dat       meta-20170220-050001.dat  meta-20170522-050001.dat  snap-20170115-230141.dat  snap-20170417-050001.dat
meta-20161212-050001.dat  meta-20170227-050001.dat  meta-20170529-050001.dat  snap-20170116-050001.dat  snap-20170424-050001.dat
meta-20161219-050001.dat  meta-20170306-050001.dat  meta-20170605-050001.dat  snap-20170130-050001.dat  snap-20170501-050001.dat
meta-20161226-050001.dat  meta-20170313-050001.dat  meta-20170612-050001.dat  snap-20170206-050001.dat  snap-20170508-050001.dat
meta-20170102-050001.dat  meta-20170320-050001.dat  snap-20161209-163329.dat  snap-20170213-050001.dat  snap-20170515-050001.dat
meta-20170109-050001.dat  meta-20170403-050001.dat  snap-2016120916.dat       snap-20170220-050001.dat  snap-20170522-050001.dat
meta-20170115-223403.dat  meta-20170410-050001.dat  snap-20161212-050001.dat  snap-20170227-050001.dat  snap-20170529-050001.dat
meta-20170115-230141.dat  meta-20170417-050001.dat  snap-20161219-050001.dat  snap-20170306-050001.dat  snap-20170605-050001.dat
meta-20170116-050001.dat  meta-20170424-050001.dat  snap-20161226-050001.dat  snap-20170313-050001.dat  snap-20170612-050001.dat
  1. clusters migration check

檢查的結果看起來是有一個動作需要處理才能進行升級,是 X-pack 的 license 中 marvel-enable 這個設定的名稱被重新命名為 xpack.monitoring.enable,這會導致升級後無法使用 marvel (marvel-agent 已經 是 X-pack 中的一部分),所以才需要處理,這個設定是在 config/elasticseach.yml 中

修改完以後,重新啟動 elasticsearch 再檢查一次就沒問題了

因為 kopf 和 sql 這兩個 plugins 被標記維不會再支援(其實是有新的版本),因此也順便移除了

因為 delete-by-query 這個外掛的功能被加入到核心模組中,所以也可以移除的

因為 license 也是 x-pack 中的一部分,所以也移除了

  1. 做 reindexing 檢查
  1. 啟用或關閉 deprecation loggin

看說明沒有說到底需不需要啟用或關閉,但是首頁有說這個功能 only available in 2.x,推測 5.x 應該沒有這個功能,等同於 disabled 吧?!

那既然原本就是關閉,就不開啟試試看

開始升級

查到一個網頁說:

Elasticsearch 2.3.3 提供压缩包和软件包两种安装方式。压缩包只需解压,然后进入 bin 目录运行 Elasticsearch 脚本

該不會其實前面的工作都是為了要以軟件包方式安裝才需要的吧…😂

總之:

  1. download elasticsearch 5.4.1
  2. unzip
    比較一下解壓縮後的檔案和目錄,只有 data 和 logs 不同,logs 應該是系統運作產生的,data 還不確定,du -sh data/ 有 46 G,可能是匯入 elasticsearch 後的文件檔案(所以我想的應該沒錯,ES 和 lucene 依樣不需要資料庫)
  3. 2.4.1 只有幾個地方的 elasticsearch 有開啟設定
    1. network.host: 0.0.0.0
    2. http.port: 2812
    3. http.host: 0.0.0.0
    4. path.repo: ["/mnt/cluster/floodfire-backup/elasticsearch/snapshot"]
      這是 snapshot 的 path
    5. marvel.enable: true
      這個在 5.x 應該是可以不用動,因為用 migration 檢查的時候說 marvel-agent 已經是 x-pack 的一部分了

所以除了 marvel.enable 之外的部分我都加到了 5.4.1 的 config/elasticsearch.yml 中

到這邊使用 ./bin/elasticsearch 已經可以連線了

但是索引檢索會出現:

> {"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index","resource.type":"index_or_alias","resource.id":"platform","index_uuid":"_na_","index":"platform"}],"type":"index_not_found_exception","reason":"no such index","resource.type":"index_or_alias","resource.id":"platform","index_uuid":"_na_","index":"platform"},"status":404}

所我試著 copy data/… 到 5.4.1 (如果以後確定是要有這包東西,其實就不用複製資料檔案,直接用 5.4.1 的 elasticsearch 替換掉 2.4.1 中的檔案就好了),在做一次索引檢所:

DONE!

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s