Elasticsearch 5:集群设置与管理(第二篇)

2020-06-01 00:00:00 集群 节点 配置 大小 设置为

本文章包含有关如何设置Elasticsearch并使其运行的配置。包括es的配置、服务器系统配置、es节点的停止。

说到es的搭建过程,主要涉及到两个配置文件修改,

elasticsearch.yml for configuring Elasticsearch

log4j2.properties for configuring Elasticsearch logging.

  • es的重要配置参数:

1、path.data and path.logs:数据路径\日志路径

2、cluster.name:集群名称,节点只能在与集群中的所有其他节点共享同一个cluster.name时才能加入集群

3、node.name:节点名称

4、bootstrap.memory_lock:

服务器发生系统swapping的时候ES节点的性能会非常差,也会影响节点的稳定性。所以要不惜一切代价来避免swapping。swapping会导致Java GC的周期延迟从毫秒级恶化到分钟,更严重的是会引起节点响应延迟甚至脱离集群。

这个参数的目的是当你无法关闭系统的swap的时候,建议把这个参数设为true。防止在内存不够用的时候,elasticsearch的内存被交换至交换区,导致性能骤降

5、network.host:节点绑定IP地址

6、discovery.zen.minimum_master_nodes:小节点数量

所谓脑裂问题(类似于精神分裂),就是同一个集群中的不同节点,对于集群的状态有了不一样的理解。集群如果6个节点,故障恢复后,有时候可能会形成2个--3节点的集群,导致不能正常工作。

设置为所有可用节点个数加1的50%(如果6个节点数量, 官方的推荐值是(N/2)+1,就是4),将只会有一个4节点的集群。另外2个无法组成一个集群,只能等待重新连接会到集群。

7、discovery.zen.ping.unicast.hosts:集群发现机制的配置,单播配置

单播配置非常简单,当节点不是集群中的一部分的时候,它会发送一个ping请求给配置文件的所在地址列表,加入集群。

需要与其他服务器上的节点组成群集时,您必须提供群集中其他节点的种子列表,这些节点可能是活的并且可联系的。

discovery.zen.ping.unicast.hosts:

- 192.168.1.10:9300

- 192.168.1.11

- seeds.mydomain.com

注意:千万不能配置外网地址,这样就是网络安全大漏洞了,如果没有配置防火墙的话,互联网就可以访问你的集群了


  • es的安全配置:

如果只是依靠文件系统权限等来保护ela还不够,它还提供了一个keystore,他可以密码保护的。

使用elasticsearch-keystore工具管理

1、 .bin/elasticsearch-keystore create 创建一个和es配置同目录的elasticsearch.keystore文件

2、 .bin/elasticsearch-keystore add key 添加一个key字段,tool提示输入值

3、 .bin/elasticsearch-keystore list 列出keystore中所有的命令key

4、 .bin/elasticsearch-keystore remove key 删除keystore中的命令key


  • 重要的服务器配置:

1、重要的打开文件句柄等等(ulimit -n)的数量设置为65536

修改文件/etc/security/limits.conf

2、通过jvm.options设置JVM堆大小

ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch

需要注意几点

默认情况下,Elasticsearch通知JVM使用小和大大小为2 GB的堆。在转移到生产环境时,配置堆大小以确保Elasticsearch有足够的可用堆是非常重要的。

Elasticsearch将通过Xms(小堆大小)和Xmx(大堆大小)设置来分配jvm.options中指定的整个堆。

好的经验法则是:

将小堆大小(Xms)和大堆大小(Xmx)设置为相等。

Elasticsearch可用的堆越多,可用于缓存的内存就越多。但是太大的堆可能会使您长时间垃圾收集暂停。

将Xmx设置为不超过物理RAM的50%,以确保有足够的物理RAM留给内核文件系统缓存。

不要将Xmx设置超过32GB,超过的话就进入到64位的世界里了,因此对象引用就只能是8字节了

3、禁用所有交换文件swap

在Linux系统上,可以运行以下命令临时禁用交换:

sudo swapoff -a

-----

可以修改config/elasticsearch.yml文件来防止任何Elasticsearch内存被换出:

bootstrap.memory_lock:true

4、虚拟内存

对于64位系统,Elasticsearch默认使用mmapfs目录来存储其索引。 mmap计数的默认操作系统限制可能太低,这可能会导致内存不足异常。

在Linux上,可以通过以root身份运行以下命令来增加限制:

sysctl -w vm.max_map_count = 262144

要设置此值,请更新/etc/sysctl.conf中的vm.max_map_count设置。

要在重新启动后进行验证,请运行sysctl vm.max_map_count。

5、线程数

Elasticsearch为不同类型的操作使用了一些线程池。 在需要的时候能够创建新的线程是非常重要的。

确保Elasticsearch用户可以创建的线程数至少为2048。

这可以通过在启动Elasticsearch之前将ulimit -u 2048设置为root来完成,或者通过在/etc/security/limits.conf中将nproc设置为2048来完成。


  • 关闭集群

$ jps | grep Elasticsearch

15516 Elasticsearch

$ kill -SIGTERM 15516

谢谢

相关文章