Elasticsearch 6 重要參數(shù)配置
采用zip或tar.gz的二進(jìn)制包方式安裝的ES,需要配置一系列參數(shù),通過閱讀官方文檔了解到其中重要參數(shù)的配置及其說,下面將逐步進(jìn)行了解。
一、 ElasticSearch參數(shù)配置
1、data和logs路徑配置
如果使用.zip或.tar.gz歸檔文件,則數(shù)據(jù)和日志目錄是$ES_HOME的子文件夾。如果這些重要的文件夾保留在它們的默認(rèn)位置,則在將Elasticsearch升級到新版本時,刪除它們的風(fēng)險很高,建議進(jìn)行修改
其中 data目錄可以設(shè)置多個路徑:
2、集群名稱
默認(rèn)的集群名稱均為elasticsearch,如有多套集群,則必須修改。
3、節(jié)點名稱
默認(rèn)情況下,Elasticsearch將使用隨機(jī)生成的UUID的前七個字符作為節(jié)點id。請注意,節(jié)點id是持久化的,在節(jié)點重啟時不會更改,因此默認(rèn)的節(jié)點名稱也不會更改。建議配置一個更有意義的名稱,它還具有在重新啟動節(jié)點后持久化的優(yōu)點。
或者用主機(jī)名(hostname)作為節(jié)點名
4、network.host
默認(rèn)情況下,Elasticsearch只綁定到環(huán)回地址,例如。127.0.0.1 (::1)。但此配置只能在同一服務(wù)器上運行單個節(jié)點。為了在其他服務(wù)器上形成具有節(jié)點的集群,節(jié)點需要綁定到一個非環(huán)回地址。雖然有許多網(wǎng)絡(luò)設(shè)置,但通常只需要配置network.host。
5、發(fā)現(xiàn)方式設(shè)置
Elasticsearch使用名為“Zen discovery”的自定義發(fā)現(xiàn)實現(xiàn)節(jié)點到節(jié)點的集群選擇。生產(chǎn)上,應(yīng)該配置兩個重要的發(fā)現(xiàn)設(shè)置:
其中,discovery.zen.ping.unicast.hosts 可以設(shè)置為ip:port 、ip(使用默認(rèn)端口時)、域名(可解析的)其中任意一種均可;discovery.zen.minimum_master_nodes 設(shè)置的值建議設(shè)置為 (master_eligible_nodes / 2) + 1。
6. 堆大小設(shè)置
默認(rèn)情況下,Elasticsearch告訴JVM使用大小為最小和最大1 GB的堆。在 jvm.options 文件里 通過Xms(最小堆大小)和Xmx(最大堆大小)設(shè)置的選項。通常設(shè)置規(guī)則如下:
例如:
還可以通過環(huán)境變量設(shè)置堆大小,例如,通過ES_JAVA_OPTS設(shè)置這些值
7、JVM堆轉(zhuǎn)儲路徑
可以在 jvm.options 中的 -XX:HeapDumpPath=...進(jìn)行配置,如果指定一個目錄,JVM將根據(jù)運行實例的PID為堆轉(zhuǎn)儲生成一個文件名。如果指定一個固定的文件名而不是目錄,那么當(dāng)JVM需要對內(nèi)存不足異常執(zhí)行堆轉(zhuǎn)儲時,該文件必須不存在,否則堆轉(zhuǎn)儲將失敗。
8、GC 日志
默認(rèn)情況下,Elasticsearch啟用GC日志。這些都是在jvm中配置的。選項并默認(rèn)為與Elasticsearch日志相同的默認(rèn)位置。默認(rèn)配置每64 MB旋轉(zhuǎn)一次日志,最多可以消耗2 GB的磁盤空間。
9、temp路徑
默認(rèn)情況下,Elasticsearch使用一個私有臨時目錄,啟動腳本在系統(tǒng)臨時目錄下創(chuàng)建該臨時目錄,默認(rèn)情況為/tmp。但如果最近沒有訪問/tmp中的文件和目錄,系統(tǒng)實用程序?qū)⑶宄@些文件和目錄。但是,如果您打算在Linux上長時間運行.tar.gz發(fā)行版,那么應(yīng)該考慮為Elasticsearch創(chuàng)建一個專用的臨時目錄,而不是在清除舊文件和目錄的路徑下。這個目錄應(yīng)該設(shè)置權(quán)限,這樣只有運行Elasticsearch的用戶才能訪問它。然后,在開始Elasticsearch之前,將$ES_TMPDIR環(huán)境變量設(shè)置為指向它。
10、JVM致命錯誤日志
默認(rèn)情況下,Elasticsearch配置JVM將致命錯誤日志寫入默認(rèn)日志目錄/var/log/elasticsearch。如果此路徑不適合接收日志,則應(yīng)修改jvm.options 條目-XX:ErrorFile=…。
二、 重要的系統(tǒng)參數(shù)配置
1、ulimit設(shè)置
建議設(shè)置為65535,修改的2種方式如下:
a) 修改/etc/security/limits.conf.文件。
b) root用戶直接命令行修改。
2、禁用swapping
a) 可以通過關(guān)閉swap方式防止使用swap,例如臨時運行命令行處理。
要永久禁用它,您需要編輯/etc/fstab文件并注釋掉包含swap的任何行。
b) Linux系統(tǒng)上的另一個方式修改vm.swappiness為1。這減少了內(nèi)核交換的趨勢,并且在正常情況下不應(yīng)該導(dǎo)致交換,同時仍然允許整個系統(tǒng)在緊急情況下交換。
c)在Linux/Unix系統(tǒng)上使用mlockall,或者在Windows上使用VirtualLock,嘗試將進(jìn)程地址空間鎖定到RAM中,防止任何Elasticsearch內(nèi)存被交換出去,這可以通過在config/elasticsearch.yml文件中配置一行來實現(xiàn)。
3、系統(tǒng)控制文件設(shè)置
Elasticsearch默認(rèn)使用mmapfs目錄存儲索引。默認(rèn)操作系統(tǒng)對mmap計數(shù)的限制可能太低,這可能導(dǎo)致內(nèi)存異常。修改方式如下:
a) 修改 /etc/sysctl.conf文件。
系統(tǒng)控制文件是管理系統(tǒng)中的各種資源控制的配置文件。ES需要開辟一個65536字節(jié)以上空間的虛擬內(nèi)存。Linux默認(rèn)不允許任何用戶和應(yīng)用直接開辟虛擬內(nèi)存。
新增內(nèi)容為:
使用命令: sysctl -p 讓系統(tǒng)控制權(quán)限配置生效。
b) root用戶下命令行方式臨時設(shè)置。
4、線程數(shù)設(shè)置
Elasticsearch為不同類型的操作使用不同的線程池。需要確保Elasticsearch用戶可以創(chuàng)建的線程數(shù)至少為4096。可以用如下方式設(shè)置:
修改/etc/security/limits.d/90-nproc.conf 設(shè)置為 4096。
5、DNS cache設(shè)置
在 JVM options中設(shè)置es.networkaddress.cache.ttl 和 es.networkaddress.cache.negative.ttl,默認(rèn)為60s和10s。