如何在單台服務器上安裝多個 Elasticssearch 節點

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。