一、ES集群架構(gòu)
? ? ? ? 特性:高可用 可擴展
? ? ? ? 優(yōu)勢:提高系統(tǒng)可用性,部分節(jié)點停止服務(wù)整個集群不受影響
? ? ? ? ? ? ? ? ? ?存儲可水平擴展
概念
集群
????????一個集群可以有一個或者多個節(jié)點
????????不同的集群通過不同的名字來區(qū)分,默認名字“elasticsearch“
????????通過配置文件修改,或者在命令行中 -E cluster.name=es-cluster進行設(shè)定
二、節(jié)點
????????節(jié)點是一個Elasticsearch的實例
????????本質(zhì)上就是一個JAVA進程
????????一臺機器上可以運行多個Elasticsearch進程,但是生產(chǎn)環(huán)境一
????????般建議一臺機器上只運
????????行一個Elasticsearch實例
????????每一個節(jié)點都有名字,通過配置文件配置,或者啟動時候 -E node.name=node1指定
????????每一個節(jié)點在啟動之后,會分配一個UID,保存在data目錄下
1 節(jié)點類型
????????Master Node:主節(jié)點
????????Master eligible nodes:可以參與選舉的合格節(jié)點
????????Data Node:數(shù)據(jù)節(jié)點
????????Coordinating Node:協(xié)調(diào)節(jié)點(客戶端的請求落在協(xié)調(diào)節(jié)點上,轉(zhuǎn)發(fā)給相應(yīng)節(jié)點)
????????其他節(jié)點
2 Master eligible nodes和Master Node(可以選舉成為master節(jié)點,相當于主節(jié)點的從節(jié)點)
????????每個節(jié)點啟動后,默認就是一個Master eligible節(jié)點,可以設(shè)置 node.master: false禁止;
????????Master-eligible節(jié)點可以參加選主流程,成為Master節(jié)點;
????????當?shù)谝粋€節(jié)點啟動時候,它會將自己選舉成Master節(jié)點;
????????每個節(jié)點上都保存了集群的狀態(tài),只有Master節(jié)點才能修改集群的狀態(tài)信息;
????????集群狀態(tài)(Cluster State) ,維護了一個集群中,必要的信息所有的節(jié)點信息
????????所有的索引和其相關(guān)的Mapping與Setting信息,分片的路由信息;
3 Master Node的職責
????????處理創(chuàng)建,刪除索引等請求,負責索引的創(chuàng)建與刪除
????????決定分片被分配到哪個節(jié)點
????????維護并且更新Cluster State
4 Master Node的最佳實踐
????????Master節(jié)點非常重要,在部署上需要考慮解決單點的問題
????????為一個集群設(shè)置多個Master節(jié)點,每個節(jié)點只承擔Master 的單一角色
5 選主的過程
????????互相Ping對方,Node ld 低的會成為被選舉的節(jié)點,其他節(jié)點會加入集群,但是不承擔? ? ? ? ? ? ?????????Master節(jié)點的角色。一旦發(fā)現(xiàn)被選中的主節(jié)點丟失,就會選舉出新的Master節(jié)點
6 Data Node & Coordinating Node
Data Node
????????可以保存數(shù)據(jù)的節(jié)點,叫做Data Node,負責保存分片數(shù)據(jù)。在數(shù)據(jù)擴展上起到了至關(guān)重要的作用;
節(jié)點啟動后,默認就是數(shù)據(jù)節(jié)點??梢栽O(shè)置node.data: false
禁止由Master Node決定如何把分片分發(fā)到數(shù)據(jù)節(jié)點上
通過增加數(shù)據(jù)節(jié)點可以解決數(shù)據(jù)水平擴展和解決數(shù)據(jù)單點問題
Coordinating Node
負責接受Client的請求, 將請求分發(fā)到合適的節(jié)點,最終把結(jié)果匯集到一起
每個節(jié)點默認都起到了Coordinating Node的職責
其他節(jié)點類型
Hot & Warm Node
不同硬件配置 的Data Node,用來實現(xiàn)Hot & Warm架構(gòu),降
低集群部署的成本
Ingest Node
數(shù)據(jù)前置處理轉(zhuǎn)換節(jié)點,支持pipeline管道設(shè)置,可以使用
ingest對數(shù)據(jù)進行過濾、轉(zhuǎn)換等操作
Machine Learning Node
負責跑機器學(xué)習(xí)的Job,用來做異常檢測
Tribe Node
Tribe Node連接到不同的Elasticsearch集群,并且支持將這
些集群當成一個單獨的集群處理
讀寫分離架構(gòu)
三、分片
主分片:用于解決數(shù)據(jù)水平擴展的問題,通過分片將數(shù)據(jù)分配到不同的節(jié)點上,一個分片是一個運行的lucene實例,主分片數(shù)在索引創(chuàng)建時指定,后續(xù)不允許修改;
副本分片:用于解決數(shù)據(jù)高可用問題,副本分片是主分片的copy。副本分片數(shù)可調(diào)整,增加副本數(shù)可以提高服務(wù)的可用性(讀取可以從副本和主分片讀取,提高讀取的吞吐量)
分片的設(shè)定
對于生產(chǎn)環(huán)境中分片的設(shè)定,需要提前做好容量規(guī)劃
分片數(shù)設(shè)置過小導(dǎo)致后續(xù)無法增加節(jié)點實現(xiàn)水平擴展
單個分片的數(shù)據(jù)量太大,導(dǎo)致數(shù)據(jù)重新分配耗時
分片數(shù)設(shè)置過大,7.0 開始,默認主分片設(shè)置成1,解決了over-sharding(分片過度)的問題
影響搜索結(jié)果的相關(guān)性打分,影響統(tǒng)計結(jié)果的準確性
單個節(jié)點上過多的分片,會導(dǎo)致資源浪費,同時也會影響性能
主分片的數(shù)量不允許更改,由于分片路由的時候是取的hash取模的結(jié)果;
生產(chǎn)環(huán)境集群配置建議
單一職責:master eligible nodes:負責集群的狀態(tài)管理
? ? ? ? ? ? ? ? ? 使用低配置cpu Ram和磁盤
? ? ? ? ? ? ? ? ? date nodes:負責數(shù)據(jù)存儲及處理客戶請求
? ? ? ? ? ? ? ? ? 使用高配置cpu Ram和磁盤
? ? ? ? ? ? ? ? ? ingest nodes:負責處理數(shù)據(jù)
? ? ? ? ? ? ? ? ? 使用高配置cpu Ram和低配置磁盤
? ? ? ? ? ? ? ? ? coordinating nodes:請求抓飯數(shù)據(jù)處理
? ? ? ? ? ? ? ? ? 使用低高cpu Ram和低配置磁盤
節(jié)點擴展方案
當磁盤容量無法滿足需求時,可以增加數(shù)據(jù)節(jié)點;
磁盤讀寫壓力大時,增加數(shù)據(jù)節(jié)點
當系統(tǒng)中有大量的復(fù)雜查詢及聚合時候,增加Coordinating節(jié)點,增加查詢的性能
es分片路由的規(guī)則
shard_num = hash(_routing) % num_primary_shards
_routing字段的取值,默認是_id字段,可以自定義。文章來源:http://www.zghlxwxcb.cn/news/detail-797843.html
大數(shù)據(jù)量索引可根據(jù)不同情況對索引進行拆分進行優(yōu)化查詢;文章來源地址http://www.zghlxwxcb.cn/news/detail-797843.html
到了這里,關(guān)于ElasticSearch(五)集群架構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!