Elasticsearch部署优化
条评论Elasticsearch部署优化
Elasticsearch版本
Elasticsearch在2016年10月的时候从2.X跳过中间版本发布了5.X版本,该版本基于Lucene 6.2.0,官方宣称是迄今为止最快、最安全、最易用的版本。5.X版本中主要对索引性能,过滤器,数据结构,易用性方面进行了大量的修改。所以在部署版本选择上,优先选择5.X版本。
OS参数
在Elasticsearch5.X系列版本中增加了启动自检功能,如果参数或者配置不符合需求,则报错无法启动。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15/etc/sysctl.conf
vm.swappiness=1
net.core.somaxconn=65535
vm.max_map_count=262144
fs.file-max=518144
sysctl -p
---
/etc/security/limits.conf
elasticsearch soft nofile 65535
elasticsearch hard nofile 65535
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
Elasticsearch配置
在ES中默认不需要配置很多参数,以下参数是官方提供的Important Elasticsearch configuration
:
- path.data and path.logs
- cluster.name
- node.name
- bootstrap.memory_lock
- network.host
- discovery.zen.ping.unicast.hosts
- discovery.zen.minimum_master_nodes
除此之外还有一些从维护层面需要考虑的参数:
分片数,分片的数量应该与最终需要存储的数据量和分片压力来确定,默认分片是5,应该按需配置(创建索引时可以指定)。分片数不能动态的增加,如果后续增加或者减少分片的数量需要使用reindex或者其他方式重建索引,需要注意的是重建索引会影响性能。
复制副本数,复制副本相当于分片建立了多少个副本,当分片不可用时,用于提供高可用。默认状态下每个分片一个复制副本,从理论上来讲,复制分片越多,数据安全性和可靠性越高,但相对应的是效率的下降和成本的提升,需要根据需求进行规划。
node数量,对于分布式系统而言,每一个分片相当于一份资源,这一份资源应该占有独有的系统资源,包括进程命名空间,OS资源等等,ES中,每个分片相当于一份资源,那么node的最佳数量应该是 节点数 <= 主分片数 *(副本数+1)
node角色:
- node.master, master节点保存了集群全部的元数据,还用来管理集群各个节点的状态,数据的导入和查询都不会请求master节点,所以master节点的压力相对较小,因此master节点的内存分配也可以相对少些,但是master的重要性是毋庸置疑的,如果集群较大或者数据很重要,则建议设置单独的node作为master节点。
- node.data,负责数据的查询和导入的,它的压力会比较大
- balance node,即不存储元数据也不存储doc,做跨分片查询的负载均衡
监控
Elasticsearch的监控上一篇文章已经讲过Elasticsearch监控,这里不详细赘述。生产环境做好监控,定期查看监控值,及时做资源及参数调整,让Elasticsearch发挥最优的功能。
备份
Elasticsearch的备份一般用其提供的snapshot API进行,该接口会将数据备份到分布式文件系统中,如NAS,S3,HDFS等。该接口的限制是目前只能定时全量备份,无法增量备份数据。
总结
部署,监控、备份是系统高可用,高可靠的第一步保证,持续的高可用和高可靠需要不断的优化和调整才能保证。
- 本文链接:http://www.darcy.org.cn/2017/04/06/Elasticsearch部署优化/
- 版权声明:作者拥有版权,转发请注明出处来源