Elasticsearch簡(jiǎn)單使用系列--安裝

1.elasticsearch支持的操作系統(tǒng)和JVM 版本
https://www.elastic.co/support/matrix
2.下載安裝啟動(dòng)elasticsearch
下載地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.2.tar.gz
解壓:tar -xzf elasticsearch-5.4.2.tar.gz
啟動(dòng):$ES_HOME/bin/elasticsearch -d  -Ecluster.name=my_cluster -Enode.name=node_1
    說(shuō)明: -d 后臺(tái)進(jìn)程
         -Ecluster.name 集群名字
         -Enode.name 節(jié)點(diǎn)名字
         -Epath.conf es配置文件,默認(rèn)elasticsearch.yml
         -Epath.data 節(jié)點(diǎn)上索引/分片的數(shù)據(jù)文件位置
         -Epath.logs 日志文件位置
         -Epath.scripts 腳本文件位置
3.es的配置文件有兩個(gè):
1>.elasticsearch.yml 配置es,使用YAML格式,可以使用${}標(biāo)記引用環(huán)境變量,比如:
    node.name:    ${HOSTNAME}
    network.host: ${ES_NETWORK_HOST}
    
2>.log4j2.properties 配置es日志生成方式,具體參考: http://logging.apache.org/log4j/2.x/manual/configuration.html
4.es的安全配置
使用elasticsearch-keystore工具管理
1>.bin/elasticsearch-keystore create 創(chuàng)建一個(gè)和es配置同目錄的elasticsearch.keystore文件
2>.bin/elasticsearch-keystore add key 添加一個(gè)key字段,tool提示輸入值
3>.bin/elasticsearch-keystore list 列出keystore中所有的命令key
4>.bin/elasticsearch-keystore remove key 刪除keystore中的命令key
5.es的引導(dǎo)檢查或者自舉檢查
es啟動(dòng)時(shí)進(jìn)行引導(dǎo)檢查,包括es配置和系統(tǒng)配置,確保這些配置操作es是安全的.在開(kāi)發(fā)模式下,引導(dǎo)失敗會(huì)在日志中出現(xiàn)警告;在生產(chǎn)模式下,引導(dǎo)失敗,es會(huì)重新加在配置啟動(dòng).
1>.堆大小檢查
    如果jvm的Xms和Xmx不相等,使用系統(tǒng)過(guò)程中由于堆大小重置,很容易出現(xiàn)停頓現(xiàn)象,所以需要設(shè)置Xms=Xmx;
    如果bootstrap.memory_lock=true,jvm啟動(dòng)時(shí)會(huì)鎖住堆初始化大小,重置堆后不會(huì)出現(xiàn)將所有的jvm堆都鎖住.
    
    設(shè)置:jvm.options
        -Xms2g
        -Xmx2g
        
2>.文件描述符
    文件描述符是Unix用來(lái)跟蹤打開(kāi)的文件,在Unix中一切皆文件.es請(qǐng)求許多文件描述符,如分片是由很多分段以及其他文件組成.文件描     述符檢查在OS X和Linux上是強(qiáng)制的.
    
3>.內(nèi)存鎖檢查
    檢查boostrap.memory_lock啟用,jvm成功鎖住堆.  
    當(dāng)jvm做一個(gè)較大的gc時(shí),觸發(fā)堆的每一頁(yè),如果這些頁(yè)交換到磁盤(pán)了,gc完成時(shí)會(huì)被重新導(dǎo)入內(nèi)存,這會(huì)引起磁盤(pán)抖動(dòng),es更擅長(zhǎng)使用服務(wù)請(qǐng)求,避免這種情況可以使用內(nèi)存堆鎖(Unix使用mlockall,windows使用virtual lock),在es中通過(guò)啟用boostrap.memory_lock使用,特別注意要限制memlock.
    
4>.最大線程數(shù)檢查
    es執(zhí)行的請(qǐng)求被劃分為多個(gè)階段,然后推給線程池執(zhí)行.es有多鐘任務(wù)所以對(duì)應(yīng)多種線程池執(zhí)行器,因此要求es有創(chuàng)建許多線程的能力.最大線程數(shù)檢查確保es正常使用下能正確創(chuàng)建足夠的線程.在Linux上該檢查是強(qiáng)制的,可以通過(guò)系統(tǒng)配置/etc/security/limits.conf文件,使用nproc設(shè)置,最少要設(shè)置2048個(gè)線程.
    
5>.最大虛擬內(nèi)存檢查
    es和Lucerne使用mmap將索引部分隱射到es的地址空間,可以使得索引數(shù)據(jù)遠(yuǎn)離jvm堆而又能快速訪問(wèn),所以es需要無(wú)限制的地址空間.最大虛擬內(nèi)存檢查強(qiáng)制檢查es有處理無(wú)限的地址空間,并且只有Linux上強(qiáng)制的.在Linux上在/etc/security/limits.conf文件使用as設(shè)置無(wú)限的地址空間.
    
