搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(九) elasticsearch简介及集群介绍

来源:互联网 发布:yaml python 编辑:程序博客网 时间:2024/05/16 17:48

只要
在前面做了几个demo之后,我们现在才来介绍一下elasticsearch,以及elasticsearch集群。然后下一节我们就开始部署elasticsearch集群。


1、elasticsearch介绍

简单的说,elasticsearch就是一个分布式数据库和搜索引擎。

百度百科的解释

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题以及可能出现的更多其它问题。


2、elasticsearch集群

elasticsearch用于构建高可用和可扩展的系统,Elasticsearch天生是分布式的:它知道如何管理节点来提供高扩展和高可用。这意味着你的程序不需要关心这些。

集群和节点

节点(node)是你运行的Elasticsearch实例。一个集群(cluster)是一组具有相同cluster.name的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当有新的节点加入或者删除节点,集群就会感知到并平衡数据。集群中一个节点会被选举为主节点(master),它用来管理集群中的一些变更,例如新建或删除索引、增加或移除节点等;当然一个节点也可以组成一个集群。

节点通信

我们能够与集群中的任何节点通信,包括主节点。任何一个节点互相知道文档存在于哪个节点上,它们可以转发请求到我们需要数据所在的节点上。我们通信的节点负责收集各节点返回的数据,最后一起返回给客户端。这一切都由Elasticsearch透明的管理。

节点分类
默认情况下,elasticsearch集群中每个节点都有成为主节点的资格,也都存储数据,还可以提供查询服务。这些功能是由两个属性控制的。
node.master和node.data,默认情况下这两个属性的值都是true。下面详细介绍一下这两个属性的含义以及不同组合可以达到的效果。

  1. node.master:这个属性表示节点是否具有成为主节点的资格
    注意:此属性的值为true,代表这个节点是不是具有主节点选举资格。
    真正的主节点,是由多个具有主节点资格的节点进行选举产生的。

  2. node.data:这个属性表示节点是否存储数据。

这两个属性可以有四种组合:

  1. node.master: true node.data: true
    这种组合表示这个节点即有成为主节点的资格,又存储数据,这个时候如果某个节点被选举成为了真正的主节点,同时还要存储数据,这样对于这个节点的压力就比较大了。elasticsearch默认每个节点都是这样的配置,在测试环境下这样做没问题。实际工作中建议不要这样设置。

  2. node.master: false node.data: true
    这种组合表示这个节点没有成为主节点的资格,也就不参与选举,只会存储数据。这个节点我们称为data(数据)节点。在集群中需要单独设置几个这样的节点负责存储数据。后期提供存储和查询服务。

  3. node.master: true node.data: false
    这种组合表示这个节点不会存储数据,有成为主节点的资格,可以参与选举,有可能成为真正的主节点。这个节点我们称为master节点

  4. node.master: false node.data: false
    这种组合表示这个节点即不会成为主节点,也不会存储数据,这个节点的意义是作为一个client(客户端)节点,主要是针对海量请求的时候可以进行负载均衡。

总结如下:

  • master节点:普通服务器即可(CPU 内存 消耗一般)
  • data节点:主要消耗磁盘,内存
  • client节点:普通服务器即可
阅读全文
0 0
原创粉丝点击