Elasticsearch 是一種開源、可廣泛分發、易於擴展的企業級搜索引擎,可通過廣泛而精細的 API 進行訪問。 它可以支持支持您的數據發現應用程序的極快搜索,並可用於許多不同的用例,如“經典”全文搜索、分析存儲、自動完成、拼寫檢查、警報引擎,以及作為通用文檔存儲. 分析工作負載傾向於計算事物並彙總您的大量數據,甚至可能是大數據。 您可以將其用於模糊搜索,這是一種對拼寫錯誤較為寬容的搜索。 由於模糊搜索是 CPU 密集型的,因此在將它們發送到生產之前,使用實際數量的數據測試對搜索的更改和改進總是很重要的,因此應該小心添加,並且可能不是每個字段。 Elasticsearch 還有助於自動完成和即時搜索。 在用戶輸入的多種形式中進行搜索可以是簡單的建議,例如現有標籤,嘗試根據搜索歷史預測搜索,或者只是對每個節流的擊鍵進行全新的搜索。 Elasticsearch 中有很多不同的功能可以幫助構建這些功能,例如 match_phrase_prefix、前綴查詢、索引詞和一系列不同的建議器。
本文是關於在單個 CentOS 7 服務器上安裝多個 Elasticsearch 節點。
但是您可以使用類似的步驟在您的其他 Linux 發行版上執行。
先決條件
為了完成在單個服務器上安裝和配置多個 Elasticsearch 節點的任務,您只需要使用 root 用戶憑據訪問您的服務器,可能是 CentOS 6 或 CentOS 7,無論您喜歡在您的環境中使用什麼服務器。 讓我們連接到您的服務器並首先創建一個非 root 普通用戶。
#ssh root@server_ip
1) 添加新用戶
使用 root 用戶登錄後,使用以下命令創建一個新的通用用戶,以便在安裝過程中使用。
# adduser elasticsearch
Changing password for user elasticsearch.
New password:****
Retype new password: ****
passwd: all authentication tokens updated successfully.
將新用戶添加到“wheel”組以賦予它 sudo 特權。
# usermod -aG wheel elasticsearch
2) 系統更新
現在在您的 CentOS 7 服務器上使用以下命令使用更新和安全補丁更新您的系統。
# yum update -y
一旦您的系統準備好了先決條件,然後轉到下一步在您的系統上安裝 Java 版本 8。
3) 安裝 Java (JVM) 版本 8
Elasticsearch 是使用 Java 構建的,它至少需要 Java 8 才能運行。 僅支持 Oracle 的 Java 和 OpenJDK。 應該在所有 Elasticsearch 節點和客戶端上使用相同的 JVM 版本。 因此,建議必須安裝 Java 版本 1.8.0_121 或更高版本,否則如果使用任何其他版本的 Java,Elasticsearch 將拒絕啟動。
要安裝所需版本的 JAVA,您可以使用以下命令。
$sudo yum install java-1.8.0-openjdk.x86_64
安裝完成後,運行下面的命令檢查安裝的java的版本。
$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
可以通過設置“JAVA_HOME”環境變量來配置 Elasticsearch 將使用的 Java 版本。 完成先決條件後,轉到網絡會話以下載、安裝和配置節點。
如何下載 Elasticsearch
Elasticsearch 以多種包格式提供,但“zip”和“tar.gz”包適合安裝在任何系統上,這是開始使用 Elasticsearch 的最簡單選擇。 ‘rpm’ 包更適合安裝在 Red Hat、Centos、SLES、OpenSuSE 和其他基於 RPM 的系統上。 它可以從 Elasticsearch 網站或使用“wget”命令從我們的 RPM 存儲庫下載。
讓我們下載我們將在 CentOS 7 上安裝的兩個不同版本的 Elastisearch 軟件包。
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.tar.gz
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.1.tar.gz
現在我們有兩個不同版本的 Elasticsearch 包可供安裝。 解壓縮檔案並移動到解壓縮的文件夾以編譯和安裝包。
$ tar -zxf elasticsearch-5.0.1.tar.gz
$ tar -zxf elasticsearch-5.2.2.tar.gz
配置Elasticsearch的第一個節點
現在首先安裝最新版本的 Elasticsearch。 讓我們使用放置在“config”目錄中的命令行編輯器打開默認配置文件。
$ vim elasticsearch-5.2.2/config/elasticsearch.yml
按“i”切換到插入模式並在文件中插入以下配置參數。
cluster.name: elastic_cluster1
node.name: node-1
node.master: true
node.data: true
transport.host: localhost
transport.tcp.port: 9300
http.port: 9200
network.host: 0.0.0.0
這裡默認配置中沒有指定 http.port 和 transport.port,ES 嘗試在啟動時選擇下一個可用端口,從 9200 為 HTTP 和 9300 為其內部傳輸的基數開始。 讓我們保存和 close 使用 ‘:wq!’ 的配置文件現在配置您的輔助節點。
配置輔助節點
要配置您的輔助節點,請打開放置在存檔默認位置的相同配置文件,並使用您的編輯器在其中插入以下內容。
$ vim elasticsearch-5.0.1/config/elasticsearch.yml
cluster.name: elastic_cluster1
node.name: node-2
#node.master: true
node.data: true
transport.host: localhost
transport.tcp.port: 9302
http.port: 9202
network.host: 0.0.0.0
Save 和 close 文件並移至下一部分以啟動其服務。
如何啟動 Elasticsearch 服務
由於我們已將 Elasticsearch 的兩個節點配置為不同版本,現在我們需要通過執行其二進制腳本在 CentOS 7 服務器上啟動它們。
$ cd elasticsearch-5.2.2
$ bin/elasticsearch -d
這將在後台啟動 elasticsearch 進程。 現在將您的目錄更改為 elasticsearch 的輔助節點並運行相同的命令。
$ cd elasticsearch-5.0.1
$ bin/elasticsearch -d
就是這樣,現在您可以檢查監聽端口的狀態,以確保兩個節點都在配置中提到的特定端口上運行。
$ netstat -tlnp
$ ps -ef | grep elastic
您也可以使用以下命令來確認服務已成功啟動。
$ curl -X GET 'https://localhost:9200'
{
"name" : "node-1",
"cluster_name" : "elastic_cluster1",
"cluster_uuid" : "yrMHCKfJS2msgvQj-HWkag",
"version" : {
"number" : "5.2.2",
"build_hash" : "f9d9b74",
"build_date" : "2017-02-24T17:26:45.835Z",
"build_snapshot" : false,
"lucene_version" : "6.4.1"
},
"tagline" : "You Know, for Search"
}
同樣,對於在端口“9202”上運行的輔助節點,請使用以下命令。
$ curl -X GET 'https://localhost:9202'
{
"name" : "node-2",
"cluster_name" : "elastic_cluster1",
"cluster_uuid" : "I4Xk5Yr3RTuyp0Q0IsmxNQ",
"version" : {
"number" : "5.0.1",
"build_hash" : "080bb47",
"build_date" : "2016-11-11T22:08:49.812Z",
"build_snapshot" : false,
"lucene_version" : "6.2.1"
},
"tagline" : "You Know, for Search"
}
結論
而已。 在本文中,我們學習瞭如何在單個 CentOS 7 服務器上安裝多個 elasticsearch 節點。 現在,您可以在許多不同的 Logstash 配置、一些分析用途、支持面向用戶的大型索引搜索以及許多內部應用程序中使用 Elasticsearch。 由於垃圾收集運行時間的原因,管理具有大堆的 JVM 是一件可怕的事情。 最好有更小的堆,因為它更容易捕獲和分析堆轉儲。 為了獲得最佳的 Lucene 性能,為索引文件的操作系統文件緩存提供足夠的 RAM 也很重要。 如果我們使用小堆運行單個節點,那麼我們將浪費 CPU 和 RAM。