Elasticsearch 5集群部署與測試

目錄

Elasticsearch 5集群部署與測試..............................................................................1

目錄.......................................................................................................................2

一示绊、Elasticsearch 5的新特性.................................................................................3

1.1為什么版本直接跳到5.x.x....................................................................................3

1.2ES5新增特性.....................................................................................................4

1.2.1性能相關(guān)的特性...............................................................................................4

1.2.2新增數(shù)據(jù)轉(zhuǎn)換功能節(jié)點(diǎn).....................................................................................4

1.2.3接口方面.........................................................................................................5

二、ES5集群的部署................................................................................................5

2.1部署前系統(tǒng)相關(guān)的配置........................................................................................6

2.1.1為ES創(chuàng)建系統(tǒng)用戶............................................................................................6

2.1.2安裝Java運(yùn)行環(huán)境............................................................................................6

2.1.3修改/etc/security/limits.conf...........................................................................6

2.1.4/etc/sysctl.conf添加配置信息..........................................................................6

2.2安裝ES5............................................................................................................7

2.2.1下載ES5安裝文件............................................................................................7

2.2.2配置ES5.........................................................................................................7

2.2.3配置JVM參數(shù).................................................................................................7

2.2.4啟動ES5實(shí)例..................................................................................................8

2.2.5部署ES5集群..................................................................................................8

2.3驗(yàn)證ES5集群...................................................................................................8

三、集群性能測試...................................................................................................8

3.1集群節(jié)點(diǎn)的配置..................................................................................................8

3.2性能測試............................................................................................................9

3.2.1索引性能測試...................................................................................................9

3.2.2檢索性能測試..................................................................................................10

四、ES5數(shù)據(jù)安全性................................................................................................11

4.1索引數(shù)據(jù)安全性..................................................................................................12

4.2索引數(shù)據(jù)訪問的安全控制....................................................................................12

五、參考鏈接..........................................................................................................14

2016年10月Elastic發(fā)布了Elasticsearch 5.0.0(以下簡稱ES5)案怯。根據(jù)官方公布信息荠瘪,該版本在性能和功能上都有很大提升段化,我們準(zhǔn)備將現(xiàn)有的Elasticsearch 2.2.0集群直接升級到ES5茵休。升級前采用少量機(jī)器部署ES5集群,進(jìn)行試用及性能測試∈中現(xiàn)從ES5的新特性榕莺,集群安裝部署,性能調(diào)試測試及集群安全性等幾個方面分享一下我對ES5理解棵介,如有不對之處钉鸯,敬請指正。

一邮辽、Elasticsearch 5的新特性

1.1為什么版本直接跳到5.x.x

介紹ES5的新特性之前唠雕,首先說說這次ES的版本為什么直接從2.x.x直接跳到5.x.x贸营。主要是為了統(tǒng)一版本。由于ELK過去的版本比較混亂岩睁,Elasticsearch和Logstash的版本號是2.x.x钞脂,Kibana是4.x.x〔度澹看看下面這張圖冰啃,就清楚過去版本號有多亂了。

這些產(chǎn)品復(fù)雜的版本號刘莹,很容易產(chǎn)生產(chǎn)品之間版本兼容性的問題阎毅。所以這次為了統(tǒng)一一下版本號,統(tǒng)一將所有產(chǎn)品的版本號升級到5.x.x点弯,版本號前三位相同的產(chǎn)品相互兼容扇调。

1.2ES5新增特性

ES5新增特性非常之多,這里從我們的業(yè)務(wù)需求出發(fā)抢肛,分享一下我認(rèn)為比較重要的新增特性狼钮。

1.2.1性能相關(guān)的特性

第一個就是ES內(nèi)置Lucene升級到6.2.0。Lucene 6針對數(shù)字和地理位置類型增加了叫K-Ds樹的點(diǎn)數(shù)據(jù)結(jié)構(gòu)雌团,改變了對數(shù)字類型的索引和搜索燃领。采用這種點(diǎn)數(shù)據(jù)結(jié)構(gòu),使得索引的速度提高71%锦援,檢索速度提高36%猛蔽,同時索引的大小減少66%。關(guān)于Lucene