6>.最大隱射數(shù)檢查
    為了使用mmap,es需要?jiǎng)?chuàng)建許多內(nèi)存隱射區(qū)域.最大隱射數(shù)檢查內(nèi)核允許處理最少262144內(nèi)存隱射區(qū)域,并且只有Linux是強(qiáng)制的.通過(guò)vm.max_map_count=262144.
    
7>.客戶端jvm檢查
    OpenJDK有兩種jvm驅(qū)動(dòng):客戶端jvm和服務(wù)端jvm,它們以不同的編譯方式執(zhí)行字節(jié)碼.客戶端jvm可以獲得啟動(dòng)時(shí)間和內(nèi)存占用空間;而服務(wù)端jvm可以獲得最大性能,兩種jvm在性能方面存在巨大差距.客戶端jvm檢查保證es不會(huì)運(yùn)行在客戶端jvm中.現(xiàn)在的系統(tǒng)和操作系統(tǒng),默認(rèn)使用服務(wù)端vm,另外,es強(qiáng)制設(shè)置為服務(wù)端vm.
    
8>.使用串行g(shù)c回收器檢查
    基于OpenJDK的jvm有幾種垃圾回收器,針對(duì)不同的工作負(fù)載.其中串行垃圾回收器特別適合于單核cpu,非常小的堆內(nèi)存,但是es不適合這兩種場(chǎng)合.假如es使用了串行回收對(duì)性能是毀滅性的.因此串行回收器保證es不會(huì)運(yùn)行在串行回收機(jī)制下.默認(rèn)jvm配置是隨著es的配置改變的,es使用CMS(Concurrent Low Pause Collector,少停頓的并發(fā)回收器)
    
9>.系統(tǒng)調(diào)用過(guò)濾器檢查
    es對(duì)不同的OS安裝不同種類的系統(tǒng)調(diào)用過(guò)濾器.安裝系統(tǒng)調(diào)用過(guò)濾器可以保護(hù)執(zhí)行系統(tǒng)調(diào)用分支對(duì)抗惡意代碼攻擊能力.es系統(tǒng)調(diào)用過(guò)濾器確保是否啟用了系統(tǒng)調(diào)用過(guò)濾器,如果啟用了會(huì)被成功安裝.可以通過(guò)bootstrap.system_call_filter=false禁用.
    
10>.錯(cuò)誤和OOM檢查
    JVM啟用選項(xiàng)OnError和OnOutOfMemoryError,執(zhí)行任意命令會(huì)出現(xiàn)致命錯(cuò)誤(OnError)或內(nèi)存溢出錯(cuò)誤,但是es的系統(tǒng)調(diào)用過(guò)濾器啟用時(shí),會(huì)阻止這種錯(cuò)誤.所以O(shè)nError和OOM與系統(tǒng)調(diào)用過(guò)濾器時(shí)互斥的.OnError和OOM檢查從es啟動(dòng)時(shí)阻止使用jvm選項(xiàng)或者啟用系統(tǒng)調(diào)用過(guò)濾器中的一種.這個(gè)檢查是強(qiáng)制的.
    
11>.早期訪問(wèn)檢查
    OpenJDK項(xiàng)目提供了早期訪問(wèn)即將發(fā)布的快照版本.這些發(fā)布版,不適合用于生產(chǎn)環(huán)境.早期訪問(wèn)檢查檢測(cè)這些早期訪問(wèn)快照版本.
    
12>.G1 GC檢查
    HotSpot在JDK 8u40以前,如果啟用了G1 GC會(huì)出現(xiàn)索引損壞.G1 GC檢查可以檢測(cè)這些早期HotSpot JVM版本.
6. 重要的系統(tǒng)配置
    理想情況下,es應(yīng)該運(yùn)行于單獨(dú)的服務(wù)器,并使用所有可用的資源.因此,生產(chǎn)環(huán)境下需要設(shè)置以下配置:
    JVM堆大小
    禁用交換
    增加文件描述符
    確保足夠的虛擬內(nèi)存
    確保足夠的線程
    
    注意:如果在開(kāi)發(fā)模式下,上面的任何一個(gè)設(shè)置沒(méi)有配置正確,es出現(xiàn)警告并記錄到日志,es node 可以啟動(dòng)和運(yùn)行.
        如果一配置網(wǎng)絡(luò)設(shè)置比如network.host,es會(huì)認(rèn)為是生產(chǎn)環(huán)境,將警告改為異常,阻止node啟動(dòng),這種安全處理保證不會(huì)丟失數(shù)據(jù).
