Elasticsearch 架構(gòu)淺析

Elasticsearch是什么

Elasticsearch 是一個(gè)用java語言編寫的分布式開源搜索引擎,內(nèi)部集成了全文搜索引擎框架Apache Lucene,隱藏了Apache Lucene的復(fù)雜性,通過提供簡(jiǎn)單易用的RESTful API,從而實(shí)現(xiàn)對(duì)用戶的開箱即用。

Elasticsearch適用場(chǎng)景

Elasticsearch 主要功能就是為了實(shí)時(shí)搜索,當(dāng)前互聯(lián)網(wǎng)、電商、企業(yè)門戶等場(chǎng)景都有搜索的場(chǎng)景,如電商網(wǎng)站的商品搜索、媒體網(wǎng)站的博客文章搜索、企業(yè)日志分析等業(yè)務(wù)。Elasticsearch已成為當(dāng)下最為流行的搜索框架,熱度已遠(yuǎn)超Solr。

在國內(nèi)各互聯(lián)網(wǎng)電商巨頭已普遍采用Elasticsearch做為搜索基礎(chǔ)架構(gòu)框架,在國外亦是如此,如IT屆比較知名的Stack Overflow(討論程序異常的論壇)、GitHub(全球知名代碼托管平臺(tái),搜索幾千億行代碼)。在數(shù)據(jù)分析方向Elasticsearch一樣出重, 通過提供強(qiáng)大的聚合分析,可以對(duì)海量數(shù)據(jù)進(jìn)行實(shí)時(shí)處理。

Elasticsearch 集群架構(gòu)詳解

一個(gè)Elasticsearch Cluster 由若干node組成,其中node可分為:master node、data node、Coordinating node,如下圖所示:

圖片1.png

上圖集群由一個(gè)master節(jié)點(diǎn)和2個(gè)data節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)上又分別分配了一個(gè)主分片和一個(gè)副本,主分片與副本不能放在同一個(gè)node,否則node出故障丟失數(shù)據(jù)時(shí)無法從副本恢復(fù)。

Master node: 負(fù)責(zé)集群中的元數(shù)據(jù)管理,索引的創(chuàng)建、刪除、分片分配等,不負(fù)責(zé)檢索與聚合。

Data node:數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),主要保存分片數(shù)據(jù),如分片的CRUD、搜索、聚合。所以數(shù)據(jù)節(jié)點(diǎn)的負(fù)載一般較高,比較消耗CPU、IO、內(nèi)存等,建議采用高配置的硬件。

Elasticsearch 集群安全

經(jīng)常碰到某某公司由于Elasticsearch 集群安全配置不當(dāng)導(dǎo)致數(shù)據(jù)丟失,給公司帶來不可估量的損失,甚至導(dǎo)致公司倒閉破產(chǎn),數(shù)據(jù)安全永遠(yuǎn)是使用Elasticsearch的第一考慮因素。以下列舉了必要的措施以防止數(shù)據(jù)泄露。Elasticsearch 的安全主要通過X-pack來實(shí)現(xiàn),

6.3版本及之后:已經(jīng)集成在一起發(fā)布,無需額外安裝,基礎(chǔ)安全屬于付費(fèi)黃金版內(nèi)容。

7 .1版本:基礎(chǔ)安全免費(fèi),建議線上環(huán)境使用7.1及以上版本

  1. 不要將Elasticsearch暴露到公網(wǎng),限制公共端口

1.1 限制9200端口:iptables -A INPUT -i eth0 -p tcp --destination-port 9200 -s {PUBLIC-IP-ADDRESS-HERE} -j DROP

1.2 限制9300——集群內(nèi)部通信端口

iptables -A INPUT -i eth0 -p tcp --destination-port 9300 -s {PUBLIC-IP-ADDRESS-HERE} -j DROP

1.3 限制5601——kibana訪問端口

iptables -A INPUT -i eth0 -p tcp --destination-port 5601 -s {PUBLIC-IP-ADDRESS-HERE} -j DROP

  1. 禁止批量刪除,防止開發(fā)人員有意或者無意刪除數(shù)據(jù)

  2. 定期備份數(shù)據(jù)

  3. 使用7.1及以上版本,X-PACK免費(fèi)使用

Elasticsearch 版本選擇

官方推薦當(dāng)前最新版本往前推3-4個(gè)月對(duì)應(yīng)的版本,不建議現(xiàn)網(wǎng)直接用最新版本,也不建議用太舊的版本,畢竟每次版本升級(jí)對(duì)性能、功能都是有所提升的,用太舊版本無法獲得技術(shù)升級(jí)帶來的紅利。

Elasticsearch 內(nèi)存配置

設(shè)置內(nèi)存為機(jī)器內(nèi)存的一半,但不要超過32G,否則會(huì)JVM會(huì)禁用內(nèi)存指針壓縮,導(dǎo)致內(nèi)存浪費(fèi);內(nèi)存最低配置也不能低于2G,否則會(huì)導(dǎo)致內(nèi)存溢出。

Elasticsearch 核心功能

包括:索引、檢索、聚合、分詞、集群部署安全、備份與恢復(fù)等,后面會(huì)出文章一 一介紹主要核心功能。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容