6.2.0的相關(guān)特性灵寺,可以查看Lucene官網(wǎng)(http://lucene.apache.org)曼库。

引入新的字段類型Keyword/Text代替String,即將原來的String類型分成兩種數(shù)據(jù)類型略板。Keyword類型適合那些不需要分詞毁枯,需要完全匹配的文本內(nèi)容,這種類型對過濾和聚合操作非常方便叮称。Text類型適合需要全文檢索對文本內(nèi)容分詞的字段類型种玛。

在Internal Engine層移除同一文檔并發(fā)更新的競爭鎖,并發(fā)更新的場景下瓤檐,可以帶來15%-20%的性能提高赂韵。

另外,ES5在聚合和分頁查詢性能方面也做了很大優(yōu)化挠蛉。

1.2.2新增數(shù)據(jù)轉(zhuǎn)換功能節(jié)點(diǎn)

ES5中祭示,新增數(shù)據(jù)轉(zhuǎn)換功能節(jié)點(diǎn)(Ingest

Nodes),使得ES5本身就可以實(shí)現(xiàn)Logstash常用的數(shù)據(jù)過濾能力谴古,比如data质涛、split稠歉、convert、grok等汇陆。通過定義管道怒炸,實(shí)現(xiàn)在索引之前對文檔進(jìn)行預(yù)處理。默認(rèn)情況下瞬测,節(jié)點(diǎn)自動開啟了數(shù)據(jù)轉(zhuǎn)換功能横媚。數(shù)據(jù)轉(zhuǎn)換對節(jié)點(diǎn)性能有一定的消耗,如需關(guān)閉節(jié)點(diǎn)的轉(zhuǎn)換功能月趟,可以在配置文件(elasticsearch.yml)中添加node.ingest: false配置灯蝴。

1.2.3接口方面

新增Shrink接口。ES5之前孝宗,索引的分片數(shù)一旦設(shè)定穷躁,將不能修改。如果要修改因妇,只能重新創(chuàng)建索引问潭。Shrink接口可以在不重建索引的前提下將分片數(shù)收縮成它的因數(shù),比如之前是16個分片婚被,可以收縮成8個或4個狡忙。針對這樣的場景,寫數(shù)據(jù)壓力非常大時址芯,設(shè)置足夠多的分片灾茁,充分利分片的并行寫能力,提高寫入速度谷炸,后期寫數(shù)據(jù)量較小時北专,收縮分片數(shù),提高查詢性能旬陡,非常方便拓颓。

新增Rollover接口。該接口對于日志類的數(shù)據(jù)按天來對索引進(jìn)行分割非常方便描孟。比如我們創(chuàng)建一個logs0001的索引驶睦,并為它指定一個叫l(wèi)ogs_write的別名,然后給logs_write設(shè)置一個rollover規(guī)則匿醒,索引文檔最多保存一天的數(shù)據(jù)啥繁,超過一天的數(shù)據(jù),logs_write別名自動切換到logs0002的索引上青抛。

新增Java REST Client客戶端。Java REST Client是基于HTTP協(xié)議的客戶端酬核,使用時不需要依賴Elasticsearch

Jar包蜜另,可以消除開發(fā)時Jar包沖突适室。并且性能和Transport

Client不相上下。

二举瑰、ES5集群的部署

本次ES集群部署選用CentOS操作系統(tǒng)捣辆,ES5要求CentOS 6及以上的版本。

2.1部署前系統(tǒng)相關(guān)的配置

生產(chǎn)環(huán)境部署ES5此迅,啟動時會對系統(tǒng)環(huán)境配置進(jìn)行檢查汽畴,如果發(fā)現(xiàn)系統(tǒng)環(huán)境不滿足條件,則不能正常啟動耸序。因此部署ES前忍些,需要對CentOS系統(tǒng)時進(jìn)行優(yōu)化配置。

2.1.1為ES創(chuàng)建系統(tǒng)用戶

ES5不能直接使用root用戶啟動坎怪,因此安裝前要為ES創(chuàng)建安裝系統(tǒng)用戶罢坝。

groupadd es

useradd es -g es

passwd es

2.1.2安裝Java運(yùn)行環(huán)境

ES5要求Java 8,建議安裝Oracle JDK version 1.8.0_73搅窿。

2.1.3修改/etc/security/limits.conf

es - nofile 65536#open files

es soft nproc 65536#max user processes

es hard nproc 65536#max user processes

es soft memlock unlimited#virtual memory

es hard memlock unlimited#virtual memory

2.1.4/etc/sysctl.conf添加配置信息

vm.max_map_count=262144

/sbin/sysctl-p#生效配置

2.2安裝ES5

2.2.1下載ES5安裝文件

tar-xvf elasticsearch-5.0.0.tar.gz -C /usr/local/

ln-s elasticsearch-5.0.0 elasticsearch

chown-R es:es elasticsearch

chown-R es:es elasticsearch-5.0.0

2.2.2配置ES5

ES5的配置文件在home目錄下config/elasticsearch.yml嘁酿,建議設(shè)置以下配置優(yōu)化項。

cluster.name: es5-cluster#集群名男应,同一個集群中的節(jié)點(diǎn)集群名稱相同

node.name: node1#節(jié)點(diǎn)名稱

path.data: /data1/es5/#索引數(shù)據(jù)存放目錄闹司,可以指定多個,提升IO性能

path.logs: /var/log/es5/#日志存放目錄

bootstrap.memory_lock: true#是否開啟內(nèi)存鎖定沐飘,默認(rèn)為false游桩。建議開啟

network.host: 10.210.136.34#節(jié)點(diǎn)綁定的IP地址

http.port: 9200#http端口,一臺機(jī)器啟動多個實(shí)例時薪铜,修改端口

node.master: true#是否為master節(jié)點(diǎn)众弓,默認(rèn)為true

node.data: true#是否為數(shù)據(jù)節(jié)點(diǎn),默認(rèn)為true

node.ingest: true#是否為數(shù)據(jù)轉(zhuǎn)換節(jié)點(diǎn)隔箍,默認(rèn)為true

discovery.zen.ping.unicast.hosts: [“10.*.*.1””]#配置集群內(nèi)其它節(jié)點(diǎn)的IP

discovery.zen.minimum_master_nodes: 3

#該配置用于集群網(wǎng)絡(luò)出現(xiàn)異常時谓娃,防止腦裂導(dǎo)致的索引數(shù)據(jù)丟失。配置為:(集群中master節(jié)點(diǎn)總數(shù))/ 2 + 1

2.2.3配置JVM參數(shù)

ES5實(shí)例啟動的JVM參數(shù)統(tǒng)一配置在config/jvm.options文件中蜒滩。

-Xms12g#初始化堆內(nèi)存大小

-Xmx12g#堆內(nèi)存

建議一臺主機(jī)滨达,啟動單個ES實(shí)例,最大堆內(nèi)存不超過主機(jī)內(nèi)存的50%俯艰,且最大不要超過32G捡遍。

2.2.4啟動ES5實(shí)例

cd$ES_HOME/bin

./elasticsearch-d -p pid#以守護(hù)進(jìn)程啟動

kill`cat pid`#關(guān)閉ES實(shí)例

2.2.5部署ES5集群

各節(jié)點(diǎn)啟動ES5實(shí)例后,cluster.name相同的節(jié)點(diǎn)會自動發(fā)現(xiàn)節(jié)點(diǎn)竹握。當(dāng)集群規(guī)模較大時画株,需要master節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)分開,以提升性能。

