Elasticsearch 6 5 集群健康值紅色

2021-10-01 12:20:36 字數 4684 閱讀 1328

head外掛程式會以不同的顏色顯示。

1)、綠色——最健康的狀態,代表所有的主分片和副本分片都可用;

2)、黃色——所有的主分片可用,但是部分副本分片不可用;

3)、紅色——部分主分片不可用。(此時執行查詢部分資料仍然可以查到,遇到這種情況,還是趕快解決比較好。)

參考官網:部分中文集群健康狀態博文資料翻譯的不夠精確,以官網為準)

如果集群狀態為紅色, head外掛程式顯示:集群健康值red 。則說明:至少乙個主分片分配失敗。

這將導致一些資料以及索引的某些部分不再可用。

集群 yellow 狀態

原因:表示所有主分片健康可用,但副片都未必可用,最常見的情景是單節點時,主分片和副本不能在同乙個節點上,所以副本就是未分配unassigned

處理方法:過濾檢視所有未分配索引的方式, curl -s "http://localhost:9200/_cat/shards" | grep unassigned結果,第一列表示索引名,第二列表示分片編號,第三列p是主分片,r是副本

集群 red 狀態

原因:表示所有的主分片都未必健康可用,一般是由於某個索引的主分片為 unassigned 狀態引起的

處理方法:找出分片為 unassigned 狀態的索引,手工分配即可。

一句話解釋:未分配的分片。

啟動es的時候,通過head外掛程式不停重新整理,你會發現集群分片會呈現紫色、灰色、最終綠色的狀態。

如果不能分配分片,例如,您已經為集群中的節點數過分分配了副本分片的數量,則分片將保持unassigned狀態。

其錯誤碼為:allocation_failed。

你可以通過如下指令,檢視集群中不同節點、不同索引的狀態。

get _cat/shards?h=index,shard,prirep,state,unassigned.reason
head外掛程式檢視會:elasticsearch啟動n長時候後,某乙個或幾個分片仍持續為灰色。

1)index_created:由於建立索引的api導致未分配。

2)cluster_recovered :由於完全集群恢復導致未分配。

3)index_reopened :由於開啟open或關閉close乙個索引導致未分配。

4)dangling_index_imported :由於匯入dangling索引的結果導致未分配。

5)new_index_restored :由於恢復到新索引導致未分配。

6)existing_index_restored :由於恢復到已關閉的索引導致未分配。

7)replica_added:由於顯式新增副本分片導致未分配。

8)allocation_failed :由於分片分配失敗導致未分配。

9)node_left :由於承載該分片的節點離開集群導致未分配。

10)reinitialized :由於當分片從開始移動到初始化時導致未分配(例如,使用影子shadow副本分片)。

11)reroute_cancelled :作為顯式取消重新路由命令的結果取消分配。

12)reallocated_replica :確定更好的副本位置被標定使用,導致現有的副本分配被取消,出現未分配。

症狀:集群健康值紅色;

日誌:集群服務連線超時;

可能原因:集群中部分節點的主分片未分配。

接下來的解決方案主要圍繞:使主分片unsigned 分片完成再分配展開。

方案一:極端情況——這個分片資料已經不可用,直接刪除該分片。

es中沒有直接刪除分片的介面,除非整個節點資料已不再使用,刪除節點。

curl -xdelete localhost:9200/index_name/
方案二:集群中節點數量》=集群中所有索引的最大副本數量 +1。

n> = r + 1

其中:n——集群中節點的數目;

r——集群中所有索引的最大副本數目。

知識點:當節點加入和離開集群時,主節點會自動重新分配分片,以確保分片的多個副本不會分配給同乙個節點。換句話說,主節點不會將主分片分配給與其副本相同的節點,也不會將同一分片的兩個副本分配給同乙個節點。

如果沒有足夠的節點相應地分配分片,則分片可能會處於未分配狀態。

由於我的集群就乙個節點,即n=1;所以r=0,才能滿足公式。

問題就轉嫁為:

1)新增節點處理,即n增大;

2)刪除副本分片,即r置為0。

r置為0的方式,可以通過如下命令列實現:

方案三:allocate重新分配分片。