6.1 配置系統(tǒng)設(shè)置
配置系統(tǒng)設(shè)置依賴于使用的es安裝包和操作系統(tǒng).
使用.zip或.tar.gz包,配置可以使用: 
    臨時(shí)配置 ulimit 和 永久配置 /etc/security/limits.conf
    
使用RPM或Debian包,大多數(shù)配置在系統(tǒng)配置文件中:
    RPM /etc/sysconfig/elasticsearch
    Debian /etc/default/elasticsearch
    
使用systemd的系統(tǒng)配置需要在systemd配置文件:
    /usr/lib/systemd/system/elasticsearch.service
    
例子參考: https://www.elastic.co/guide/en/elasticsearch/reference/current/setting-system-settings.html
6.2 通過(guò)jvm.options設(shè)置jvm堆大小
默認(rèn)es告訴jvm使用一個(gè)最小和最大都為2G的堆.如果在生產(chǎn)環(huán)境下,需要配置堆大小保證es有足夠的可用的堆.

好的規(guī)則如下:
1> 設(shè)置堆的最小最大值相等;
2> es可用的堆越多,可以使用的緩存就越多.但是太大的堆會(huì)造成垃圾回收停頓變長(zhǎng);
3> Xmx不能超過(guò)物理內(nèi)存的50%,確保有足夠的內(nèi)存留下,緩存內(nèi)核文件系統(tǒng);
4> Xmx不要大于jvm壓縮對(duì)象指針的臨界值,準(zhǔn)確臨界值接近32G;
6.3 禁用交換
大多數(shù)操作系統(tǒng)使用盡可能多的內(nèi)存緩存文件系統(tǒng),同時(shí)交換未使用的應(yīng)用內(nèi)存,這種情形在jvm堆或執(zhí)行堆的ye時(shí)引起交換.交換對(duì)節(jié)點(diǎn)穩(wěn)定性時(shí)非常壞的.會(huì)導(dǎo)致幾分鐘垃圾回收或節(jié)點(diǎn)響應(yīng)緩慢或從集群斷開(kāi)等.在彈性分布式系統(tǒng)中,節(jié)點(diǎn)可能被操作系統(tǒng)殺死.有三種方式可以禁用交換:
1> 禁用所有的交換
Linux上臨時(shí)禁用: swapoff -a;永久禁用: 注釋掉/etc/fastab中所有包含swap的行
windows系統(tǒng)禁用: System Properties → Advanced → Performance → Advanced → Virtual memory

2> 設(shè)置交換參數(shù)(swappiness)
Linux系統(tǒng)設(shè)置vm.sappiness=1,減少內(nèi)核的交換,正常情況下不會(huì)導(dǎo)致交換,當(dāng)特殊緊急情況會(huì)交換

3. 啟用bootstrap.memory_lock
在elasticsearch.yml設(shè)置bootstrap.memory_lock: true

驗(yàn)證是否禁用成功: http://192.168.0.128:9200/_nodes?filter_path=**.mlockall
如果出現(xiàn)了mlockall is false,說(shuō)明mlockall請(qǐng)求失敗,有詳細(xì)的說(shuō)明,這時(shí)需要檢查是否有鎖內(nèi)存的權(quán)限.具體操作見(jiàn):https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration-memory.html
6.3 增加文件描述符
文件描述符只與Linux,macOS有關(guān),windows會(huì)被安全忽略.
es使用許多文件描述符或文件處理器.由于運(yùn)行文件描述符可能導(dǎo)致數(shù)據(jù)丟失.所以需要增加文件描述符的數(shù)為65536或者更高.
對(duì)于.zip或.tar.gz包,使用ulimit -n 65536 或者 /etc/security/limits.conf 設(shè)置 nofile 65536

查看每個(gè)節(jié)點(diǎn)的max_file_descriptors配置
http://192.168.0.128:9200/_nodes/stats/process?filter_path=**.max_file_descriptors
6.3 確保足夠的虛擬內(nèi)存
OS限制mmap數(shù)很低,導(dǎo)致OOM,在Linux上以root身份使用命令: sysctl -w vm.max_map_count=262144

RPM和Debian包會(huì)自動(dòng)配置.
6.3 確保足夠的線程
臨時(shí)設(shè)置: ulimit -u 2048 
永久設(shè)置: /etc/security/limits.conf中設(shè)置nproc位2048
7 es常用的配置
# ---------------------------------- Cluster -----------------------------------
#集群名字:所有節(jié)點(diǎn)共享,默認(rèn)是elasticsearch
cluster.name: es-cluster

# ------------------------------------ Node ------------------------------------

#節(jié)點(diǎn)名字:es默認(rèn)使用uuid的前7個(gè)字符作為node id,節(jié)點(diǎn)名字生成后不能更改.
node.name: ${HOSTNAME}
#是否是master節(jié)點(diǎn)
node.master: true
ode.attr.rack: r1