master節(jié)點(diǎn)配置如下:

node.master:true#開啟master節(jié)點(diǎn)角色

node.data:false#關(guān)閉data節(jié)點(diǎn)角色

node.ingest:false#關(guān)閉ingest節(jié)點(diǎn)角色

data節(jié)點(diǎn)的配置如下:

node.master:true#關(guān)閉master節(jié)點(diǎn)角色

node.data:false#開啟data節(jié)點(diǎn)角色

node.ingest:false#關(guān)閉ingest節(jié)點(diǎn)角色

2.3驗(yàn)證ES5集群

通過REST API查看集群狀態(tài)谓传,驗(yàn)證集群部署是否成功蜈项。

GET_cluster/health?pretty#查看集群健康狀態(tài)

GET_cluster/stats?human&pretty

GET_cluster/state?pretty

GET_nodes/stats?pretty#查看集群各節(jié)點(diǎn)的狀態(tài)

三、集群性能測試

3.1集群節(jié)點(diǎn)的配置

ES5測試集群使用四臺服務(wù)器搭建续挟,機(jī)器的詳細(xì)配置如下表紧卒。集群及客戶端網(wǎng)絡(luò)帶寬為百兆網(wǎng)絡(luò)。


3.2性能測試

3.2.1索引性能測試

索引測試程序诗祸,使用Native Java Client批量向集群索引數(shù)據(jù)跑芳。測試程序部署在集群同局域網(wǎng)內(nèi)的一臺服務(wù)器上,使用多線程開啟多個Transport Client連接集群直颅。我們的業(yè)務(wù)是索引日志數(shù)據(jù)博个,檢索是完全匹配,用不上ES搜索引擎方面的功能际乘。創(chuàng)建索引時坡倔,在mapping配置中關(guān)閉了記錄打分和對字段的分詞功能,以提升索引性能脖含。

每條測試數(shù)據(jù)的大小266個字節(jié)罪塔,批量向集群索引1.5億條數(shù)據(jù),平均索引速度可達(dá)到4萬條/秒养葵。

索引速度

索引狀態(tài)監(jiān)控圖:

3.2.2檢索性能測試

ES5提供幾乎實(shí)時的數(shù)據(jù)操作和檢索功能征堪,默認(rèn)情況下,數(shù)據(jù)從索引/更新/刪除到它作用到檢索結(jié)果中关拒,有一秒鐘的延遲佃蚜。

為了測試ES5集群檢索的性能,首先往集群中索引1.6億條數(shù)據(jù)着绊,索引大小為33.7GB谐算。使用Transport

Client客戶端,采用多線程方式開啟20個客戶端連接集群归露,循環(huán)發(fā)起40萬次檢索請求洲脂。此時集群檢索的平均響應(yīng)時間是20毫秒。

