如何快速部署一個 Elasticsearch 集羣?

作者:無敵碼農 

來源:無敵碼農

今天的文章給大家介紹下 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) 下載 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, 命令如下:

$ ./bin/kibana

此時,打開瀏覽器進入 Kibana 的首頁,如下圖所示:

如上圖所示,可以向 Elasticsearch 集羣中添加 Kibana 提供的樣例數據。

(4)使用 Kibana 的 “Dev Tools” 工具 Kibana 的 “Dev Tools” 工具,能夠幫助我們很方便執行一些 elasticsearch 的 API。如下圖所示:

具體的查詢命令如下:

#執行查詢集羣節點狀態的API。
get /_cat/nodes/?v

後記

Elasticsearch 目前使用的非常廣泛,本文只是簡單介紹了 Elasticsearch 的基本情況,並簡單搭建了一個 Elasticsearch 的多實例集羣。在後面的文章中,作者將不定期分享一些 Elasticsearch 的知識及實踐。可以保持關注哦!

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/eZWC5CsCXMZcVsyZVfl5Bg