- 叢集健康度
分片健康 - 紅:至少有一個主分片沒有分配
- 黃:至少有一個副本沒有分配
- 綠:主副本分片全部正常分配
- 索引健康: 最差的分片的狀態
- 叢集健康: 最差的索引的狀態
|
|
---|
GET _cluster/health |
叢集的狀態(檢查 節點數量) |
GET _cluster/health?level=indices |
所有索引的健康狀態 (檢視有問題的索引 |
GET _cluster/health/my_index |
單個索引的健康狀態(檢視具體的索引) |
GET _cluster/health?level=shards |
分片級的索引 |
GET _cluster/allocation/explain |
返回第一個未分配 Shard 的原因 |
案例 1
- 症狀:叢集變紅
- 分析:通過 Allocation Explain API 發現 建立索引失敗,因為無法找到標記了相應 box type
的節點 - 解決:刪除索引,叢集變綠。重新建立索引,並且指定正確的 routing box type,索引建立成
功。叢集保持綠色狀態
PUT mytest
{
"settings":{
"number_of_shards":3,
"number_of_replicas":0,
"index.routing.allocation.require.box_type":"hott"
}
}
# 檢查叢集狀態,檢視是否有節點丟失,有多少分片無法分配
GET /_cluster/health/
# 檢視索引級別,找到紅色的索引
GET /_cluster/health?level=indices
#檢視索引的分片
GET _cluster/health?level=shards
# Explain 變紅的原因
GET /_cluster/allocation/explain
"deciders" : [
{
"decider" : "filter",
"decision" : "NO",
"explanation" : """node does not match index setting [index.routing.allocation.require] filters [box_type:"hott"]"""
}
]
GET /_cat/shards/mytest
GET _cat/nodeattrs
DELETE mytest
# 檢視叢集 叢集變綠
GET /_cluster/health/
PUT mytest
{
"settings":{
"number_of_shards":3,
"number_of_replicas":0,
"index.routing.allocation.require.box_type":"hot"
}
}
案例 2
- 症狀:叢集變黃
- 分析:通過 Allocation Explain API 發現無法在相同的節點上建立副本
- 解決:將索引的副本數設定為 0,或者通過增加節點解決
PUT mytest
{
"settings":{
"number_of_shards":2,
"number_of_replicas":1,
"index.routing.allocation.require.box_type":"hot"
}
}
GET _cluster/health
GET _cat/shards/mytest
GET /_cluster/allocation/explain
PUT mytest/_settings
{
"number_of_replicas": 0
}
- INDEX_CREATE: 建立索引導致。在索引的全部分片分配完成之前,會有短暫的 Red,不一定代表有問題
- CLUSTER_RECOVER:叢集重啟階段,會有這個問題
- INDEX_REOPEN:Open 一個之前 Close 的索引
- DANGLING_INDEX_IMPORTED:一個節點離開叢集期間,有索引被刪除。這個節點重新返回時,會導致 Dangling 的問題
- 叢集變紅,需要檢查是否有節點離線。如果有,通常通過重啟離線的節點可以解決問題
- 由於配置導致的問題,需要修復相關的配置(例如錯誤的 box_type,錯誤的副本數)
- 因為磁碟空間限制,分片規則(Shard Filtering)引發的,需要調整規則或者增加節點
- 對於節點返回叢集,導致的 dangling 變紅,可直接刪除 dangling 索引
- Red & Yellow 是叢集運維中常見的問題
- 除了叢集故障,一些建立,增加副本等操作,
都會導致叢集短暫的 Red 和 Yellow,所以
監控和報警時需要設定一定的延時 - 通過檢查節點數,使用 ES 提供的相關 API,
找到真正的原因 - 可以指定 Move 或者 Reallocate 分片
本作品採用《CC 協議》,轉載必須註明作者和本文連結