搜索引擎(Elasticsearc-集羣管理)

學習目標

瞭解集羣規劃的基本原則。
掌握集羣管理的基本方法。node

集羣規劃

集羣規劃問題併發

1. 咱們須要多大規模的集羣?性能

2. 集羣中的節點角色如何分配?學習

3. 如何避免腦裂問題?spa

4. 索引應該設置多少個分片?code

5. 分片應該設置幾個副本?索引

 

咱們須要多大規模的集羣?

當前的數據量有多大?數據增加狀況如何?
你的機器配置如何?cpu、多大內存、多大硬盤容量?內存

推算的依據:資源

ES JVM heap 最大 32G  。
       30G heap  大概能處理的數據量 10 T。若是內存很大如128G,可在一臺機器上運行多個ES節點實例。文檔

集羣規劃知足當前數據規模+適量增加規模便可,後續可按需擴展。

兩類應用場景:

1.用於構建業務搜索功能模塊,且可能是垂直領域的搜索。數據量級幾千萬到數十億級別。通常2-4臺機器的規模。
2.用於大規模數據的實時OLAP(聯機處理分析),經典的如ELK Stack,數據規模可能達到千億或更多。幾十到上百節點的規模。

集羣中的節點角色如何分配?

節點角色:

一個節點能夠充當一個或多個角色,默認三個角色都有

Master       
        node.master: true    節點能夠做爲主節點
DataNode
        node.data: true    默認是數據節點。      
Coordinate node   協調節點
        若是僅擔任協調節點,將上兩個配置設爲false。

如何分配:

1.小規模集羣,不需嚴格區分。
2.中大規模集羣(十個以上節點),應考慮單獨的角色充當。特別併發查詢量大,查詢的合併量大,能夠增長獨立的協調節點。角色分開的好處是分工分開,不互影響。如不會因協調角色負載太高而影響數據節點的能力。

如何避免腦裂問題?

儘可能避免腦裂,配置:

discovery.zen.minimum_master_nodes: (有master資格節點數/2) + 1

 這個參數控制的是,選舉主節點時須要看到最少多少個具備master資格的活節點,才能進行選舉。官方的推薦值是(N/2)+1,其中N是具備master資格的節點的數量。

node.master: true  
node.data: false  

經常使用作法(中大規模集羣):

1 Master 和 dataNode 角色分開,配置奇數個master,如3  
2 單播發現機制,配置master資格節點

discovery.zen.ping.multicast.enabled: false  
discovery.zen.ping.unicast.hosts: ["master1", "master2", "master3"]

3 配置選舉發現數,及延長ping master的等待時長

discovery.zen.ping_timeout: 30(默認值是3秒)
discovery.zen.minimum_master_nodes: 2

索引應該設置多少個分片?

分片數指定後不可變,除非重索引。

思考:

分片對應的存儲實體是什麼?

分片是否是越多越好?

分片多有什麼影響?

分片過多的影響:

1 每一個分片本質上就是一個Lucene索引, 所以會消耗相應的文件句柄, 內存和CPU資源。
2 每一個搜索請求會調度到索引的每一個分片中. 若是分片分散在不一樣的節點卻是問題不太. 但當分片開始競爭相同的硬件資源時, 性能便會逐步降低。
3 ES使用詞頻統計來計算相關性. 固然這些統計也會分配到各個分片上. 若是在大量分片上只維護了不多的數據, 則將致使最終的文檔相關性較差。

分片設置的可參考原則:

1 ElasticSearch推薦的最大JVM堆空間是30~32G, 因此把你的分片最大容量限制爲30GB, 而後再對分片數量作合理估算. 例如, 你認爲你的數據能達到200GB, 推薦你最多分配7到8個分片。
2 在開始階段, 一個好的方案是根據你的節點數量按照1.5~3倍的原則來建立分片. 例如,若是你有3個節點, 則推薦你建立的分片數最多不超過9(3x3)個。當性能降低時,增長節點,ES會平衡分片的放置。
3 對於基於日期的索引需求, 而且對索引數據的搜索場景很是少. 也許這些索引量將達到成百上千, 但每一個索引的數據量只有1GB甚至更小. 對於這種相似場景, 建議只須要爲索引分配1個分片

分片應該設置幾個副本?

思考:

1 副本的用途是什麼?
2 針對它的用途,咱們該如何設置它的副本數?
3 集羣規模沒變的狀況下副本過多會有什麼影響?

副本數是能夠隨時調整的!

基本原則:

1 爲保證高可用,副本數設置爲2便可。要求集羣至少要有3個節點,來分開存放主分片、副本。 2 如發現併發量大時,查詢性能會降低,可增長副本數,來提高併發查詢能力。

相關文章
相關標籤/搜索