Elasticsearch 6 重要參數配置

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























