Elasticsearch 叢集規劃
1. 我們需要多大規模的叢集
需要從以下兩個方面考慮:
- 當前的資料量有多大?資料增長情況如何?
- 你的機器配置如何?cpu、多大記憶體、多大硬碟容量?
推算的依據:
Elasticsearch JVM heap 最大可以設定32G 。
30G heap 大概能處理的資料量 10 T。如果記憶體很大如128G,可在一臺機器上執行多個ES節點例項。
備註:叢集規劃滿足當前資料規模+適量增長規模即可,後續可按需擴充套件。
兩類應用場景:
A. 用於構建業務搜尋功能模組,且多是垂直領域的搜尋。資料量級幾千萬到數十億級別。一般2-4臺機 器的規模。
B. 用於大規模資料的實時OLAP(聯機處理分析),經典的如ELK Stack,資料規模可能達到千億或更 多。幾十到上百節點的規模。
2. 叢集中的節點角色如何分配
節點角色:
Master
node.master: true 節點可以作為主節點
DataNode
node.data: true 預設是資料節點
Coordinate node 協調節點,一個節點只作為接收請求、轉發請求到其他節點、彙總各個節點返回數 據等功能的節點,就叫協調節點,如果僅擔任協調節點,將上兩個配置設為false。
一個節點可以充當一個或多個角色,預設三個角色都有
節點角色如何分配:
A. 小規模叢集,不需嚴格區分。
B. 中大規模叢集(十個以上節點),應考慮單獨的角色充當。特別併發查詢量大,查詢的合併量大,可以增加獨立的協調節點。角色分開的好處是分工分開,不互影響。如不會因協調角色負載過高而影響資料節點的能力。
3. 如何避免腦裂問題
腦裂問題: 一個叢集中只有一個A主節點,A主節點因為需要處理的東西太多或者網路過於繁忙,從而導致其他從節 點ping不通A主節點,這樣其他從節點就會認為A主節點不可用了,就會重新選出一個新的主節點B。過 了一會A主節點恢復正常了,這樣就出現了兩個主節點,導致一部分資料來源於A主節點,另外一部分數 據來源於B主節點,出現資料不一致問題,這就是腦裂。
6.x和之前版本 儘量避免腦裂,需要新增最小數量的主節點配置:
discovery.zen.minimum_master_nodes: (有master資格節點數/2) + 1 這個引數控制的是,選舉主節點時需要看到最少多少個具有master資格的活節點,才能進行選舉。官方 的推薦值是(N/2)+1,其中N是具有master資格的節點的數量。
在新版7.X的ES中,對es的叢集發現系統做了調整,不再有discovery.zen.minimum_master_nodes這 個控制叢集腦裂的配置,轉而由叢集自主控制,並且新版在啟動一個新的叢集的時候需要有 cluster.initial_master_nodes初始化叢集列表。
在es7中,discovery.zen.* 開頭的引數,有些已經失效
常用做法(中大規模叢集):
1)Master 和 dataNode 角色分開,配置奇數個master,如3
2)單播發現機制,配置master資格節點(5.0之前): discovery.zen.ping.multicast.enabled: false —— 關閉多播發現機制,預設是關閉的
3)延長ping master的等待時長
discovery.zen.ping_timeout: 30(預設值是3秒)——其他節點ping主節點多久時間沒有響應就認為主節點不可用了。
es7中換成了 discovery.request_peers_timeout
4 索引應該設定多少個分片
說明:分片數指定後不可變,除非重建索引。
分片設定的可參考原則:
ElasticSearch推薦的最大JVM堆空間是30~32G, 所以把你的分片最大容量限制為30GB, 然後再對分片數 量做合理估算. 例如, 你認為你的資料能達到200GB, 推薦你最多分配7到8個分片。
在開始階段, 一個好的方案是根據你的節點數量按照1.5~3倍的原則來建立分片. 例如,如果你有3個節點, 則推薦你建立的分片數最多不超過9(3x3)個。當效能下降時,增加節點,ES會平衡分片的放置。 對於基於日期的索引需求, 並且對索引資料的搜尋場景非常少. 也許這些索引量將達到成百上千, 但每個 索引的資料量只有1GB甚至更小. 對於這種類似場景, 建議只需要為索引分配1個分片。如日誌管理就是 一個日期的索引需求,日期索引會很多,但每個索引存放的日誌資料量就很少。
5. 分片應該設定幾個副本
副本設定基本原則:
為保證高可用,副本數設定為2即可。要求叢集至少要有3個節點,來分開存放主分片、副本。 如發現併發量大時,查詢效能會下降,可增加副本數,來提升併發查詢能力。
注意:新增副本時主節點會自動協調,然後拷貝資料到新增的副本節點,副本數是可以隨時調整的!
PUT /my_temp_index/_settings
{
"number_of_replicas": 1
}
相關文章
- ElasticSearch 叢集的規劃部署與運維Elasticsearch運維
- 騰訊雲Elasticsearch叢集規劃及效能優化實踐Elasticsearch優化
- 管理 ES 叢集:如何對叢集進行容量規劃
- ElasticSearch 7.8.1叢集搭建Elasticsearch
- ElasticSearch 分散式叢集Elasticsearch分散式
- Docker Elasticsearch 叢集配置DockerElasticsearch
- Docker部署ElasticSearch叢集DockerElasticsearch
- Elasticsearch跨叢集同步Elasticsearch
- Elasticsearch使用系列-Docker搭建Elasticsearch叢集ElasticsearchDocker
- Elasticsearch(ES)叢集的搭建Elasticsearch
- ElasticSearch7.6叢集搭建Elasticsearch
- (三)docker-Elasticsearch 叢集DockerElasticsearch
- elasticsearch如何設計叢集Elasticsearch
- Elasticsearch叢集升級指引Elasticsearch
- elasticsearch-6.7.1叢集搭建Elasticsearch
- elasticsearch(三)---分散式叢集Elasticsearch分散式
- Elasticsearch6.2叢集搭建Elasticsearch
- Hadoop 叢集角色和節點數規劃建議Hadoop
- CentOS部署ElasticSearch7.6.1叢集CentOSElasticsearch
- Elasticsearch——叢集管理及文件CRUDElasticsearch
- PB 級大規模 Elasticsearch 叢集運維與調優實踐Elasticsearch運維
- Elasticsearch(二)--叢集原理及優化Elasticsearch優化
- elasticsearch跨叢集資料遷移Elasticsearch
- CentOS7系統規劃搭建 kubernetes 叢集詳細教程。CentOS
- 使用Kubeadm建立k8s叢集之部署規劃(三十)K8S
- 樹莓派部署Elasticsearch6叢集樹莓派Elasticsearch
- Elasticsearch系列---生產叢集的索引管理Elasticsearch索引
- Elasticsearch叢集的備份與恢復Elasticsearch
- Elasticsearch 叢集誇網路快照遷移Elasticsearch
- 滴滴 Elasticsearch 多叢集架構實踐Elasticsearch架構
- Elasticsearch叢集運維相關知識Elasticsearch運維
- 使用docker-compose構建elasticsearch叢集DockerElasticsearch
- Elasticsearch高階之-叢集搭建,資料分片Elasticsearch
- Elasticsearch 第九篇:叢集配置與搭建Elasticsearch
- 400+ 節點的 Elasticsearch 叢集運維Elasticsearch運維
- 400+節點的 Elasticsearch 叢集運維Elasticsearch運維
- 手把手教你搭建一個 Elasticsearch 叢集Elasticsearch
- Elasticsearch叢集搭建教程及生產環境配置Elasticsearch