1. 程式人生 > >ES集群修改index副本數報錯 :index read-only / allow delete

ES集群修改index副本數報錯 :index read-only / allow delete

number 磁盤空間 kibana 設置 tools iba 故障 json 增加

ES集群修改index副本數,報錯 :index read-only / allow delete (api)

原因:

es集群數據量增速過快,導致個別es node節點磁盤使用率在%80以上,接近%90 ,由於ES新節點的數據目錄data存儲空間不足,導致從master主節點接收同步數據的時候失敗,此時ES集群為了保護數據,會自動把索引分片index置為只讀read-only.

故障處理辦法:

1:集群加節點,簡單粗暴;

2:降低集群index副本數量;

3:其它:增加磁盤、刪除歷史數據等;

我們采用方案2,作為臨時應對方案,待集群可以正常數據寫入後,再指向步驟 1或者3的操作徹底解決問題;

操作步驟:

1:在Kibana的開發工具Dev Tools中執行(或在服務器上通過curl工具發起PUT請求,下文同)

修改索引副本數量為1

PUT 48_hot_v1/_settings
{
  "index": {
        "number_of_replicas": "1"
        }
}

報錯如下:

api接口執行操作

{
  "type": "cluster_block_exception",
  "reason": "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
}

報錯原因:

es磁盤已滿而無法索引更多文檔,則elasticsearch將切換為只讀。它確保了只讀查詢的可用性。Elasticsearch不會自動切換回來,可以使用如下方法切換回正常模式:

curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d ‘{"index.blocks.read_only_allow_delete": null}‘

或者,在Kibana的開發工具Dev Tools中執行

PUT _settings
    {
    "index": {
    "blocks": {
    "read_only_allow_delete": "false"
    }
    }
    }

驗證 :查看指定索引的設置信息

GET 48_hot_v1/_settings

查找內容如下:
        },
        "blocks": {
          "read_only_allow_delete": "false"
        },

配置生效後集群開始刪除index副本數據,datanode 節點磁盤空間逐步釋放。

ES集群修改index副本數報錯 :index read-only / allow delete