采用zip或tar.gz的二进制包方式安装的ES,须要配置一系列参数,其中重要参数配置以下:node
1、 ElasticSearch参数配置bootstrap
1. data和logs路径配置缓存
若是使用.zip或.tar.gz归档文件,则数据和日志目录是$ES_HOME的子文件夹。若是这些重要的文件夹保留在它们的默认位置,则在将Elasticsearch升级到新版本时,删除它们的风险很高,建议进行修改服务器
path: logs: /var/log/elasticsearch data: /var/data/elasticsearch
其中 data目录能够设置多个路径微信
path: data: - /mnt/elasticsearch_1 - /mnt/elasticsearch_2 - /mnt/elasticsearch_3
2. 集群名称网络
默认的集群名称均为elasticsearch,若有多套集群,则必须修改app
cluster.name: syslogs-dev
3. 节点名称dom
默认状况下,Elasticsearch将使用随机生成的UUID的前七个字符做为节点id。请注意,节点id是持久化的,在节点重启时不会更改,所以默认的节点名称也不会更改。建议配置一个更有意义的名称,它还具备在从新启动节点后持久化的优势。jvm
node.name: syslogs-data-2
或者用主机名(hostname)做为节点名elasticsearch
node.name: prod-data-2
4. network.host
默认状况下,Elasticsearch只绑定到环回地址,例如。127.0.0.1 (::1)。但此配置只能在同一服务器上运行单个节点。为了在其余服务器上造成具备节点的集群,节点须要绑定到一个非环回地址。虽然有许多网络设置,但一般只须要配置network.host
network.host: 192.168.1.10
5. 发现方式设置
Elasticsearch使用名为“Zen discovery”的自定义发现实现节点到节点的集群选择。生产上,应该配置两个重要的发现设置:
discovery.zen.ping.unicast.hosts: - 192.168.1.10:9300 - 192.168.1.11 - seeds.mydomain.com
discovery.zen.minimum_master_nodes: 2
其中,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(最大堆大小)设置的选项。一般设置规则以下:
a)让最小堆大小(Xms)和最大堆大小(Xmx)相等; b)Elasticsearch可用的堆越多,用于缓存的内存就越多。可是请注意,过多的堆会致使长时间的垃圾收集暂停; c)将Xmx设置为不超过物理RAM的50%,以确保有足够的物理RAM留给内核文件系统缓存; d)不要将Xmx设置为JVM用于压缩对象指针的截止值之上(压缩的oops);确切的界限有所不一样,但接近32 GB。
例如:
-Xms2g -Xmx2g
还能够经过环境变量设置堆大小,例如,经过ES_JAVA_OPTS设置这些值
ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch
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=…
2、 重要的系统参数配置
1 . ulimit设置
建议设置为65535,修改的2种方式以下:
a) 修改/etc/security/limits.conf.文件
elasticsearch - nofile 65536
b) root用户直接命令行修改
sudo su ulimit -n 65536 su elasticsearch
2. 禁用swapping
a) 能够经过关闭swap方式防止使用swap,例如临时运行命令行处理
sudo swapoff -a
要永久禁用它,您须要编辑/etc/fstab文件并注释掉包含单词swap的任何行
b) Linux系统上的另外一个方式修改vm.swappiness为1。这减小了内核交换的趋势,而且在正常状况下不该该致使交换,同时仍然容许整个系统在紧急状况下交换。
c)在Linux/Unix系统上使用mlockall,或者在Windows上使用VirtualLock,尝试将进程地址空间锁定到RAM中,防止任何Elasticsearch内存被交换出去,这能够经过在config/elasticsearch.yml文件中配置一行来实现
bootstrap.memory_lock: true
3. 系统控制文件设置
Elasticsearch默认使用mmapfs目录存储索引。默认操做系统对mmap计数的限制可能过低,这可能致使内存异常。修改方式以下:
a) 修改 /etc/sysctl.conf文件
系统控制文件是管理系统中的各类资源控制的配置文件。ES须要开辟一个65536字节以上空间的虚拟内存。Linux默认不容许任何用户和应用直接开辟虚拟内存。
新增内容为:
vm.max_map_count=262144
使用命令: sysctl -p 让系统控制权限配置生效。
b) root用户下命令行方式临时设置
sysctl -w vm.max_map_count=262144
4. 线程数设置
Elasticsearch为不一样类型的操做使用不一样的线程池。须要确保Elasticsearch用户能够建立的线程数至少为4096。能够用以下方式设置:
修改/etc/security/limits.d/90-nproc.conf 设置为 4096
* soft nproc 4096 root soft nproc unlimited
5. DNS cache设置
在 JVM options中设置 es.networkaddress.cache.ttl 和 es.networkaddress.cache.negative.ttl,默认为60s和10s
耿小厨已开通我的微信公众号,想进一步沟通或想了解其余文章的同窗能够关注我