ElasticSearch重启策略
關(guān)閉數(shù)據(jù)平衡
當(dāng)我們試圖關(guān)閉一個節(jié)點時,ES會立即試圖復(fù)制這個節(jié)點中的數(shù)據(jù)到集群中其他節(jié)點上,這個過程會造成大量的IO請求,在關(guān)閉該節(jié)點的時候可以通過設(shè)置一下參數(shù)來避免此問題的發(fā)生:
curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d' {"persistent": {"cluster.routing.allocation.enable": "none"} }transient與persistent的區(qū)別見:這里
僅僅做這一步還是不夠的,即使數(shù)據(jù)沒有發(fā)生變化,仍然會出現(xiàn)大量主副分片之間的數(shù)據(jù)拷貝。原因是在于recovery是簡單的對比主副分片的segment file(分段文件)來判斷哪些數(shù)據(jù)一致是可以本地恢復(fù),哪些不一致的需要重新拷貝的。而不同節(jié)點的segment file是完全獨立運行的,這可能導(dǎo)致主副本merge的深度不完全一致,從而造成及時文檔集完全一樣,而產(chǎn)生的segment file卻不完全一樣。
因此通過synced flush(同步刷新)為對應(yīng)的shard加入一個synced flush id,這樣在節(jié)點重啟后,先對比主副shard的synced flush id,就可以知道兩個shard是否完全相同,避免了不必要的segment file拷貝。
同步刷新
執(zhí)行同步刷新,當(dāng)停止一個索引時,分片的恢復(fù)會很快,所以要進(jìn)行同步刷新請求:
POST _flush/synced當(dāng)有分片在集群重啟過程中并沒有發(fā)生更新,則跳過對這些分片的同步校驗,提高分片恢復(fù)的速度。
原理是當(dāng)沒有索引操作時,id 標(biāo)記會添加到分片上。標(biāo)記可以作為一個快速的方式來檢查兩個分片的lucene索引一致是否一致;這種快速的id 比較主要用于 數(shù)據(jù)恢復(fù)或者重啟后跳過第一個也是成本最高的階段;這種情況下,segment 不需要copy,事務(wù)日志的重演會立即執(zhí)行;當(dāng)id 標(biāo)記和flush 一起用的時候,事物日志很可能為空,更加加速了數(shù)據(jù)的恢復(fù);
盡管很方便,但是有一些警告:
這是因為刷新會替換低級別的儲存標(biāo)記的lucene 提交點;事物日志中未提交的操作不會移除id 標(biāo)記;現(xiàn)實中,在任何時間,應(yīng)該把索引操作視觸發(fā)的移除標(biāo)記為刷新一樣;
note:有索引操作時,請求同步刷新是無害的;當(dāng)索引空閑時同步刷新成功,否則失敗;任何請求成功的同步刷新在數(shù)據(jù)恢復(fù)時更加迅速;
synced flush只對冷索引有效,對于熱索引(5分鐘內(nèi)有更新的索引)無效,如果重啟的節(jié)點包含有熱索引,那還是免不了大量的拷貝。
關(guān)閉和升級所有節(jié)點
停止在集群中的所有節(jié)點上的服務(wù)。每一個節(jié)點都要進(jìn)行單獨升級。這個主要就是文件替換操作,注意保留日志記錄。
啟動集群
先啟動master節(jié)點,然后在啟動data節(jié)點。
等待集群變?yōu)閥ellow
當(dāng)節(jié)點加入集群中后,它首先恢復(fù)存儲在本地的主分片數(shù)據(jù)。最初的時候,通過_cat/health請求發(fā)現(xiàn)集群的狀態(tài)是紅色,意味著不是所有的主分片都已分配。當(dāng)每個節(jié)點主分片恢復(fù)完后,集群的狀態(tài)將會變成yellow,這意味著所有主分片已經(jīng)分配,而副本分片沒有被分配。
分配副本分片
延遲副本的分配直到所有節(jié)點都加入集群,在集群的所有節(jié)點,可以重新啟用副本分配:
curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d' {"persistent": {"cluster.routing.allocation.enable": "all"} }這個時候集群將開始復(fù)制所有副本到數(shù)據(jù)節(jié)點上,這樣可以安全恢復(fù)索引和搜索,如果能延遲索引和搜索直到所有的分片已經(jīng)恢復(fù),這樣可以加快集群的恢復(fù)。
總結(jié)
以上是生活随笔為你收集整理的ElasticSearch重启策略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Premiere Pro CC2017教
- 下一篇: Elasticsearch索引分析