記ES資料盤故障造成集群不可用

2021-08-20 06:08:22 字數 1196 閱讀 7949

pending tasks任務一直有堆積,線上createindex等無法完成或建立時間較長。

data node某資料盤故障,建立索引時,master無法完成分片分配,導致任務阻塞,影響後續建立索引等任務。

重新梳理看到的現象:

1, create index較慢或者或出現失敗

2, pending task有任務堆積

3, get /_cat/nodes返回500

根據pending task中的任務「shard-failed」,搜尋master日誌,找到如下一條資訊

根據此資訊,可能是/data9目錄資料目錄出現許可權問題,但是進入到es資料目錄,建立、刪除、修改檔案許可權是正常。比較奇怪。

在官方論壇找到了一篇關於此報錯的乙個討論:

但此討論與遇到問題不是同一問題。

問題追查,到此陷入困境。

仔細閱讀了master的配置檔案,但是master實際上並沒有配置/data9這個資料目錄,但master為什麼會有這樣報錯?

猜測1:由於master機器上有2個es例項,啟動時引用錯配置檔案

驗證:驗證程序開啟的檔案控制代碼,與實際不符。

猜測2:其他節點報錯

驗證:仔細排查挨個節點的日誌,發現一data node同樣有相應報錯,切換到對應目錄,確認對應磁碟故障。

臨時方案:

在對應資料節點,臨時下線故障資料目錄,重啟es例項。

效果驗證:

get /_cluster/pending_tasks常態下為0

get /_cat/nodes返回正常結果

說明:分片不能同步情況可以可以通過此介面檢視/_cluster/allocation/explain?pretty&pretty

後續跟進:

增加資料盤故障監控

資料節點資料盤故障,會影響到整個集群效能。

es資料跨集群遷移(HDSF方法)

es 備份儲存方式支援以下幾種方式 fs 檔案掛載 url 網路協議儲存 http,https,ftp s3 亞馬遜 hdfs azure 微軟 gcs 谷歌 本篇文章採用hdfs方式儲存 1.repository 倉庫 es集群中,想要備份資料,必須建立倉庫,用來儲存快照,乙個集群可以建立多個倉庫...

oracle資料庫集群例項故障排除

故障環境 redhat作業系統 oracle rac環境中資料庫伺服器 故障現象 rac中單個伺服器無法連線 故障原因 可能為rac環境異常導致單點故障,具體原因分為 1 心跳線問題 2 vote disk無法訪問 3 伺服器宕機 處理辦法 針對原因1 檢查ocssd.log日誌檔案,應發現類似wa...

mysql資料同步es踩坑記

背景 需要把mysql的資料同步到es中。由於沒有維護canal集群,我們選擇了通過記錄最後一次同步資料的update time來進行資料同步。具體的做法,當有資料變更的時候,發個訊息,表示需要進行資料同步。訊息的監聽者加鎖序列執行,從要同步資料的表中獲取上一次update time之後的資料,並且...