Elasticsearch-集群原理
Elasticsearch版本:6.0
一、ES的集群
??? 由一個或多個相同cluster.name的節(jié)點(diǎn)組成,共同承擔(dān)數(shù)據(jù)和負(fù)載的壓力。
??? 被選舉的主節(jié)點(diǎn)將負(fù)責(zé)管理集群范圍內(nèi)的所有變更,如增加/刪除索引、增加/刪除節(jié)點(diǎn)等,但是不涉及文檔級別變更和搜索等操作。
??? 請求可以發(fā)送到集群中的任何節(jié)點(diǎn)上,每個節(jié)點(diǎn)都知道任意文檔所處的位置,并且能把請求直接轉(zhuǎn)發(fā)到存儲我們所需文檔的節(jié)點(diǎn),它都能負(fù)責(zé)從包含我們所需文檔的節(jié)點(diǎn)收集回數(shù)據(jù),并將最終結(jié)果返回給客戶端。
二、ES的分片
??? ES添加數(shù)據(jù)用到的索引實(shí)際上指向了一個或者多個物理分片的邏輯命名空間。
??? 一個分片是一個底層的工作單元,保存了一部分?jǐn)?shù)據(jù),一個分片是一個Lucene實(shí)例。
??? 索引內(nèi)任何一個文檔都?xì)w屬于一個主分片,所以主分片的數(shù)目決定著索引能保存的最大數(shù)據(jù)量。
??? 一個副本分片是一個主分片的拷貝,作為保護(hù)數(shù)據(jù)不丟失的冗余備份,并為搜索和返回文檔等讀操作提供服務(wù)。
??? 索引建立的時候就確定了主分片數(shù),但是副本分片可以隨時修改,
分片創(chuàng)建方法:(索引名為test,分配了3個主分片和一個副本分片,每個主分片有一個副本分片)
PUT /test
{
??? "settings" : {
??????? "number_of_shards" : 3,
??????? "number_of_replicas" : 1
??? }
}
三、單機(jī)環(huán)境
??? 此時的ES健康狀態(tài)status字段是yellow,因?yàn)楦北緵]有被分配到任何節(jié)點(diǎn)上。
四、水平擴(kuò)容
??? 1、啟動第二個節(jié)點(diǎn),只要cluster.name和第一個節(jié)點(diǎn)相同,就會自動發(fā)現(xiàn)集群并加入,如果是不同機(jī)器,需要配置一個可連接到的單播主機(jī)列表。
???
??? 此時3個副本被分配到NODE2,所有被索引的文檔都會保存在主分片上,然后被并行復(fù)制到對應(yīng)副本分片上,保證我們既可以從主分片又可以從副本分片上獲取文檔。
??? 2、自動第三個節(jié)點(diǎn),集群會為了分散負(fù)載而對分片進(jìn)行重新分配。(最多可以啟用6個節(jié)點(diǎn)有效)
???
??? 副本分片數(shù)是可以在運(yùn)行的集群上動態(tài)調(diào)整的
把分片增加到2
PUT /blogs/_settings{?? "number_of_replicas" : 2}此時的集群分片狀態(tài)如下五、節(jié)點(diǎn)故障
??? 關(guān)閉主節(jié)點(diǎn),集群首先會選舉一個新的主節(jié)點(diǎn),新的主節(jié)點(diǎn)再立即把在NODE2和NODE3對應(yīng)的副本分片提升為主分片,此時集群狀態(tài)變?yōu)閥ellow。
???
??? 重啟主節(jié)點(diǎn),集群可以將確實(shí)的副本分片再次分配,如果NODE1依然擁有之前的分片,它將嘗試重用他們,同時僅從主分片復(fù)制發(fā)生了修改的數(shù)據(jù)文件。
轉(zhuǎn)載于:https://www.cnblogs.com/bigshark/p/7906421.html
總結(jié)
以上是生活随笔為你收集整理的Elasticsearch-集群原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces Round #44
- 下一篇: django 多对多表的创建,级联删除,