Elasticsearch 7 生產環境配置說明
配置檔案及目錄說明
/etc/elasticsearch/log4j2.properties
/etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/jvm.options
/etc/default/elasticsearch
/usr/lib/sysctl.d/elasticsearch.conf
/usr/lib/systemd/system/elasticsearch.service
/var/log/elasticsearch
/var/lib/elasticsearch
/usr/share/elasticsearch/plugins
重要的系統配置
systemd配置
# mkdir -p /etc/systemd/system/elasticsearch.service.d # vim /etc/systemd/system/elasticsearch.service.d/override.conf ... [Service] LimitMEMLOCK=infinity ... # systemctl daemon-reload
禁用swapping
# swapoff -a
# vim /etc/fstab
...
#/swapfile none swap sw 0 0
...
# vim /etc/sysctl.conf
...
vm.swappiness=0
...
檔案描述符
官方RPM和Debian包已經配置預設檔案描述符的最大數量為65535,不需要進一步配置。
vm.max_map_count
官方RPM和Debian包將自動配置此設定。無需進行其他配置。
# cat /usr/lib/sysctl.d/elasticsearch.conf vm.max_map_count=262144
執行緒數
當在systemd下作為服務執行時,包分發將自動配置Elasticsearch程序的執行緒數。不需要額外的配置。
重要的elasticsearch配置
配置檔案:/etc/elasticsearch/elasticsearch.yml
path.data和path.logs
path.data: /var/lib/elasticsearch ## 資料儲存目錄路徑(多個路徑使用逗號分隔)
path.logs: /var/log/elasticsearch
注意:可以將path.data設定為多個路徑,在這種情況下,所有路徑都將用於儲存資料(屬於單個分片的檔案將全部儲存在同一資料路徑上)。
path.data: /mnt/elasticsearch_1,/mnt/elasticsearch_2,/mnt/elasticsearch_3
cluster.name
cluster.name: logging-prod
node.name
node.name: prod-data-2
network.host
network.host: 192.168.1.10
發現和叢集配置
discovery.seed_hosts:
- 192.168.1.10:9300
- 192.168.1.11
- seeds.mydomain.com
cluster.initial_master_nodes:
- master-node-a
- master-node-b
- master-node-c
JVM堆大小配置
## /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g
或:
## /etc/default/elasticsearch
ES_JAVA_OPTS="-Xms2g -Xmx2g"
或:
ES_JAVA_OPTS="-Xms4000m -Xmx4000m"
好的經驗法則是:
將最小堆大小(Xms)和最大堆大小(Xmx)設定為彼此相等。
Elasticsearch可用的堆越多,它可用於快取的記憶體就越多。但請注意,過多的堆可能會使您陷入長時間的垃圾收集暫停。
將Xmx設定為不超過物理RAM的50%,以確保有足夠的物理RAM留給核心檔案系統快取。
不要將Xmx設定為JVM用於壓縮物件指標(壓縮oops)的截止值以上;確切的截止值變化但接近32GB。
JVM堆轉儲路徑
預設情況下,Elasticsearch將JVM配置為將[記憶體不足異常中的堆]轉儲到預設資料目錄(對於RPM和Debian軟體包分發版,此目錄為/var/lib/elasticsearch;對於tar和zip存檔發行版,該目錄位於Elasticsearch安裝目錄的根目錄下)。
如果此路徑不適合接收堆轉儲,則應修改jvm.options中的條目-XX:HeapDumpPath=...。如果指定目錄,那麼JVM將基於正在執行的例項的PID為堆轉儲生成檔名。
如果指定固定檔名而不是目錄,則當JVM需要在記憶體不足異常時執行堆轉儲時,該檔案必須不存在,否則堆轉儲將失敗。
GC日誌
預設情況下,Elasticsearch啟用GC日誌。這些是在jvm.options中配置的,並且預設位於與Elasticsearch日誌相同的預設位置。預設配置每64 MB輪換一次日誌,最多可消耗2 GB磁碟空間。
臨時目錄
預設情況下,Elasticsearch使用啟動指令碼在系統臨時目錄下立即建立的私有臨時目錄。
在某些Linux發行版中,如果最近沒有訪問過,則系統實用程式將從/tmp中清除檔案和目錄。如果長時間不使用需要使用臨時目錄的功能,這可能會導致在執行Elasticsearch時刪除私有臨時目錄。如果隨後使用需要臨時目錄的功能,則將導致問題。
如果使用.deb或.rpm軟體包安裝Elasticsearch並在systemd下執行,則定期清理中將排除Elasticsearch使用的私有臨時目錄。
JVM致命錯誤日誌
預設情況下,Elasticsearch將JVM配置為將致命錯誤日誌寫入預設的日誌目錄(對於RPM和Debian軟體包發行版,這是/var/log/elasticsearch;對於tar和zip,在Elasticsearch安裝根目錄下的logs目錄)。
這些是JVM在遇到致命錯誤(例如分段錯誤)時生成的日誌。如果此路徑不適合接收日誌,則應將jvm.options中的條目-XX:ErrorFile = ...修改為備用路徑。