Elasticsearch 配置和集群维护
这篇文章主要讲述Elasticsearch中一些常见的概念,以及一些配置参数的优化。
一、常见名词
索引(index):存储数据的逻辑空间,类似关系型数据库里的“数据库”;
文档(document):存储在es中的实际数据内容;
类型(type):每个 Type 会拥有相同结构的文档,都有相同的字段(Field),比如博客系统,有一个索引,可以定义用户数据 Type,博客数据 Type,评论数据 Type 等。类似关系型数据库中的“表”;
节点(node):es实例,一个es的java进程。根据节点的作用不同,可分为数据节点和协调节点。数据节点主要用于存储数据,协调节点是用于选举集群主节点。
分片(shard):ES 可以将一个索引中的数据切分为多个分片(Shard),分布在不同的存储路径上,便于横向拓展。分片分为主分片和副本分片,主分片用于写入,副本分片用于分担读压力。
二、构建一个Elasticsearch集群
构建一个ES集群和其他中间件集群类似,有如下几点需要注意:
elasticsearch/config/elasticsearch.yml
1、node.name
每个es实例需要指定唯一name,这里每台服务器上运行一个es进程。
2、path.data
shard存储的路径,这里可以配置多个路径。比如某服务器挂载了2块硬盘,可以配置成/data,/data2。
3、discovery.zen.ping.unicast.hosts
这个配置主要是用于维持集群状态。
建议Node配置奇数个,如果集群较大,用于集群选举的节点可以和数据节点分开。比如集群中有10个节点8核32G,可以配置3个节点4核16G用于作为master节点以及故障转移参与选举的节点。
elasticsearch/config/jvm.yml
4、jvm配置
java heap的配置值,建议是服务器内存的一半。并且最高是32G。如果集群压力过大,再横向扩展。
5、写入调整
根据实际的业务场景,调整index的配置。写频繁远高于读的情况下,可以提高分片数量,减少副本数量;如果读环境较多,则提高副本数量用于分担读压力。
三、关于集群维护
1、集群状态监控
绿:正常,黄:可用但是不可靠,红:故障。
2、集群数据备份
ES snapshot用于索引的冷备份,备份可以有本地存储、S3、HDFS等多种方式。比如备份到HDFS
3、性能指标监控
可以通过rest方式采集指标值,这里推荐使用Kibana->monitoring可视化的查看集群的运行情况。
4、查询、基于日志的业务监控等
这块主要是ES DSL查询,类似编写数据库SQL语句。由于需要根据实际搜集的日志内容,这里不做举例。详细参考官方文档。
以上是ELK Stack中使用和维护Elasticsearch集群的相关点的概述,实际使用过程中还是有很多坑要踩的。建议结合Elasticsearch版本参考对应的官方文档。
版权声明: 本文为 InfoQ 作者【Rayzh】的原创文章。
原文链接:【http://xie.infoq.cn/article/1d82404f0fa16601b7c07bac1】。文章转载请联系作者。
评论 (2 条评论)