005-blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]

趙安家發表於2019-02-19

這是堅持技術寫作計劃(含翻譯)的第5篇,定個小目標999,每週最少2篇。

吐槽一下,最近有點招bug,前兩天磁碟異常爆滿,今天es又掛了。

Logstash ClusterBlockException

logstash 日誌中週期性出現 FORBIDDEN/12/index read-only / allow delete (api)] ,並且es中無法寫入新資料。
原因是 ES 主動保護功能,防止es叢集狀態變成紅色(RED)或者黃色(YELLOW)
原因有兩個:

  • 記憶體不足:JVMMemoryPressure 超過92%並持續30分鐘時,ES觸發保護機制,並且阻止寫入操作,以防止叢集達到紅色狀態,啟用防寫後,寫入操作將失敗,並且丟擲 ClusterBlockException ,無法建立新索引,並且丟擲 IndexCreateBlockException ,當五分鐘內恢復到88%以下時,將禁用防寫
  • 磁碟空間不足:es的預設磁碟水位警戒線是85%,一旦磁碟使用率超過85%,es不會再為該節點分配分片,es還有一個磁碟水位警戒線是90%,超過後,將嘗試將分片重定位到其他節點。

解決方案

  • 磁碟擴容
  • 刪除無用索引
  • 將舊索引的副本數調小
  • 增加資料節點
  • 手動將 index.blocks.read_only_allow_delete 改成false

還有一種報錯是 blocked by: [FORBIDDEN/8/index write (api)]; 後續再補充

參考資料

招聘小廣告

山東濟南的小夥伴歡迎投簡歷啊 加入我們 , 一起搞事情。

長期招聘,Java程式設計師,大資料工程師,運維工程師,前端工程師。

相關文章