elasticsearch 升級 1.x --> 2.x
YO! ElasticSearch 1.x 升級 2.x 的一些小心得
來一段多餘的前言
為了不寫半行程式碼的方式完成學校的作業,我還是選擇了用ELK中的E跟K來偷懶一下,做一下資料的統計啊~ 數量長條圖啊~ 之類的
不過因為裝了新版的Kibana,跟老師提供的ElasticSearch 1.x不合,所以花了很多時間在處理升級的事...,這之中實在充滿雷啊!!
升級ElasticSearch 1.x --> 2.x
最簡單就是參考這篇,不過我參考了還是弄了老半天
先來講解一下裡面每個步驟
1. Disable Shard allocation
shard 就是一個 Lucene index,至於Lucene,應該算是個檢索引擎
ElasticSearch平時會把資料分成多個shard然後再分別分在你所運行的node裡面
阿既然要升級,就先把shard allocation關掉,專心對付每個node
PUT /_cluster/settings { "persistent": { "cluster.routing.allocation.enable": "none" } }
2. Perform a Synced flush (optional)
這步主要是讓接下來shard在recover的時候快一點
POST /_flush/synced
3. Shutdown and upgrade all node
這邊就比較麻煩了
你可以選擇
- 安裝一個新版本的ElasticSearch,然後把conf跟data路徑指向舊版的位置
- 解開新版壓縮檔,然後把除了data, config的都蓋過去
- 安裝一個新版本的,然後把舊版的config跟data拉到新版的資料夾下
在1.x --> 2.x 的時候,要注意舊版的config裡有一行
http.cors.enabled
會讓你Kibana不能用,所以記得拿掉
升級方法:
4. Start the Cluster
這邊就是把升級完的東西開起來,可以用一些指令看是否成功,檢查一下版本號對不對
GET _cat/health GET _cat/nodes
5. Wait for yellow
剛開起來後,會要等一段時間讓健康狀態從紅變黃,做一些剛剛提到的recover的動作,但不會全部replica shard都分配好,因為剛剛把shard allocation關掉了
6. Reenable Allocation
把在第一步關掉的shard allocation打開
這樣的話才能把健康狀況從黃色變成健康的綠色
PUT /_cluster/settings { "persistent": { "cluster.routing.allocation.enable": "all" } }
後記:
其實後面還有很多雷啊
來筆記一下
curl -XPUT 'http://ip:port/_cluster/settings' -d '{
"transient" : {
"cluster.routing.allocation.enable": "all"
}}'
- 這是單次的開啟shard allocation
- 可以用plugin -- migration來檢查是否可以成功升級
- 要改data位置,從elasticsearch.yml裡面改path.data path.data: 路徑....
- 如果外部連不到你的elasticsearch,把network.host改成0.0.0.0
- 要使用外部的config檔,在開啟elasticsearch時候 ./elasticsearch.bat --path.conf config資料夾路徑
留言
張貼留言