接着上一篇的安装,继续往下写。
ElasticSearch的配置
ES的配置文件目录
在/usr/share/elasticsearch/config这个目录下面
包括jvm配置,log配置和ES的配置。
elasticsearch.yml集群设置
node.name
设置node的名称,默认是UUID的前7位,重启时不会更改。
node.master
设置该节点是否有资格成为master。
node.data
设置该节点是否存储索引输出。
cluster.name
集群名称,系统会根据集群名称堆各个ES节点进行集群,默认值是`docker-cluster`(docker安装方式)
path.data和path.logs
配置data保存路径和log路径, 最好不要使用默认的$ES_HOME,因为升级时会删除。
network.host
将节点绑定主机名称或者IP,然后推荐给集群中的其他节点,一台主机可以有多个节点,可以是IP(4,6),主机名或者一个数组,如果含有冒号:应该加上引号"",相当于network.bind_host和network.publish_host,默认值是_local_
discovery.zen.ping.unicast.hosts
一个node需要知道其他几个集群中的node,才能加入该集群。这个参数就是用来设置这些node的初始值,可以是一个包含IP地址或者主机名的数组,如果一个主机名解析为多个IP地址,那么每一个地址都会被用来发现节点。
discovery.zen.minimum_master_nodes
设置集群中最小master的个数,推荐(master_eligible_nodes / 2) + 1,其中
master_eligible_nodes是指有成为master资格的节点。
http.port
用于设置HTTP请求绑定的端口,可以是一个值或者范围,如果是范围,会绑定到第一个可用端口,默认值是9200-9300。
transport.tcp.port
设置节点间交流用的端口,可以是一个值或者范围,如果是范围,会绑定到第一个可用端口,默认值是9300-9400。
network.bind_host
设置节点监听的网络接口, 一个节点可以绑定多个接口,默认值是network.host的值。
network.publish_host
节点间连接的网络接口,一个节点只能绑定一个。
network.tcp.no_delay
设置是否禁用Nigle算法。
network.tcp.keep_alive
设置是否启用长连接。
network.tcp.reuse_address
设置地址是否可以重复使用。
network.tcp.send_buffer_size
设置tcp buffer发送大小。
network.tcp.receive_buffer_size
设置tcp buffer接收大小。
jvm.optionsJVM参数设置
JVM堆大小设置:Xms和Xmx
Xms设置JVM初始化Heap大小。例如:-Xms4g。
Xmx设置JVM最大Heap大小。例如:-Xmx4g。
应该根据服务器可用RAM大小来确定它们的大小。
设置的规则:这两者应该设置成相等的大小。
对于ES来说越多的可用堆,可以让它有越多的空间来缓存。但是太多的堆会受制于长时间的GC停顿。
不要把Xmx值设置得超过JVM分配给压缩对象指针(压缩普通对象指针)的cutoff。cutoff值在变化,但是大概在32GB左右。可以通过查看LOG来验证是否处于限制之中。类似于: heap size [1.9gb], compressed ordinary object pointers [true]。
更好的方案:尽量保持低于从零开始的压缩普通对象指针的阈值,26GB在大多数系统中是OK的,有的系统可能是30GB。通过启动带有JVM设置+ UnlockDiagnosticVMOptions -XX:+ PrintCompressedOopsMode的ES来查找LOG,判断是否处于限制状态。类似于:heap address: 0x000000011be00000, size: 27648 MB, zero based Compressed Oops
也可以通过配置ES的环境参数ES_JAVA_OPTS来进行配置jvm.options
GC设置,被认为专业级别的参数,如果不是专家,还是别乱设置。
log4j2.property
5.x之前的版本使用的是logging来记录ES日志,5.x之后采用log4j来记录日志。
日志记录部分非常简单,这里就不做过多介绍了。
最后
感兴趣的童鞋们请点赞,转发,收藏,加关注。