# 配置es數(shù)據(jù)和日志目錄,不要使用默認(rèn)的,因?yàn)樯?jí)時(shí)會(huì)被刪掉
path:
    data: ../data
    logs: ../logs

#path.data可以設(shè)置多個(gè)目錄,這些目錄都用來(lái)存儲(chǔ)數(shù)據(jù),相同分片數(shù)據(jù)存儲(chǔ)相同路徑    
#path:
#  data:
#    - /mnt/elasticsearch_1
#   - /mnt/elasticsearch_2
#  - /mnt/elasticsearch_3    

# ----------------------------------- Memory -----------------------------------

#導(dǎo)出node的健康數(shù)據(jù)到磁盤(pán)
bootstrap.memory_lock: true

# ---------------------------------- Network -----------------------------------

#節(jié)點(diǎn)ip,默認(rèn)單個(gè)節(jié)點(diǎn)使用回環(huán)地址127.0.0.1或[::1]就足夠了;如果是集群,為了通信需要指定ip.
network.host: 192.168.0.128
#rest api端口,可以通過(guò)瀏覽器訪問(wèn)
http.port: 9200
#集群間通信端口號(hào)尚骄,在同一機(jī)器下必須不一樣
transport.tcp.port: 9300

# --------------------------------- Discovery ----------------------------------

#同一個(gè)服務(wù)器,啟動(dòng)多個(gè)node,可以不用配置,es會(huì)綁定到回環(huán)地址同時(shí)掃描9300-9305運(yùn)行節(jié)點(diǎn)
#在不同的服務(wù)器上的節(jié)點(diǎn)需要指定ip或ip:port或域名
discovery.zen.ping.unicast.hosts: 
    -192.168.0.128:9300
    -192.168.0.128:9301
#    -www.es.com
#   -192.168.0.128 #沒(méi)有指定端口,使用transport.profiles.default.port,失敗了使用transport.tcp.port


#指定合適的最少master節(jié)點(diǎn)數(shù),避免由于網(wǎng)絡(luò)問(wèn)題出現(xiàn)腦裂,造成數(shù)據(jù)丟失,計(jì)算公式(master_eligible_nodes / 2) + 1
#如果有3個(gè)節(jié)點(diǎn),那么設(shè)置為: (3/2) + 1 = 2
discovery.zen.minimum_master_nodes: 1
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市屑彻,隨后出現(xiàn)的幾起案子昧捷,更是在濱河造成了極大的恐慌,老刑警劉巖铐刘,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡九榔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)涡相,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)哲泊,“玉大人,你說(shuō)我怎么就攤上這事催蝗∏型” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵丙号,是天一觀的道長(zhǎng)先朦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)犬缨,這世上最難降的妖魔是什么喳魏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮怀薛,結(jié)果婚禮上刺彩,老公的妹妹穿的比我還像新娘。我一直安慰自己乾戏,他們只是感情好迂苛,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著鼓择,像睡著了一般三幻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呐能,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天念搬,我揣著相機(jī)與錄音,去河邊找鬼摆出。 笑死朗徊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的偎漫。 我是一名探鬼主播爷恳,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼象踊!你這毒婦竟也來(lái)了温亲?” 一聲冷哼從身側(cè)響起棚壁,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎栈虚,沒(méi)想到半個(gè)月后袖外,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡魂务,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年曼验,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粘姜。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鬓照,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出相艇,到底是詐尸還是另有隱情颖杏,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布坛芽,位于F島的核電站留储,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏咙轩。R本人自食惡果不足惜获讳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望活喊。 院中可真熱鬧丐膝,春花似錦、人聲如沸钾菊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)煞烫。三九已至浑此,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滞详,已是汗流浹背凛俱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留料饥,地道東北人蒲犬。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像岸啡,于是被迫代替她去往敵國(guó)和親原叮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)奋隶,斷路器沛慢,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評(píng)論 6 342
  • 版本5.0 官方文檔英文版 本章節(jié)包括內(nèi)容有如何安裝Elasticsearch并且運(yùn)行它: 下載 安裝 啟動(dòng) 配置...
    liycode閱讀 1,458評(píng)論 0 2
  • 1 準(zhǔn)備工作 服務(wù)器信息: 192.168.91.221 (elasticsearch-node1) 192.16...
    淺色的嗥嘯閱讀 2,824評(píng)論 2 9
  • 文/陳慕 早上送陳甜甜上學(xué)的時(shí)候黍聂,她坐在車(chē)上,抬頭看著天空身腻,我問(wèn)她:“你在干什么产还?”她說(shuō):“我在看天空啊”天很藍(lán)。...
    陳慕小姐閱讀 424評(píng)論 3 3