如果方案二仍然未解決,可以考慮重新分配分片。

可能的原因:

1)節點在重新啟動時可能遇到問題。正常情況下,當乙個節點恢復與群集的連線時,它會將有關其分片的資訊**給主節點,然後主節點將這分片從「未分配」轉換為「已分配/已啟動」。

2)當由於某種原因(例如節點的儲存已被損壞)導致該程序失敗時,分片可能保持未分配狀態。

在這種情況下,您必須決定如何繼續:嘗試讓原始節點恢復並重新加入集群(並且不要強制分配主分片);

或者強制使用reroute api分配分片並重新索引缺少的資料原始資料源或備份。

如果您決定分配未分配的主分片,請確保將「allow_primary」:「true」標誌新增到請求中。

看到集群現在顯示red紅色並出現 unassigned 分片

es6.5官方集群重新路由文件

_cluster/reroute支援的命令是:

move

將啟動的分片從乙個節點移動到另一節點。接受indexshard作為索引名稱和分片號,from_node以使節點將分片從其移動,並將to_node節點將分片移至。

cancel

取消分配分片(或恢復)。接受indexshard作為索引名稱和分片號,並node取消節點上的分片分配。這可以用來通過取消主分片並允許它們通過標準恢復過程重新初始化來強制與主分片重新同步。預設情況下,只能取消副本分片分配。如果有必要取消主分片的分配,則該allow_primary標誌也必須包含在請求中。

allocate_replica

將未分配的副本分片分配給節點。接受indexshard作為索引名稱和分片號,並向node其分配分片。需要 分配決策者考慮。

還有兩個命令可用來將主分片分配給節點。但是,應格外小心地使用這些命令,因為主要的分片分配通常是由elasticsearch完全自動處理的。無法自動分配主分片的原因包括:

以下兩個命令很危險,可能會導致資料丟失。它們旨在用於無法恢復原始資料且集群管理員接受丟失的情況。如果您遇到可以解決的暫時性問題,請參見上述retry_failed標誌。要強調的是:如果執行了這些命令,然後乙個節點加入了包含受影響的分片副本的群集,那麼新加入的節點上的副本將被刪除或覆蓋。

allocate_stale_primary

將主分片分配給持有陳舊副本的節點。接受indexshard的索引名稱和分片號,並node為其分配分片。使用此命令可能會導致提供的碎片id的資料丟失。如果具有良好資料副本的節點稍後重新加入集群,則該資料將被刪除或用此命令強制分配的陳舊副本的資料覆蓋。為確保充分理解這些含義,此命令要求將該標誌accept_data_loss顯式設定為true

allocate_empty_primary

將空的主分片分配給節點。接受indexshard的索引名稱和分片號,並node為其分配分片。使用此命令將導致完全丟失索引到該分片的所有資料(如果先前已啟動)。如果具有資料副本的節點稍後重新加入群集,則該資料將被刪除。為確保充分理解這些含義,此命令要求將該標誌accept_data_loss顯式設定為true

post _cluster/reroute

}]}

(1)index索引名稱

(2)node為其分配分片

(3)shard分片 這裡在kibana顯示索引有5個unassigned

(4)此命令要求將該標誌accept_data_loss顯式設定為true

elasticsearch 6 5原始碼單機安裝

1.建立使用者elasticadduser elastic passwd elastic 密碼規則 chen123456.2.給使用者elastic賦許可權,檔案路徑為es解壓路徑chown r elastic elastic usr local elasticsearch elasticsearc...

大數階乘65!

include include define n 200 void sub int left int right int result 實現兩個大數相乘的演算法 乘得的結果是反序的,這樣保證假如前面是0的話也可以保留 for i 0 i 2 n i 上面乘出來的結果的陣列可能有些位數是超過10的,所...

6 5學習記錄

今天主要學習的是linuxc中記憶體管理的部分,以為為學習的知識點 1.未初始化的全域性變數 bss段 以及初始化的全域性變數 data段 2.棧 stack 以及堆 heap 這一點內容在本學期的資料結構中也是很重要的部分,指標在裡面也有很多知識點,棧當中存放的順序是先進後出,不過堆和資料結構的佇...