Elasticsearch 5:集群设置与管理(第二篇)
本文章包含有关如何设置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
谢谢
相关文章