Elasticsearch 線上問題排查——搞一天了,明天還要給客戶解決這個問題
1、線上問題
線上問題描述:

癥狀:新增節(jié)點(diǎn)后,shard 沒有分配到新節(jié)點(diǎn)上。如下圖所示: 
2、問題排查
我的大致排解思路:
如下第一、第二、第三......代表排查問題的推進(jìn)步驟。
2.1 第一:確定節(jié)點(diǎn)角色劃分,核實(shí)未被分配的節(jié)點(diǎn)類型。

2.2 第二:關(guān)閉索引再打開試試。
2.3 第三:獨(dú)立創(chuàng)立一個新索引,設(shè)置3個副本。

2.4 第四:查看分片未分配的原因。
GET _cluster/allocation/explain

2.5 第五:為什么設(shè)置?在哪里設(shè)置的?如何設(shè)置的?
為什么設(shè)置?
在哪里設(shè)置?
如何設(shè)置的?
PUT _cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._ip" : "10.0.0.1"
}
}
2.6 取消這個設(shè)置就會恢復(fù)新節(jié)點(diǎn)的分片分配。
PUT _cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._ip" : ""
}
}

3、我的幾點(diǎn)觀察和思考
3.1 關(guān)于 head 插件 和 Kibana dev tools 的選型
3.2 關(guān)于優(yōu)化參數(shù)配置
3.3 關(guān)于設(shè)置,在哪個層面設(shè)置?
臨時設(shè)置 永久設(shè)置 配置文件設(shè)置
靜態(tài)設(shè)置 在索引創(chuàng)建階段或者關(guān)閉索引階段設(shè)置。 動態(tài)設(shè)置 通過 update-index-settings 方式隨時更新設(shè)置。

3.4 設(shè)置生效容易,使得設(shè)置失效一樣得會
You can reset persistent or transient settings by assigning a null value.
也就是我們上面的命令行操作更嚴(yán)謹(jǐn)?shù)膶懛☉?yīng)該是:
PUT _cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._ip" : null
}
}
如果有標(biāo)準(zhǔn)寫法,上面的這個才是最正宗、最標(biāo)準(zhǔn)的寫法。
4、小結(jié)
事后觀察,只通過后面的第四、五、六步,就能定位問題的根本原因。
但,畢竟不在現(xiàn)場,多去了解問題的來龍去脈,更有助于輔助解決問題。
復(fù)盤總結(jié)一下,希望對大家也有所幫助。
參考
集群層面設(shè)置 https://www.elastic.co/guide/en/elasticsearch/reference/7.14//cluster-update-settings.html 索引層面設(shè)置 https://www.elastic.co/guide/en/elasticsearch/reference/7.x/index-modules.html
推薦

評論
圖片
表情
