当前位置: 首页 > 科技观察

如何快速部署Elasticsearch集群?

时间:2023-03-14 22:36:28 科技观察

本文转载自微信公众号《无敌码农》,作者:无敌码农。转载请联系无敌码农公众号。今天的文章将向大家介绍Elasticsearch,一个目前被广泛应用于“搜索”和“分析”领域的技术组件。并演示如何快速搭建Elasticsearch集群。Elasticsearch概述Elasticsearch是一个非常强大的开源“搜索”和“分析”引擎。除了搜索,结合Kibana、Logstash、Beats,以及ElasticStack的技术生态,Elasticsearch也广泛应用于大数据实时分析领域——包括日志分析(ELK)、指标监控、信息安全和其他领域。Elasticsearch起源于Lucene,一个开源的搜索引擎库。Elasticsearch创始人ShayBanon于2004年基于Lucene开发了“Compass”,并于2010年改写了“Compass”项目后正式命名为“Elasticsearch”。目前,Elasticsearch在搜索引擎排名中排名第一。此外,类似的产品还有Solor(Apache开源项目)和Splunk(商业项目)。三者提供的功能非常相似。但Elasticsearch是程序员开源社区中最活跃的。Elasticsearch的特点Elasticsearchs是典型的支持水平扩展的分布式系统。当数据规模变大时,Elasticsearch的集群节点可以从单个扩展到数百个。Elasticsearch集群还支持设置不同的节点类型。例如日志应用可以支持Hot&Warm架构——冷热架构部署。Elasticsearch的分布式架构如下图所示:此外,Elasticsearch还支持多种方式的集成访问。例如,它可以很容易地被多种语言(Java、.Net、Python、PHP..)集成;灵活的RESTfulAPI;最新版本甚至支持JDBC&ODBC访问。作为ElasticStack家族成员的Elasticsearch之所以如此受欢迎,除了活跃的社区之外,还有一个强大的商业公司Elastic的支持。ElasticStack的生态圈如下图所示:接下来分别介绍ElasticStack各个技术组件的用途,如下:Logstash开源的服务器端数据处理管道,支持从不同来源收集数据,转换数据,并将数据发送到不同的存储库。2013年被Elasticsearch收购。Logstash支持数据的实时解析和转换,例如从IP地址解密地理坐标,PII数据匿名化,完全排除敏感字段等。此外,Logstash还支持扩展插件插件。目前已有200多个插件,可以解决日志、数据库等各种场景的实际需求。另外,Logstash的可靠性和安全性也非常高。Logstash会通过持久化队列保证运行事件至少传递一次,并支持数据传输加密。Kibana是一个基于Logstash的数据可视化分析工具。Beats轻量级数据采集器,采用Go语言开发,运行速度非常快。场景的beats插件包括:Filebeat(日志文件插件)、Packetbeat、Heartbeat等X-Pack(商业套件-开源)X-Pack开源后,部分X-Pack功能可以免费使用。例如从6.8和7.1版本开始,可以免费使用Security功能。ElasticStack应用场景ElasticStack技术栈的常见应用场景如下:(1)Elasticsearch与数据库在搜索场景中的融合在搜索场景中,可以直接独立使用Elasticsearch来存储数据,但对于大多数业务系统使用的是传统的数据库,所以Elasticsearch一般会选择与数据库集成的方案来实现搜索。如下图所示:(2)索引分析和日志分析除了搜索场景,ElasticTask在索引分析和日志分析领域的应用也很广泛。如下图所示:通过code和Beats采集数据,并将采集到的数据发送到数据缓冲区(比如Kafka,主要是为了降低Elasticsearch的并发压力),然后通过Logstash完成数据的转换和聚合,并将数据存储到Elasticsearch。最后,您可以使用Kibana或Grafana可视化查询Elasticsearch中的数据。搭建一个Elasticsearch集群,然后演示Elasticsearch集群的部署。进行如下操作。(1)下载Elasticsearch安装包。从Elastic官网下载最新版Elasticsearch的二进制安装包。命令如下:wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.0-darwin-x86_64.tar.gz这里下载的是最新的7.14.0版本,因为是Mac安装的,所以选择的是MacOS版本。之后,将二进制安装文件解压到服务器指定的目录下,命令如下:$tarzxvfelasticsearch-7.14.0-darwin-x86_64.tar.gz解压后的安装目录结构如下:修改JVM配置-配置/jvm.options。最新版本默认为基于机器可用内存的自动设置。配置建议如下:Xmx和Xms设置相同。Xmx不应超过机器内存的50%。对于运行多个Elasticsearch实例的集群,不要超过30GB(2)。Elasticsearch可以在多个不同的机器节点上运行多个实例,形成一个大集群。为了进一步了解Elasticsearch集群的工作机制,接下来的演示是在本地同时启动多个Elasticsearch实例,组成一个集群。启动命令如下:./bin/elasticsearch-Enode.name=node0-Enode.master=true-Enode.ingest=false-Enode.data=false-Ecluster.name=mafengwoEs-Ehttp.port=9201-Epath.data=node0_data-d./bin/elasticsearch-Enode.name=node1-Enode.master=false-Enode.ingest=false-Enode.data=true-Ecluster.name=mafengwoEs-Ehttp.port=9202-Epath。data=node1_data-d./bin/elasticsearch-Enode.name=node3-Enode.master=false-Enode.ingest=false-Enode.data=false-Ecluster.name=mafengwoEs-Ehttp.port=9204-Epath.data=node3_data-d-E参数用于设置“config/elasticsearch.yml”文件中的参数,在本机不同端口启动多个elasticsearch实例,分别设置不同节点角色类型。本地资源有限,只能运行3个节点!(2)浏览器可以通过API查看Elasticserach集群节点信息。运行成功后,可以使用浏览器通过API查看Elasticsearch集群信息。命令如下:http://127.0.0.1:9201/_cat/nodes127.0.0.1471004515.15cdfhilmrstw-node1127.0.0.1111004515.15cdfhilmrstw*node0127.0.0.1321004515.15cdfhilmrstw-node3127.0.0.1151004515.15cdfhilmrstw-node2可以看到多个实例的Elasticsearch集群就部署成功了!安装Kibana可视化界面接下来安装Kibanka可视化工具,访问Elasticsearch集群。进行如下操作。(1)下载Kibana安装包命令如下:$wgethttps://artifacts.elastic.co/downloads/kibana/kibana-7.14.0-darwin-x86_64.tar.gz下载最新7.14.0版本的MacOS二进制文件安装包。然后解压下载的安装包,命令如下:$tarzxvfkibana-7.14.0-darwin-x86_64.tar.gz(2)编辑conf/kibana.yaml文件,指定elasticsearch集群实例地址编辑配置文件,指定Elasticsearch的集群地址,修改内容如下:#TheURLsoftheElasticsearchinstancestouseforallyyourqueries.elasticsearch.hosts:["http://localhost:9204","http://localhost:9201","http://localhost:9203"](3)StartKibana启动Kibana,命令如下:$./bin/kibana此时,打开浏览器,进入Kibana的首页,如下图所示:如上图,可以将Kibana提供的示例数据添加到Elasticsearch集群中。(4)使用Kibana的“DevTools”工具Kibana的“DevTools”工具可以帮助我们轻松执行一些elasticsearchAPI。如下图所示:具体查询命令如下:#执行查询集群节点状态的API。get/_cat/nodes/?vPostscriptElasticsearch目前被广泛使用。本文只是简单介绍了Elasticsearch的基本情况,简单搭建了一个Elasticsearch的多实例集群。在后面的文章中,笔者会不定期分享一些Elasticsearch的知识和实践。