es大集羣切有副本的情況下如何重啓es集羣

當您需要執行羣集的滾動重新啓動時,將使羣集保持聯機和運行狀態,但一次使一個節點脫機。

常見原因是Elasticsearch版本升級或服務器本身的某種維護(例如OS更新或硬件)。無論如何,都有一種特殊的方法來執行滾動重啓。

從本質上講,Elasticsearch希望您的數據能夠完全複製並均衡。如果關閉單個節點進行維護,羣集將立即識別丟失節點並開始重新平衡。如果您知道節點維護是短期的,這可能會令人惱火,因爲非常大的分片的重新平衡可能需要一些時間。

我們想要做的是告訴Elasticsearch推遲重新平衡,因爲我們對外部因素導致的集羣狀態有了更多的瞭解。程序如下:

  1. 如果可能,請停止索引新數據並執行同步刷新。這並非總是可行,但有助於加快恢復時間。同步刷新請求是“盡力而爲”操作。如果有任何掛起的索引操作,它將失敗,但如果需要,可以安全地多次重新發出請求。

    POST / _flush / 同步
  2. 禁用分片分配。這可以防止Elasticsearch重新平衡丟失的分片,除非您另有說明。如果您知道維護窗口很短,這是一個好主意。您可以按如下方式禁用分配:

    curl xput  -d'{"transient":{"cluster.routing.allocation.enable":"none"}}'
  3. 停止需要重啓的節點:curl xput http://ip:port/_cluster/node/_local/_shutdown

  4. 重新啓動節點,並確認它加入羣集。

  5. 對其餘節點重複步驟3、4。

  6. 重新啓用分片分配如下:

    curl xput http://ip:9092/_cluster/shard/setting -d'{"transient":{"cluster.routing.allocation.enable":"all"}}'

    碎片重新平衡可能需要一些時間。等到羣集恢復到狀態green後再繼續。

  7. 此時,您可以安全地恢復索引(如果您之前已停止過),但在恢復索引之前等待羣集完全平衡將有助於加快進程。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章