本文介紹重啟變更報(bào)錯(cuò)的詳細(xì)說明、可能原因及解決方案。

報(bào)錯(cuò)說明

當(dāng)您觸發(fā)了Elasticsearch實(shí)例重啟變更時(shí),系統(tǒng)提示“集群狀態(tài)不健康或存在close索引,不能執(zhí)行當(dāng)前操作,建議待集群狀態(tài)穩(wěn)定或開啟已關(guān)閉的索引后再試”。報(bào)錯(cuò)說明

問題原因及解決方案

當(dāng)集群存在以下情況,重啟或變更實(shí)例時(shí)會(huì)報(bào)出此類錯(cuò)誤:
  • 集群中存在close狀態(tài)的索引。

    您可以通過GET /_cat/indices?v命令查看索引狀態(tài)。如果索引狀態(tài)為close,可通過POST /<index_name>/_open將索引狀態(tài)設(shè)置為open。

  • 集群處于yellow或red狀態(tài)。
    您可以通過GET /_cat/health?v命令查看集群狀態(tài)。常見的異常原因及解決方案如下。
    常見異常原因 解決方案
    shard自動(dòng)分配,已經(jīng)達(dá)到最大重試次數(shù)5次 建議通過POST /_cluster/reroute?retry_failed=true命令,重新分配分片。
    某一索引主副本分片分配到一個(gè)節(jié)點(diǎn),對(duì)應(yīng)報(bào)錯(cuò)信息為:the shard cannot be allocated to the same node on which a copy of the shard already exists 建議將副本設(shè)置為0,待集群正常后再設(shè)置為1。
    已達(dá)到節(jié)點(diǎn)最大允許同時(shí)分配分片個(gè)數(shù)的限制 當(dāng)前節(jié)點(diǎn)正在分配shard,請(qǐng)耐心等待。您可以通過GET _cluster/allocation/explain命令,查看完整的未分配原因。
    節(jié)點(diǎn)失聯(lián) 通過GET _cat/nodes?v命令,查看節(jié)點(diǎn)是否已脫離集群。建議對(duì)脫離集群的節(jié)點(diǎn)進(jìn)行重啟。
    磁盤使用率高 磁盤使用率達(dá)到水位線,當(dāng)前節(jié)點(diǎn)磁盤已降到85%以下,建議對(duì)節(jié)點(diǎn)進(jìn)行重啟,使診斷回歸正位。
    堆內(nèi)存熔斷 建議限流,并將歷史索引close降低內(nèi)存開銷。
    其他 集群存在主分片未分配,需要關(guān)注CPU使用率、堆內(nèi)存使用情況,結(jié)合GET _cluster/allocation/explain命令,獲取shard未分配信息進(jìn)行分析。
  • 集群狀態(tài)正常,但負(fù)載過高。
    常見排查方式、異常原因及解決方案如下。
    排查方式 常見異常原因 解決方案
    • 查看磁盤使用率監(jiān)控
    • GET _cat/allocation命令
    • GET _cluster/allocation/explain命令
    • 查看日志
    磁盤使用率達(dá)到85% 磁盤使用率達(dá)到85%,影響到分片的創(chuàng)建,建議按照以下方式處理。處理后,可通過查看磁盤監(jiān)控,判斷磁盤使用率是否降到85%以下。
    • 刪除歷史索引數(shù)據(jù)。
    • 擴(kuò)容磁盤。
    • 將索引副本數(shù)設(shè)置為0。
    查看CPU使用率監(jiān)控、熱線程 CPU使用率達(dá)到85% CPU使用率達(dá)到85%,影響到集群的穩(wěn)定性。需要降低流量或擴(kuò)容,關(guān)注集群總體讀或?qū)懭隥PS監(jiān)控。
    查看堆內(nèi)存監(jiān)控、日志、old gc collection count、old gc collecting.ms 堆內(nèi)存達(dá)到75%以上 堆內(nèi)存過高,將嚴(yán)重影響到降低集群的穩(wěn)定性,建議按照以下方式處理:
    • 降低讀寫量。
    • 強(qiáng)制擴(kuò)容集群規(guī)格。
    • 將歷史索引的狀態(tài)設(shè)置為close,降低內(nèi)存使用率。
    查看load_1m監(jiān)控 load_1m>CPU核數(shù) load_1m超過CPU核數(shù),說明當(dāng)前服務(wù)器負(fù)載大,需要關(guān)注集群總體讀或?qū)懭隥PS監(jiān)控及磁盤吞吐(每秒讀寫大小)監(jiān)控,及時(shí)降低流量或擴(kuò)容。
    說明