1. 程式人生 > >ES運維--快速重啟

ES運維--快速重啟

啟動初始化時間長

修改es配置,重啟叢集成本巨大。ES叢集已有25T資料,27個節點,24個數據節點(熱盤12和hot節點,慢盤12個stale節點,3個mater節點),資料節點的啟動,加入集群后需要初始化全部索引,這個過程過程很慢。全部重啟一次可能要一天,非常耗時。重啟後經常遇到少量索引一直處於unassigned狀態,導致叢集一直是red狀態。

目標

有時調整配置,希望能快速重啟生效(能用api改的優先不停服務修改),減少es服務停頓時間。
master節點和stale節點修改配置可以隨時重啟。
hot資料節點最好在晚上或者週末重啟,重啟前最好先停止資料寫入。

發現啟動前如果事先關閉shard自動均衡,初始化索引速度會快得多。因此我們完善了下操作流程

調整後的重啟流程

A. 重啟master節點
注意事項:先把非當選的兩個master重啟(可以同時操作);重啟完成後,能在叢集裡看到兩個點都加入後,才能重啟最後一個master。master不需要恢復索引,沒有初始化,速度很快。

B. 重啟stale節點

注意事項:避開索引刪除、索引遷移等定時任務執行時間段(如果時間有重疊,可先禁用排程任務)
1. 先關閉叢集的shard分配(停止後新建索引將不會分配,index不能遷移,不會執行自動均衡)

curl -XPUT http://ip:port/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable":"none"}}'

2. 備份配置檔案,修改好所有配置(做好檢查,不要漏)
3. 第一步執行完後,要檢視es叢集狀態 curl 'ip:port/_cat/health?v'。等到relo、init、unassign這3項都變成0後,再操作下一步。(這個時間一定要等,磨刀不誤砍柴功,這個操作完成後對重啟初始化索引速度會大幅提高)
4. 重啟節點。索引都初始化好了,再操作下一個節點。注意:不同物理機上的節點可以同時重啟(最好不要同時啟動太多節點,慢盤上的分片多初始化時間會稍長些),但不要在同一個物理機上同時重啟多個節點。
節點啟動後首先會找master加入叢集,之後初始化本地索引分片資料,這個過程是CPU和IO密集型操作。
由於禁用了路由均衡分配,這個過程會比以前快得多。
5. 全部完成後要恢復分片分配

curl -XPUT http://ip:port/_cluster/settings -d '{"persistent":{"cluster.routing.allocation.enable":"all"}}'
curl -XPUT http://ip:port/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable":"all"}}'

C. 重啟hot節點
注意事項:避開索引建立、索引遷移等定時任務執行時間段(如果時間有重疊,可先禁用排程任務),在低峰操作(晚上或者週末)
1. 先停止所有資料寫入
2. 後續操作和重啟stale節點相同

D. 重啟整個叢集
順序是先啟master組(所有的master重啟完成後要停止叢集的shard自動均衡),再啟hot組節點,最後啟stale組節點