elasticsearch(三) 之 elasticsearch目录介绍和配置文件详解
elasticsearch 配置
目录详情
- bin 二进制脚本,包含启动命令和安装插件命令等
- config 配置文件目录
- lib 依赖包目录
- logs 日志文件目录
- modules 模块库
- plugins 插件目录
- data 数据储存目录
(config) 配置文件
- elasticsearch.yml elasticearch 配置文件
- jvm.options elasticsearch jvm 配置文件
- log4j2.properties elasticsearch 日志配置文件
注意配置文件的文件格式为 YAML
elasticsearch.yml
配置集群名称(cluster.name)
cluster.name 默认值是 elasticsearch
在同一个环境中,我们不要使用相同的集群名,因为这样会导致节点加入错误的集群,我们要配置集群名称为有含义且唯一的集群名,而不要使用通用的集群名。
配置节点名称(node.name)
默认情况下,Elasticsearch将使用随机生成的UUID的前七个字符作为节点ID。请注意,节点ID是持久的,并且在节点重新启动时不会更改,因此默认节点名称也不会更改。
配置一个具有意义的名称
node.name:haha-elk-1
也可以使用系统变量
node.name: ${HOSTNAME}
配置 network.host
默认情况,elasticsearch 绑定回环地址 127.0.0.1.
如果是单节点,我们绑定回环地址就可以了,但是如果我们是集群的话,我们就需要绑定到我们的内网ip或者是公网IP.
只要您提供自定义设置network.host,Elasticsearch就会假定您从开发模式转为生产模式,并将许多系统启动检查从警告升级到异常。
更改数据和储存路径
在33行的位置
#path.data: /path/to/data
#path.logs: /path/to/logs
我们需要把# 去除,然后更改存储的路径。
对于
path.data: 我们可以配置多个路径
path:
data:
- /mnt/elasticsearch_1
- /mnt/elasticsearch_2
- /mnt/elasticsearch_3
但是我们同一个分片的数据会放在同一个路径
节点网络和名称配置
我们可以引用系统的环境变量值来指定我们的配置,例如下面的结点名称使用主机名称,网络地址使用 ES_NETWORK_HOST 变量的值
node.name: ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}
发现设置
# 配置节点
discovery.zen.ping.unicast.hosts: ["host1", "host2"]
# 配置最大主节点数
discovery.zen.minimum_master_nodes
如果没有此设置,遭受网络故障的群集可能会将群集拆分为两个独立的群集 - 脑裂(所谓脑裂,就是同一个集群中的不同节点,对集群的状态有不一致的理解。) - 这将导致数据丢失
设置数为 :(master_eligible_nodes / 2)+ 1
换句话说,如果有三个符合主节点的节点,则应将最小主节点设置为(3/2) + 1或2
jvm.options
官方文档写到
You should rarely need to change Java Virtual Machine (JVM) options. If you do, the most likely change is setting the heap size. The remainder of this document explains in detail how to set JVM options.
意思是 :我们需要更改jvm配置的次数应该非常少,就算是修改也是修改 heap size
heap size 配置
大约在 jvm.options 21行
一般在运行elasticsearch 的时候最小需要是内存是1G,少于1G我们会经常启动不了。
-Xms1g # 最小值为1G
-Xmx1g # 最大值为1G
对于这个值的设置,官方为了适应不同的java版本,特做了一些适应配置
-Xms1g 不受版本影响,默认
8:-Xmx2g 只适应java8版本
8-:-Xmx2g 适应java8及以上版本
8-9:-Xmx2g 适应java8-java-9版本
官方文档写到:以往经验得出,
1. 最大值和最小值设置为一样的值,否则在系统使用的时候会因jvm值变化而导致服务暂停
2. 过多的内存,会导致用于缓存的内存越多,最终导致回收内存的时间也加长
3. 设置的内存不要超过物理内存的50%,以保证有足够的内存留给操作系统
4. 不要将内存设置超过32GB
GC 日志
默认情况下是开启GC日志的,也就是记录java的内存回收
默认储存位置在/logs/下 ,默认配置每64MB转换一次日志 ,最大占用2g磁盘空间。
log4j2.properties 配置
elasticsearch 使用log4j2 进行日志记录
需要具体配置日志文件的请看官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.3/logging.html
由于默认日志配置已经满足我们的日常需求,所以这里不提及。