如何快速部署一个Elasticsearch集群?

共 4901字,需浏览 10分钟

 ·

2021-08-10 13:40

今天的文章给大家介绍下Elasticsearch这一目前在“搜索”和“分析”领域使用十分广泛的技术组件。并演示如何快速构建一个Elasticsearch集群。



Elasticsearch概述


Elasticsearch是一款非常强大的开源“搜索”及“分析”引擎。除了搜索,结合Kibana、Logstash、Beats,以及Elastic Stack的技术生态,Elasticsearch还被广泛运用在大数据实时分析领域——包括日志分析(ELK)、指标监控、信息安全等领域。


Elasticsearch起源于开源搜索引擎类库Lucene,Elasticsearch的创始人Shay Banon于2004年基于Lucene开发了“Compass”,并在2010年重写“Compass”项目之后,将其正式命名为“Elasticsearch”。


目前在搜索引擎分类排名中Elasticsearch名列第一,除此之外,同类的产品还有Solor(Apache开源项目)和Splunk(商业项目),它们三者提供的功能非常相似。但是在程序员开源社区中Elasticsearch的活跃度最高。



Elasticsearch的功能特性



Elasticsearchs是一种典型的分布式系统,支持水平扩展。当数据规模变大的时候,Elasticsearch的集群节点可以从单个扩展到数百个。


Elasticsearch集群还支持设置不同的节点类型。例如针对日志类的应用可以支持Hot&Warm架构——冷热架构部署。Elasticsearch的分布式架构如下图所示:



除此之外,Elasticsearch还支持多种方式集成接入。例如,可以被多种语言方便的集成(Java、.Net、Python、PHP..);灵活的RESTful API;最新版本甚至还支持JDBC&ODBC方式的接入。



Elastic Stack家族成员


Elasticsearch之所以如此流行,处理活跃的社区外,很重要的一点就在于其背后还有一个强大的商业公司——Elastic在支撑。Elastic Stack的生态圈,如下图所示:



接下来分别介绍下Elastic Stack各技术组件的用途,具体如下:


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功能可以免费使用。



Elastic Stack应用场景


Elastic Stack技术栈常见的应用场景如下:


(1)搜索场景下的Elasticsearch与数据库的集成


在搜索场景下可以直接独立使用Elasticsearch来存储数据,但对于绝大多数业务系统来说都是用的是传统数据库,所以Elasticsearch实现搜索一般选择与数据库集成的方案。如下图所示:



(2)指标分析与日志分析


除了搜索场景外,Elastic Stask还被广泛应用在指标分析及日志分析领域。如下图所示:



通过代码和Beats方式采集数据,并将采集的数据发送至数据缓冲区(例如Kafka,主要是为了减少Elasticsearch的并发压力),然后通过Logstash完成数据的转换聚合,并将数据存储至Elasticsearch。最后,就可以使用Kibana或Grafana来可视化查询Elasticsearch中的数据了。



搭建一个Elasticsearch集群


接下来演示部署一个Elasticsearch集群。步骤如下。


(1)下载Elasticsearch安装包。


从Elastic官网下载最新版本的Elasticsearch的二进制安装包。命令如下:


wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.0-darwin-x86_64.tar.gz


这里下载的是最新7.14.0的版本,因为是在Mac安装,所以选择的是MacOS版本。之后,将二进制安装文件解压至服务器指定目录,命令如下:


$ tar zxvf elasticsearch-7.14.0-darwin-x86_64.tar.gz


解压后的安装目录结构说明如下:



修改JVM配置——config/jvm.options。最新版本会默认根据机器的可用内存自动设置。配置建议如下:


  • Xmx和Xms设置成一样。

  • Xmx不要超过机器内存的50%。

  • 不要超过30GB


(2)运行多个Elasticsearch实例的集群。


Elasticsearch可以在多个不同的机器节点运行多个实例,从而组成一个大的集群。为了下一步学习Elasticsearch集群工作的机制,接下来演示在本地同时启动多个Elasticsearch实例,来组成一个集群。


启动命令如下:

./bin/elasticsearch -E  node.name=node0 -E node.master=true -E node.ingest=false -E node.data=false -E cluster.name=mafengwoEs -E http.port=9201 -E path.data=node0_data -d
./bin/elasticsearch -E node.name=node1 -E node.master=false -E node.ingest=false -E node.data=true -E cluster.name=mafengwoEs -E http.port=9202 -E path.data=node1_data -d
./bin/elasticsearch -E node.name=node3 -E node.master=false -E node.ingest=false -E node.data=false -E cluster.name=mafengwoEs -E http.port=9204 -E path.data=node3_data -d


-E参数用于设定“config/elasticsearch.yml”文件中的参数,在本机不同端口分别启动多个elasticsearch实例,并分别设置不同的节点角色类型。本机资源有限,只能run 3个节点!


(2)浏览器通过API查看Elasticserach集群节点信息


运行成功后,可以使用浏览器通过API来查看Elasticsearch的集群信息,命令如下:

http://127.0.0.1:9201/_cat/nodes
              127.0.0.1 47 100 45 15.15   cdfhilmrstw - node1
              127.0.0.1 11 100 45 15.15   cdfhilmrstw * node0
              127.0.0.1 32 100 45 15.15   cdfhilmrstw - node3
              127.0.0.1 15 100 45 15.15   cdfhilmrstw - node2


可以看到多个实例的Elasticsearch集群就部署成功了!



安装Kibana可视化界面


接下来安装Kibanka可视化工具,来访问Elasticsearch集群。步骤如下。


(1)下载Kibana安装包


命令如下:


$ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.14.0-darwin-x86_64.tar.gz


下载最新的7.14.0版本的MacOS二进制安装包。之后解压下载的安装包,命令如下:

$ tar zxvf kibana-7.14.0-darwin-x86_64.tar.gz


(2)编辑conf/kibana.yaml文件,指定elasticsearch集群实例的地址


编辑配置文件,指定Elasticsearch的集群地址,修改的内容如下:

# The URLs of the Elasticsearch instances to use for all your queries.
elasticsearch.hosts: ["http://localhost:9204","http://localhost:9201","http://localhost:9203"]


(3)启动Kibana


启动Kibana,命令如下:


$ ./bin/kibana


此时,打开浏览器进入Kibana的首页,如下图所示:



如上图所示,可以向Elasticsearch集群中添加Kibana提供的样例数据。


(4)使用Kibana的“Dev Tools”工具


Kibana的“Dev Tools”工具,能够帮助我们很方便执行一些elasticsearch的API。如下图所示:



具体的查询命令如下:


#执行查询集群节点状态的API。
get /_cat/nodes/?v



后记


Elasticsearch目前使用的非常广泛,本文只是简单介绍了Elasticsearch的基本情况,并简单搭建了一个Elasticsearch的多实例集群。在后面的文章中,作者将不定期分享一些Elasticsearch的知识及实践。可以保持关注哦!😊



—————END—————


浏览 66
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报