Elasticsearch 做爲優秀的分佈式搜索引擎,在企業中獲得了普遍的應用,能夠存儲海量的數據,還能像數據庫同樣各類條件檢索和操做,本文主要記錄下安裝的過程,大多數都參考的官方的文檔來操做的,包括系統的設置和 ES 集羣的一些配置。html
CentOS Linux release 7.6.1810 (Core)
1.8.0_201
5.6.15
tar.gz
或者zip
包自行安裝.16C32G 2T
3臺(worker),2C4G 50G
2臺(master)在文件中/etc/security/limits.conf增長,若是你的部署用戶是elasticsearch
node
elasticsearch - nofile 65536
複製代碼
若是不限制任何用戶linux
* - nofile 65536
複製代碼
不少是這樣配置的數據庫
* soft nofile 1024000
* hard nofile 1024000
複製代碼
ps:凡是修改了系統文件,都須要從新進入 session 配置纔會生效.bootstrap
若是 Es 用到了 swap 做爲內存,性能將會變得極差,因此建議關閉.bash
使用sudo swapoff -a
臨時關閉,若是須要永久關閉,則將/etc/fstab
文件中全部包含swap
的行所有註釋掉.session
使用sysctl vm.swappiness
可查看當前的配置值,若是不是1,則設置:app
echo "vm.swappiness = 1" >> /etc/sysctl.conf
複製代碼
或者sudo sysctl vm.swappiness=1
注意:這只是讓 kenerl 在正常狀況下不會使用 swap 交換內存,緊急狀況下仍然會使用. 目前我是採用的這種配置.cors
打開 config/elasticsearch.yml
文件,設置jvm
bootstrap.memory_lock: true
複製代碼
使用 linux 的mlockall
進行進行內存鎖定,防止使用 swap,除了上述 es 配置,一般須要在/etc/security/limits.conf
寫入以下配置:
* hard memlock unlimited
* soft memlock unlimited
複製代碼
從新進入 session 生效.(線上打開了這個配置)
es 默認狀況下爲64爲的 linux 操做系統使用mmapfs
進行索引的存儲,默認狀況下,操做系統的 mmap 數量較低,可能致使內存異常.可配置:
sysctl -w vm.max_map_count=262144
複製代碼
若是須要重啓後配置仍然保留,能夠配置文件/etc/sysctl.conf
vm.max_map_count=262144
複製代碼
/etc/security/limits.conf
寫入以下配置:
* soft nproc 1024000
* hard nproc 1024000
複製代碼
從新進入 session 生效
修改config/jvm.properties
-Xms16g
-Xmx16g
複製代碼
一般狀況下配置爲機器內存的一半左右,另一半留給 ES 的堆外內存.master 2臺機器配置爲2G 左右的內存便可.
參數比較簡單,官方文檔一查便知曉意思,貼出來,只是注意 最好將 master 和 data(worder) 節點分開,master只負責調度,不存儲數據
cluster.name: example-es-cluster
node.name: node-worker-74
# 是不是 master
node.master: false
# 是否存儲數據
node.data: true
# 數據存儲位置
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
network.host: 192.168.8.74
# http 端口
http.port: 9200
#tcp 端口
transport.tcp.port: 9300
# 集羣節點
discovery.zen.ping.unicast.hosts: ["192.168.8.75", "192.168.8.76", "192.168.8.72", "192.168.8.73", "192.168.8.74"]
discovery.zen.ping_timeout: 120s
discovery.zen.minimum_master_nodes: 1
discovery.zen.fd.ping_interval: 5s
discovery.zen.fd.ping_retries: 5
gateway.recover_after_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: "*"
action.auto_create_index: false
action.destructive_requires_name: true
search.default_search_timeout: 150s
indices.fielddata.cache.size: 20%
indices.breaker.fielddata.limit: 40%
indices.breaker.request.limit: 30%
indices.breaker.total.limit: 60%
indices.recovery.max_bytes_per_sec: 200mb
indices.memory.index_buffer_size: 20%
http.max_content_length: 1024mb
thread_pool.bulk.queue_size: 3000
thread_pool.index.queue_size: 2000
thread_pool.search.queue_size: 1000
thread_pool.get.queue_size: 1000
複製代碼
官方文檔仍是比較全面,仔細按照文檔通常沒有啥問題.