檢索速度


集群節(jié)點(diǎn)的負(fù)載:

負(fù)載

大家可以看到集群master節(jié)點(diǎn)的負(fù)載非常高剧包,CPU使用接近100%恐锦。由于此次用于測試的機(jī)器并不充足,master節(jié)點(diǎn)還擔(dān)任著data節(jié)點(diǎn)的角色疆液,該節(jié)點(diǎn)負(fù)載比其它節(jié)點(diǎn)要重一铅。生產(chǎn)環(huán)境建議是把master節(jié)點(diǎn)和data節(jié)點(diǎn)分開,以提供更好的性能堕油。

四潘飘、ES5數(shù)據(jù)安全性

ES的數(shù)據(jù)安全性要從兩方面考慮肮之,一方面是索引數(shù)據(jù)本身的安全性,另一方面是數(shù)據(jù)訪問的安全控制卜录。

4.1索引數(shù)據(jù)安全性

ES5提供副本機(jī)制保障索引數(shù)據(jù)不會丟失局骤。索引的副本數(shù),創(chuàng)建索引時可以設(shè)置暴凑,默認(rèn)為1,如果要提高索引數(shù)據(jù)的安全性赘来,可以加大副本數(shù)现喳。

4.2索引數(shù)據(jù)訪問的安全控制

ES5本身在數(shù)據(jù)訪問安全控制這方面,沒有做任何限制犬辰。存在以下安全問題:

n索引數(shù)據(jù)訪問無權(quán)限控制嗦篱,任何客戶端能過API都可以訪問集群中的索引數(shù)據(jù);

n節(jié)點(diǎn)加入集群無安全驗(yàn)證幌缝,網(wǎng)絡(luò)聯(lián)通的機(jī)器通過配置都可以加入到集群當(dāng)中灸促;

n集群中節(jié)點(diǎn)之間數(shù)據(jù)傳輸未加密;

Elastic提供的X-pack插件涵卵,可以解決數(shù)據(jù)訪問安全控制的問題浴栽。X-pack插件安裝簡單,功能強(qiáng)大轿偎,文檔齊全典鸡。但有l(wèi)icense限制,免費(fèi)的license只提供集群監(jiān)控功能坏晦,而且不開放源代碼萝玷。

X-Pack License

X-pack插件所有功能可以免費(fèi)試用一個月,到期以后一些基本認(rèn)證功能還可以繼續(xù)使用昆婿。由于不開放源碼球碉,后期維護(hù)及擴(kuò)展比較困難。

ES5安全認(rèn)證方面仓蛆,還有另外一個不錯的插件可以選擇--Search Guard睁冬。該插件也是商業(yè)插件,但免費(fèi)許可的功能已可以滿足需求多律。


Search Guard架構(gòu)圖

該插件提供豐富認(rèn)證功能痴突,開放全部源代碼,可以很方便與企業(yè)內(nèi)部的認(rèn)證系統(tǒng)進(jìn)行集成狼荞,擴(kuò)展性較好辽装!Search Guard詳細(xì)信息,可以查看官網(wǎng)https://floragunn.com/相味。

五拾积、參考鏈接

http://lucene.apache.org/

https://www.elastic.co/

https://floragunn.com/

http://www.infoq.com/cn/news/2016/08/Elasticsearch-5-0-Elastic

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拓巧,更是在濱河造成了極大的恐慌斯碌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肛度,死亡現(xiàn)場離奇詭異傻唾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)承耿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門冠骄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人加袋,你說我怎么就攤上這事凛辣。” “怎么了职烧?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵扁誓,是天一觀的道長。 經(jīng)常有香客問我蚀之,道長蝗敢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任恬总,我火速辦了婚禮前普,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘壹堰。我一直安慰自己拭卿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布贱纠。 她就那樣靜靜地躺著峻厚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谆焊。 梳的紋絲不亂的頭發(fā)上惠桃,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機(jī)與錄音辖试,去河邊找鬼辜王。 笑死,一個胖子當(dāng)著我的面吹牛罐孝,可吹牛的內(nèi)容都是我干的呐馆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼莲兢,長吁一口氣:“原來是場噩夢啊……” “哼汹来!你這毒婦竟也來了续膳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤收班,失蹤者是張志新(化名)和其女友劉穎坟岔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摔桦,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡社付,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了邻耕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘦穆。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赊豌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绵咱,我是刑警寧澤碘饼,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站悲伶,受9級特大地震影響艾恼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜麸锉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一钠绍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧花沉,春花似錦柳爽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至娩脾,卻和暖如春赵誓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柿赊。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工俩功, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碰声。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓诡蜓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親奥邮。 傳聞我的和親對象是個殘疾皇子万牺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容