ES集群重啟預(yù)案
es每個節(jié)點均是有狀態(tài)韭畸,不同索引分片配置設(shè)置不同宇智,單個分片可能有冗余,可能有1備份胰丁。因此随橘,為不影響服務(wù),升級或者重啟es服務(wù)需要逐個依次進(jìn)行(滾動重啟)
注:重啟操作應(yīng)在集群狀態(tài)為green時進(jìn)行锦庸,重啟任一一個節(jié)點前后机蔗,都要保證在集群狀態(tài)恢復(fù)到green狀態(tài)時。
步驟1-禁用分片分配
如果不禁止甘萧,當(dāng)停止某一節(jié)點后萝嘁,分片分配進(jìn)程會進(jìn)行UNASSIGNED分片的分配(當(dāng)集群狀態(tài)達(dá)到recovery要求,觸發(fā)恢復(fù)閾值時)扬卷。這樣的情況下牙言,會造成大量的IO操作。但是禁用分片后邀泉,功能上會禁止新建索引嬉挡。
curl -X PUT http://0.0.0.0:9200/_cluster/settings?pretty -d '{"transient": {"cluster.routing.allocation.enable": "none"}}'
步驟2-驗證修改后的配置:
curl -X GET http://0.0.0.0:9200/_cluster/settings?pretty
步驟3-執(zhí)行同步刷新
這一步操作的原因是:當(dāng)有分片在集群重啟過程中并沒有發(fā)生更新,則跳過對這些分片的同步校驗汇恤,提高分片恢復(fù)的速度
curl -XPOST "http://0.0.0.0:9200/_flush/synced?pretty"
步驟4-重啟client-node節(jié)點
重啟client-node組節(jié)點有小概率導(dǎo)致寫入丟失(由于LB的輪詢策略:當(dāng)一個節(jié)點離線后庞钢,10s內(nèi)不會再將請求分配到該節(jié)點∫蚧眩可以通過不要立即重啟另外的client節(jié)點來避免此問題)
子步驟1--重啟一個client-node組的節(jié)點
子步驟2--確認(rèn)節(jié)點加入集群
通過命令查看集群狀態(tài)和查看節(jié)點數(shù)
curl -XGET http://0.0.0.0:9200/_cluster/health?pretty
子步驟3--按照子步驟1-2重啟剩余的client-node節(jié)點
步驟5-重啟master節(jié)點
子步驟1--重啟一個master-node的非master節(jié)點
子步驟2--確認(rèn)節(jié)點加入集群
子步驟3--重復(fù)子步驟1-2重啟剩余的非master節(jié)點
子步驟4--重復(fù)子步驟1-2重啟剩余的master節(jié)點
子步驟5--檢查master是否重新選舉成功(30s后會開始選舉:原因discovery.zen.ping_timeout:30s)
master選舉過程中會堵塞寫操作基括,對search無影響,堵塞API的操作
步驟6-重啟data-node節(jié)點
子步驟1--重啟一個data-node組的data-node節(jié)點
子步驟2--確認(rèn)節(jié)點加入集群
子步驟3--重復(fù)子步驟1-2重啟剩余的data節(jié)點
步驟7-啟用分片分配
curl -X PUT http://0.0.0.0:9200/_cluster/settings?pretty -d '{"transient": {"cluster.routing.allocation.enable": "all"}}'