集群
一個(gè)集群可以有一個(gè)或者多個(gè)節(jié)點(diǎn),節(jié)點(diǎn)是一個(gè)elasticsearch實(shí)例,本質(zhì)上是一個(gè)java進(jìn)程。
節(jié)點(diǎn)
Master-eligible Node & Master Node:
每個(gè)節(jié)點(diǎn)啟動(dòng)后,默認(rèn)就是一個(gè)Master-eligible節(jié)點(diǎn) 。Master-eligible節(jié)點(diǎn)可以參加選主流程,成為master節(jié)點(diǎn)。
第一個(gè)節(jié)點(diǎn)啟動(dòng)的時(shí)候,會(huì)將自己選舉成master節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)都保存了集群的狀態(tài),只有master節(jié)點(diǎn)才能修改集群的狀態(tài)信息。
集群狀態(tài)(Cluster State),維護(hù)了一個(gè)集群中必要的信息:
1, 所有的節(jié)點(diǎn)信息
2, 所有的索引和其相關(guān)的Mapping和Setting信息
3, 分片的路由信息Data Node & Coordinating Node :
1,可以保存數(shù)據(jù)的節(jié)點(diǎn),負(fù)責(zé)保存分片數(shù)據(jù)
2,負(fù)責(zé)接受client的請(qǐng)求,將請(qǐng)求分發(fā)到合適的節(jié)點(diǎn),最終把結(jié)果匯集到一起,每個(gè)節(jié)點(diǎn)默認(rèn)都起到了Coordinating Node的職責(zé)
分片(Primary Shard & Replica Shard):
-
主分片,用已解決數(shù)據(jù)水平擴(kuò)展的問題。通過主分片,可以將數(shù)據(jù)分布到集群內(nèi)的所有節(jié)點(diǎn)之上:
1.一個(gè)分片是一個(gè)運(yùn)行的Lucene的實(shí)例
2.主分片數(shù)在索引創(chuàng)建時(shí)指定,后續(xù)不允許修改,除非Reindex -
副本,用來解決數(shù)據(jù)高可用的問題。副本分片是主分片的拷貝:
1.副本分片數(shù)可以動(dòng)態(tài)調(diào)整
2.增加副本數(shù),可以在一定程度上提高服務(wù)的可用性(讀取的吞吐) - 一個(gè)三節(jié)點(diǎn)的集群中,blogs索引的分片分布情況。
"settings":{
"number_of_shards":3,
"number_of_replicas":1
} 3個(gè)主分片,1個(gè)副本分片
分片的設(shè)定
- 分片設(shè)置過小
1,導(dǎo)致后續(xù)無法增加節(jié)點(diǎn)實(shí)現(xiàn)水平擴(kuò)展
2,單個(gè)分片的數(shù)據(jù)量太大,導(dǎo)致數(shù)據(jù)重新分配耗時(shí) - 分片設(shè)置過大
1,影響搜索結(jié)果的相關(guān)性打分,影響統(tǒng)計(jì)結(jié)果的準(zhǔn)確性
2,單個(gè)節(jié)點(diǎn)上過多的分片,會(huì)導(dǎo)致資源浪費(fèi),同時(shí)也會(huì)影響性能
集群的健康狀況
GET _cluster/health
- Green - 主分片與副本都正常分配
- Yellow - 主分片全部正常分配,有副本分片未能正常分配
- Red - 有主分片未能分配
